From 5960672f9abffd8483515e3cc5b8e7fd3eeadc75 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Wed, 30 Sep 2009 07:40:56 +0800 Subject: [PATCH] GC contrib/dev/acpica-unix-20061109 --- sys/contrib/dev/acpica-unix-20061109/README | 79 - .../dev/acpica-unix-20061109/README.DELETED | 4 - .../dev/acpica-unix-20061109/README.DRAGONFLY | 41 - sys/contrib/dev/acpica-unix-20061109/changes.txt | 7979 -------------------- .../dev/acpica-unix-20061109/common/adfile.c | 398 - .../dev/acpica-unix-20061109/common/adisasm.c | 1132 --- .../dev/acpica-unix-20061109/common/adwalk.c | 1001 --- .../dev/acpica-unix-20061109/common/dmrestag.c | 990 --- .../dev/acpica-unix-20061109/common/dmtable.c | 734 -- .../dev/acpica-unix-20061109/common/dmtbdump.c | 798 -- .../dev/acpica-unix-20061109/common/dmtbinfo.c | 967 --- .../dev/acpica-unix-20061109/common/getopt.c | 246 - .../dev/acpica-unix-20061109/compiler/Makefile | 123 - .../dev/acpica-unix-20061109/compiler/aslanalyze.c | 2211 ------ .../dev/acpica-unix-20061109/compiler/aslcodegen.c | 661 -- .../dev/acpica-unix-20061109/compiler/aslcompile.c | 929 --- .../acpica-unix-20061109/compiler/aslcompiler.h | 913 --- .../acpica-unix-20061109/compiler/aslcompiler.l | 1182 --- .../acpica-unix-20061109/compiler/aslcompiler.y | 3189 -------- .../dev/acpica-unix-20061109/compiler/asldefine.h | 211 - .../dev/acpica-unix-20061109/compiler/aslerror.c | 647 -- .../dev/acpica-unix-20061109/compiler/aslfiles.c | 873 --- .../dev/acpica-unix-20061109/compiler/aslfold.c | 564 -- .../dev/acpica-unix-20061109/compiler/aslglobal.h | 278 - .../dev/acpica-unix-20061109/compiler/asllength.c | 531 -- .../dev/acpica-unix-20061109/compiler/asllisting.c | 1494 ---- .../dev/acpica-unix-20061109/compiler/aslload.c | 826 -- .../dev/acpica-unix-20061109/compiler/asllookup.c | 1370 ---- .../dev/acpica-unix-20061109/compiler/aslmain.c | 872 --- .../dev/acpica-unix-20061109/compiler/aslmap.c | 750 -- .../dev/acpica-unix-20061109/compiler/aslopcodes.c | 812 -- .../acpica-unix-20061109/compiler/asloperands.c | 1230 --- .../dev/acpica-unix-20061109/compiler/aslopt.c | 869 --- .../acpica-unix-20061109/compiler/aslresource.c | 760 -- .../acpica-unix-20061109/compiler/aslrestype1.c | 1186 --- .../acpica-unix-20061109/compiler/aslrestype2.c | 2842 ------- .../dev/acpica-unix-20061109/compiler/aslstubs.c | 280 - .../acpica-unix-20061109/compiler/asltransform.c | 806 -- .../dev/acpica-unix-20061109/compiler/asltree.c | 1194 --- .../dev/acpica-unix-20061109/compiler/asltypes.h | 562 -- .../dev/acpica-unix-20061109/compiler/aslutils.c | 1055 --- .../dev/acpica-unix-20061109/compiler/readme.txt | 85 - .../dev/acpica-unix-20061109/debugger/dbcmds.c | 1841 ----- .../dev/acpica-unix-20061109/debugger/dbdisply.c | 965 --- .../dev/acpica-unix-20061109/debugger/dbexec.c | 648 -- .../dev/acpica-unix-20061109/debugger/dbfileio.c | 651 -- .../dev/acpica-unix-20061109/debugger/dbhistry.c | 292 - .../dev/acpica-unix-20061109/debugger/dbinput.c | 1069 --- .../dev/acpica-unix-20061109/debugger/dbstats.c | 614 -- .../dev/acpica-unix-20061109/debugger/dbutils.c | 553 -- .../dev/acpica-unix-20061109/debugger/dbxface.c | 606 -- .../acpica-unix-20061109/disassembler/dmbuffer.c | 555 -- .../acpica-unix-20061109/disassembler/dmnames.c | 521 -- .../acpica-unix-20061109/disassembler/dmobject.c | 649 -- .../acpica-unix-20061109/disassembler/dmopcode.c | 629 -- .../acpica-unix-20061109/disassembler/dmresrc.c | 510 -- .../acpica-unix-20061109/disassembler/dmresrcl.c | 1125 --- .../acpica-unix-20061109/disassembler/dmresrcs.c | 387 - .../acpica-unix-20061109/disassembler/dmutils.c | 493 -- .../dev/acpica-unix-20061109/disassembler/dmwalk.c | 1043 --- .../dev/acpica-unix-20061109/events/evevent.c | 427 -- .../dev/acpica-unix-20061109/events/evgpe.c | 850 --- .../dev/acpica-unix-20061109/events/evgpeblk.c | 1375 ---- .../dev/acpica-unix-20061109/events/evmisc.c | 707 -- .../dev/acpica-unix-20061109/events/evregion.c | 1232 --- .../dev/acpica-unix-20061109/events/evrgnini.c | 821 -- .../dev/acpica-unix-20061109/events/evsci.c | 281 - .../dev/acpica-unix-20061109/events/evxface.c | 956 --- .../dev/acpica-unix-20061109/events/evxfevnt.c | 924 --- .../dev/acpica-unix-20061109/events/evxfregn.c | 345 - .../acpica-unix-20061109/generate/lint/lint.bat | 10 - .../acpica-unix-20061109/generate/lint/lset.bat | 1 - .../acpica-unix-20061109/generate/lint/options.lnt | 73 - .../acpica-unix-20061109/generate/lint/readme.txt | 14 - .../acpica-unix-20061109/generate/lint/std16.lnt | 16 - .../acpica-unix-20061109/generate/lint/std32.lnt | 14 - .../acpica-unix-20061109/generate/lint/std64.lnt | 21 - .../dev/acpica-unix-20061109/hardware/hwacpi.c | 277 - .../dev/acpica-unix-20061109/hardware/hwgpe.c | 545 -- .../dev/acpica-unix-20061109/hardware/hwregs.c | 1008 --- .../dev/acpica-unix-20061109/hardware/hwsleep.c | 750 -- .../dev/acpica-unix-20061109/hardware/hwtimer.c | 288 - .../dev/acpica-unix-20061109/include/acapps.h | 243 - .../dev/acpica-unix-20061109/include/acconfig.h | 285 - .../dev/acpica-unix-20061109/include/acdebug.h | 426 -- .../dev/acpica-unix-20061109/include/acdisasm.h | 680 -- .../dev/acpica-unix-20061109/include/acdispat.h | 529 -- .../dev/acpica-unix-20061109/include/acevents.h | 374 - .../dev/acpica-unix-20061109/include/acexcep.h | 390 - .../dev/acpica-unix-20061109/include/acglobal.h | 460 -- .../dev/acpica-unix-20061109/include/achware.h | 247 - .../dev/acpica-unix-20061109/include/acinterp.h | 783 -- .../dev/acpica-unix-20061109/include/aclocal.h | 1181 --- .../dev/acpica-unix-20061109/include/acmacros.h | 830 -- .../dev/acpica-unix-20061109/include/acnames.h | 158 - .../dev/acpica-unix-20061109/include/acnamesp.h | 493 -- .../dev/acpica-unix-20061109/include/acobject.h | 618 -- .../dev/acpica-unix-20061109/include/acopcode.h | 398 - .../dev/acpica-unix-20061109/include/acoutput.h | 263 - .../dev/acpica-unix-20061109/include/acparser.h | 399 - .../dev/acpica-unix-20061109/include/acpi.h | 143 - .../dev/acpica-unix-20061109/include/acpiosxf.h | 504 -- .../dev/acpica-unix-20061109/include/acpixf.h | 550 -- .../dev/acpica-unix-20061109/include/acresrc.h | 465 -- .../dev/acpica-unix-20061109/include/acstruct.h | 330 - .../dev/acpica-unix-20061109/include/actables.h | 243 - .../dev/acpica-unix-20061109/include/actbl.h | 395 - .../dev/acpica-unix-20061109/include/actbl1.h | 917 --- .../dev/acpica-unix-20061109/include/actbl2.h | 123 - .../dev/acpica-unix-20061109/include/actypes.h | 1511 ---- .../dev/acpica-unix-20061109/include/acutils.h | 942 --- .../dev/acpica-unix-20061109/include/amlcode.h | 595 -- .../dev/acpica-unix-20061109/include/amlresrc.h | 486 -- .../include/platform/acdos16.h | 161 - .../acpica-unix-20061109/include/platform/acefi.h | 148 - .../acpica-unix-20061109/include/platform/acenv.h | 444 -- .../include/platform/acfreebsd.h | 201 - .../acpica-unix-20061109/include/platform/acgcc.h | 139 - .../include/platform/acintel.h | 169 - .../include/platform/aclinux.h | 169 - .../acpica-unix-20061109/include/platform/acmsvc.h | 184 - .../include/platform/acnetbsd.h | 191 - .../acpica-unix-20061109/include/platform/acwin.h | 229 - .../include/platform/acwin64.h | 162 - .../interpreter/dispatcher/dsfield.c | 748 -- .../interpreter/dispatcher/dsinit.c | 299 - .../interpreter/dispatcher/dsmethod.c | 761 -- .../interpreter/dispatcher/dsmthdat.c | 844 --- .../interpreter/dispatcher/dsobject.c | 770 -- .../interpreter/dispatcher/dsopcode.c | 1339 ---- .../interpreter/dispatcher/dsutils.c | 868 --- .../interpreter/dispatcher/dswexec.c | 872 --- .../interpreter/dispatcher/dswload.c | 1294 ---- .../interpreter/dispatcher/dswscope.c | 311 - .../interpreter/dispatcher/dswstate.c | 1235 --- .../interpreter/executer/exconfig.c | 523 -- .../interpreter/executer/exconvrt.c | 817 -- .../interpreter/executer/excreate.c | 737 -- .../interpreter/executer/exdump.c | 1225 --- .../interpreter/executer/exfield.c | 477 -- .../interpreter/executer/exfldio.c | 1056 --- .../interpreter/executer/exmisc.c | 873 --- .../interpreter/executer/exmutex.c | 492 -- .../interpreter/executer/exnames.c | 560 -- .../interpreter/executer/exoparg1.c | 1179 --- .../interpreter/executer/exoparg2.c | 734 -- .../interpreter/executer/exoparg3.c | 376 - .../interpreter/executer/exoparg6.c | 436 -- .../interpreter/executer/exprep.c | 675 -- .../interpreter/executer/exregion.c | 612 -- .../interpreter/executer/exresnte.c | 377 - .../interpreter/executer/exresolv.c | 658 -- .../interpreter/executer/exresop.c | 823 -- .../interpreter/executer/exstore.c | 757 -- .../interpreter/executer/exstoren.c | 385 - .../interpreter/executer/exstorob.c | 302 - .../interpreter/executer/exsystem.c | 419 - .../interpreter/executer/exutils.c | 557 -- .../interpreter/parser/psargs.c | 869 --- .../interpreter/parser/psloop.c | 1178 --- .../interpreter/parser/psopcode.c | 561 -- .../interpreter/parser/psparse.c | 777 -- .../interpreter/parser/psscope.c | 374 - .../interpreter/parser/pstree.c | 425 -- .../interpreter/parser/psutils.c | 362 - .../interpreter/parser/pswalk.c | 193 - .../interpreter/parser/psxface.c | 473 -- .../dev/acpica-unix-20061109/namespace/nsaccess.c | 750 -- .../dev/acpica-unix-20061109/namespace/nsalloc.c | 617 -- .../dev/acpica-unix-20061109/namespace/nsdump.c | 826 -- .../dev/acpica-unix-20061109/namespace/nsdumpdv.c | 235 - .../dev/acpica-unix-20061109/namespace/nseval.c | 316 - .../dev/acpica-unix-20061109/namespace/nsinit.c | 701 -- .../dev/acpica-unix-20061109/namespace/nsload.c | 429 -- .../dev/acpica-unix-20061109/namespace/nsnames.c | 347 - .../dev/acpica-unix-20061109/namespace/nsobject.c | 567 -- .../dev/acpica-unix-20061109/namespace/nsparse.c | 282 - .../dev/acpica-unix-20061109/namespace/nssearch.c | 514 -- .../dev/acpica-unix-20061109/namespace/nsutils.c | 1220 --- .../dev/acpica-unix-20061109/namespace/nswalk.c | 391 - .../dev/acpica-unix-20061109/namespace/nsxfeval.c | 891 --- .../dev/acpica-unix-20061109/namespace/nsxfname.c | 474 -- .../dev/acpica-unix-20061109/namespace/nsxfobj.c | 356 - .../os_specific/service_layers/osdosxf.c | 1368 ---- .../os_specific/service_layers/osunixdir.c | 303 - .../os_specific/service_layers/osunixxf.c | 1155 --- .../os_specific/service_layers/oswindir.c | 318 - .../os_specific/service_layers/oswinxf.c | 1579 ---- sys/contrib/dev/acpica-unix-20061109/osunixxf.c | 1155 --- .../dev/acpica-unix-20061109/resources/rsaddr.c | 479 -- .../dev/acpica-unix-20061109/resources/rscalc.c | 715 -- .../dev/acpica-unix-20061109/resources/rscreate.c | 526 -- .../dev/acpica-unix-20061109/resources/rsdump.c | 870 --- .../dev/acpica-unix-20061109/resources/rsinfo.c | 290 - .../dev/acpica-unix-20061109/resources/rsio.c | 341 - .../dev/acpica-unix-20061109/resources/rsirq.c | 313 - .../dev/acpica-unix-20061109/resources/rslist.c | 286 - .../dev/acpica-unix-20061109/resources/rsmemory.c | 323 - .../dev/acpica-unix-20061109/resources/rsmisc.c | 671 -- .../dev/acpica-unix-20061109/resources/rsutils.c | 875 --- .../dev/acpica-unix-20061109/resources/rsxface.c | 713 -- .../dev/acpica-unix-20061109/tables/tbfadt.c | 520 -- .../dev/acpica-unix-20061109/tables/tbfind.c | 205 - .../dev/acpica-unix-20061109/tables/tbinstal.c | 684 -- .../dev/acpica-unix-20061109/tables/tbutils.c | 594 -- .../dev/acpica-unix-20061109/tables/tbxface.c | 662 -- .../dev/acpica-unix-20061109/tables/tbxfroot.c | 374 - .../acpica-unix-20061109/tools/acpiexec/Makefile | 142 - .../acpica-unix-20061109/tools/acpiexec/aecommon.h | 243 - .../acpica-unix-20061109/tools/acpiexec/aeexec.c | 1122 --- .../acpica-unix-20061109/tools/acpiexec/aemain.c | 474 -- .../tools/acpiexec/osunixdir.c | 303 - .../acpica-unix-20061109/tools/acpisrc/Makefile | 17 - .../acpica-unix-20061109/tools/acpisrc/acpisrc.h | 478 -- .../acpica-unix-20061109/tools/acpisrc/ascase.c | 640 -- .../acpica-unix-20061109/tools/acpisrc/asconvrt.c | 1478 ---- .../acpica-unix-20061109/tools/acpisrc/asfile.c | 823 -- .../acpica-unix-20061109/tools/acpisrc/asmain.c | 433 -- .../acpica-unix-20061109/tools/acpisrc/asremove.c | 681 -- .../acpica-unix-20061109/tools/acpisrc/astable.c | 787 -- .../acpica-unix-20061109/tools/acpisrc/asutils.c | 307 - .../acpica-unix-20061109/tools/acpisrc/osunixdir.c | 303 - .../acpica-unix-20061109/tools/acpixtract/Makefile | 16 - .../tools/acpixtract/acpixtract.c | 782 -- .../dev/acpica-unix-20061109/utilities/utalloc.c | 472 -- .../dev/acpica-unix-20061109/utilities/utcache.c | 418 - .../dev/acpica-unix-20061109/utilities/utclib.c | 961 --- .../dev/acpica-unix-20061109/utilities/utcopy.c | 1091 --- .../dev/acpica-unix-20061109/utilities/utdebug.c | 807 -- .../dev/acpica-unix-20061109/utilities/utdelete.c | 775 -- .../dev/acpica-unix-20061109/utilities/uteval.c | 880 --- .../dev/acpica-unix-20061109/utilities/utglobal.c | 838 -- .../dev/acpica-unix-20061109/utilities/utinit.c | 241 - .../dev/acpica-unix-20061109/utilities/utmath.c | 431 -- .../dev/acpica-unix-20061109/utilities/utmisc.c | 1309 ---- .../dev/acpica-unix-20061109/utilities/utmutex.c | 464 -- .../dev/acpica-unix-20061109/utilities/utobject.c | 764 -- .../dev/acpica-unix-20061109/utilities/utresrc.c | 772 -- .../dev/acpica-unix-20061109/utilities/utstate.c | 470 -- .../dev/acpica-unix-20061109/utilities/uttrack.c | 716 -- .../dev/acpica-unix-20061109/utilities/utxface.c | 638 -- 241 files changed, 160832 deletions(-) delete mode 100644 sys/contrib/dev/acpica-unix-20061109/README delete mode 100644 sys/contrib/dev/acpica-unix-20061109/README.DELETED delete mode 100644 sys/contrib/dev/acpica-unix-20061109/README.DRAGONFLY delete mode 100644 sys/contrib/dev/acpica-unix-20061109/changes.txt delete mode 100644 sys/contrib/dev/acpica-unix-20061109/common/adfile.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/common/adisasm.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/common/adwalk.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/common/dmrestag.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/common/dmtable.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/common/dmtbdump.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/common/dmtbinfo.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/common/getopt.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/Makefile delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/aslanalyze.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/aslcodegen.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/aslcompile.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/aslcompiler.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/aslcompiler.l delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/aslcompiler.y delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/asldefine.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/aslerror.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/aslfiles.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/aslfold.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/aslglobal.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/asllength.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/asllisting.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/aslload.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/asllookup.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/aslmain.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/aslmap.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/aslopcodes.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/asloperands.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/aslopt.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/aslresource.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/aslrestype1.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/aslrestype2.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/aslstubs.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/asltransform.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/asltree.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/asltypes.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/aslutils.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/compiler/readme.txt delete mode 100644 sys/contrib/dev/acpica-unix-20061109/debugger/dbcmds.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/debugger/dbdisply.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/debugger/dbexec.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/debugger/dbfileio.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/debugger/dbhistry.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/debugger/dbinput.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/debugger/dbstats.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/debugger/dbutils.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/debugger/dbxface.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/disassembler/dmbuffer.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/disassembler/dmnames.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/disassembler/dmobject.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/disassembler/dmopcode.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/disassembler/dmresrc.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/disassembler/dmresrcl.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/disassembler/dmresrcs.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/disassembler/dmutils.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/disassembler/dmwalk.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/events/evevent.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/events/evgpe.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/events/evgpeblk.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/events/evmisc.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/events/evregion.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/events/evrgnini.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/events/evsci.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/events/evxface.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/events/evxfevnt.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/events/evxfregn.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/generate/lint/lint.bat delete mode 100644 sys/contrib/dev/acpica-unix-20061109/generate/lint/lset.bat delete mode 100644 sys/contrib/dev/acpica-unix-20061109/generate/lint/options.lnt delete mode 100644 sys/contrib/dev/acpica-unix-20061109/generate/lint/readme.txt delete mode 100644 sys/contrib/dev/acpica-unix-20061109/generate/lint/std16.lnt delete mode 100644 sys/contrib/dev/acpica-unix-20061109/generate/lint/std32.lnt delete mode 100644 sys/contrib/dev/acpica-unix-20061109/generate/lint/std64.lnt delete mode 100644 sys/contrib/dev/acpica-unix-20061109/hardware/hwacpi.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/hardware/hwgpe.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/hardware/hwregs.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/hardware/hwsleep.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/hardware/hwtimer.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/acapps.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/acconfig.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/acdebug.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/acdisasm.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/acdispat.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/acevents.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/acexcep.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/acglobal.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/achware.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/acinterp.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/aclocal.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/acmacros.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/acnames.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/acnamesp.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/acobject.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/acopcode.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/acoutput.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/acparser.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/acpi.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/acpiosxf.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/acpixf.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/acresrc.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/acstruct.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/actables.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/actbl.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/actbl1.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/actbl2.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/actypes.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/acutils.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/amlcode.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/amlresrc.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/platform/acdos16.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/platform/acefi.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/platform/acenv.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/platform/acfreebsd.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/platform/acgcc.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/platform/acintel.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/platform/aclinux.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/platform/acmsvc.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/platform/acnetbsd.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/platform/acwin.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/include/platform/acwin64.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsfield.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsinit.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsmethod.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsmthdat.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsobject.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsopcode.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsutils.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dswexec.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dswload.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dswscope.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dswstate.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exconfig.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exconvrt.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/executer/excreate.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exdump.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exfield.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exfldio.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exmisc.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exmutex.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exnames.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exoparg1.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exoparg2.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exoparg3.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exoparg6.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exprep.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exregion.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exresnte.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exresolv.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exresop.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exstore.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exstoren.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exstorob.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exsystem.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exutils.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psargs.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psloop.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psopcode.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psparse.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psscope.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/parser/pstree.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psutils.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/parser/pswalk.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psxface.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/namespace/nsaccess.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/namespace/nsalloc.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/namespace/nsdump.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/namespace/nsdumpdv.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/namespace/nseval.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/namespace/nsinit.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/namespace/nsload.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/namespace/nsnames.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/namespace/nsobject.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/namespace/nsparse.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/namespace/nssearch.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/namespace/nsutils.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/namespace/nswalk.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/namespace/nsxfeval.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/namespace/nsxfname.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/namespace/nsxfobj.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/os_specific/service_layers/osdosxf.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/os_specific/service_layers/osunixdir.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/os_specific/service_layers/osunixxf.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/os_specific/service_layers/oswindir.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/os_specific/service_layers/oswinxf.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/osunixxf.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/resources/rsaddr.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/resources/rscalc.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/resources/rscreate.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/resources/rsdump.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/resources/rsinfo.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/resources/rsio.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/resources/rsirq.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/resources/rslist.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/resources/rsmemory.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/resources/rsmisc.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/resources/rsutils.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/resources/rsxface.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/tables/tbfadt.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/tables/tbfind.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/tables/tbinstal.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/tables/tbutils.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/tables/tbxface.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/tables/tbxfroot.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/tools/acpiexec/Makefile delete mode 100644 sys/contrib/dev/acpica-unix-20061109/tools/acpiexec/aecommon.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/tools/acpiexec/aeexec.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/tools/acpiexec/aemain.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/tools/acpiexec/osunixdir.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/Makefile delete mode 100644 sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/acpisrc.h delete mode 100644 sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/ascase.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/asconvrt.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/asfile.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/asmain.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/asremove.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/astable.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/asutils.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/osunixdir.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/tools/acpixtract/Makefile delete mode 100644 sys/contrib/dev/acpica-unix-20061109/tools/acpixtract/acpixtract.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/utilities/utalloc.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/utilities/utcache.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/utilities/utclib.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/utilities/utcopy.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/utilities/utdebug.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/utilities/utdelete.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/utilities/uteval.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/utilities/utglobal.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/utilities/utinit.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/utilities/utmath.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/utilities/utmisc.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/utilities/utmutex.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/utilities/utobject.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/utilities/utresrc.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/utilities/utstate.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/utilities/uttrack.c delete mode 100644 sys/contrib/dev/acpica-unix-20061109/utilities/utxface.c diff --git a/sys/contrib/dev/acpica-unix-20061109/README b/sys/contrib/dev/acpica-unix-20061109/README deleted file mode 100644 index 8b6f3ea904..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/README +++ /dev/null @@ -1,79 +0,0 @@ -acpica-unix ------------ - -This source release includes: - - -1) a cross-OS AML interpreter - -This is intended to allow commercial and open source operating systems -to be enabled for ACPI. OS specific code is still needed, but the -AML interpreter should greatly improve the development speed of ACPI -support. - -The AML interpreter source should be integrated into the kernel's -build process. We recommend establishing an automated method for -this, so later versions can also be incorporated easily. Please see -the documentation on the website for API and other implementation -information. - - -2) iasl, an ASL compiler/decompiler - -iasl compiles ASL (ACPI Source Language) into AML (ACPI Machine -Language). This AML is suitable for inclusion as a DSDT in system -firmware. It also can disassemble AML, for debugging purposes. - -To compile: - -cd compiler -make - -It has been compiled on Linux, but should easily port to other Unix -environments. - -Run 'iasl -h' for more information, or download the binary version for -documentation in PDF format. - - -3) acpisrc, a source code conversion tool - -acpisrc converts the standard form of the acpica source release (included -here) into a version that meets Linux coding guidelines. This consists -mainly of performing a series of string replacements and transformations -to the code. - -To compile: - -cd tools/acpisrc -make - -It has been compiled on Linux, but should easily port to other Unix -environments. - - -4) acpibin, an AML file tool - -acpibin compares AML files, dumps AML binary files to text files, -extracts binary AML from text files, and other AML file -manipulation. - -To compile: - -cd tools/acpibin -make - - -5) acpiexec, a user-space AML interpreter - -acpiexec allows the loading of ACPI tables and execution of control -methods from user space. Useful for debugging AML code and testing -the AML interpreter. - -To compile: - -cd tools/acpiexec -make - - -Thanks -- The ACPI CA Team diff --git a/sys/contrib/dev/acpica-unix-20061109/README.DELETED b/sys/contrib/dev/acpica-unix-20061109/README.DELETED deleted file mode 100644 index 3f9f36d4fe..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/README.DELETED +++ /dev/null @@ -1,4 +0,0 @@ -common/16bit.h -common/a16find.c -common/a16utils.asm -common/a16utils.obj diff --git a/sys/contrib/dev/acpica-unix-20061109/README.DRAGONFLY b/sys/contrib/dev/acpica-unix-20061109/README.DRAGONFLY deleted file mode 100644 index 034b1f5571..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/README.DRAGONFLY +++ /dev/null @@ -1,41 +0,0 @@ - - ACPI 20061109 AS USED BY DRAGONFLY - - This directory contains a selected set of files from the Intel - acpica-unix-20061109 distribution. No files have been moved - or modified from their extracted position. - - DO NOT CREATE OR EDIT ANY FILES IN THIS DIRECTORY HIERARCHY! THIS - HIERARCHY REPRESENTS AN EXACT COPY, MINUS UNNEEDED FILES, OF THE INTEL - ACPICA-UNIX-20061109 DISTRIBUTION. All modifications are made in the - DragonFly build wrapper, primarily in /usr/src/sys/dev/acpica5 and - /usr/src/usr.sbin/acpi, by creating overrides or performing surgery - on the distribution. The only additional file added to this directory - is README.DRAGONFLY. The base source was fetched from: - - http://developer.intel.com/technology/iapc/acpi/downloads/acpica-unix-20061109.tar.gz - MD5 (acpica-unix-20061109.tar.gz) = 0ca508dd9bec10fb3b53c72aea6bb6a1 - - UPGRADE PROCEDURE: - - * download a new acpica-unix distribution and extract the archive - under /sys/contrib/dev. copy README.* files over from the current - version, and adjust file names and MD5 sum in README.DRAGONFLY - to match with the new version. - - * adjust build wrappers to use new distribution. /sys/conf/acpi.mk - controls the name of the directory containing the acpica-unix - distribution. build a system and make sure the new ACPICA5 module - and ACPI tools work properly. if you had to remove or re-add - files in the distribution directory, change README.DELETED - accordingly. - - * cvs import the new distribution directory. - - * commit the changes in the build wrapper directories. - - * cvs remove the old distribution directory after a while. - - DO NOT MAKE ANY EDITS TO THE BINUTILS DISTRIBUTION IN THIS CONTRIB - DIRECTORY, OTHER THEN TO README.DRAGONFLY! - diff --git a/sys/contrib/dev/acpica-unix-20061109/changes.txt b/sys/contrib/dev/acpica-unix-20061109/changes.txt deleted file mode 100644 index 56987d30fc..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/changes.txt +++ /dev/null @@ -1,7979 +0,0 @@ ----------------------------------------- -09 November 2006. Summary of changes for version 20061109: - -1) ACPI CA Core Subsystem: - -Optimized the Load ASL operator in the case where the source -operand is an operation region. Simply map the operation region -memory, instead of performing a bytewise read. (Region must be of -type SystemMemory, see below.) - -Fixed the Load ASL operator for the case where the source operand -is a region field. A buffer object is also allowed as the source -operand. BZ 480 - -Fixed a problem where the Load ASL operator allowed the source -operand to be an operation region of any type. It is now -restricted to regions of type SystemMemory, as per the ACPI -specification. BZ 481 - -Additional cleanup and optimizations for the new Table Manager -code. - -AcpiEnable will now fail if all of the required ACPI tables are -not loaded (FADT, FACS, DSDT). BZ 477 - -Added #pragma pack(8/4) to acobject.h to ensure that the -structures in this header are always compiled as aligned. The -ACPI_OPERAND_OBJECT has been manually optimized to be aligned and -will not work if it is byte-packed. - -Example Code and Data Size: These are the sizes for the OS- -independent acpica.lib produced by the Microsoft Visual C++ 6.0 32- -bit compiler. The debug version of the code includes the debug -output trace mechanism and has a much larger code and data size. - - Previous Release: - Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total - Debug Version: 155.4K Code, 63.1K Data, 218.5K Total - Current Release: - Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total - Debug Version: 155.2K Code, 63.1K Data, 218.3K Total - - -2) iASL Compiler/Disassembler and Tools: - -Fixed a problem where the presence of the _OSI predefined control -method within complex expressions could cause an internal compiler -error. - -AcpiExec: Implemented full region support for multiple address -spaces. SpaceId is now part of the REGION object. BZ 429 - ----------------------------------------- -11 October 2006. Summary of changes for version 20061011: - -1) ACPI CA Core Subsystem: - -Completed an AML interpreter performance enhancement for control -method execution. Previously a 2-pass parse/execution, control -methods are now completely parsed and executed in a single pass. -This improves overall interpreter performance by ~25%, reduces -code size, and reduces CPU stack use. (Valery Podrezov + -interpreter changes in version 20051202 that eliminated namespace -loading during the pass one parse.) - -Implemented _CID support for PCI Root Bridge detection. If the -_HID does not match the predefined PCI Root Bridge IDs, the _CID -list (if present) is now obtained and also checked for an ID -match. - -Implemented additional support for the PCI _ADR execution: -upsearch until a device scope is found before executing _ADR. This -allows PCI_Config operation regions to be declared locally within -control methods underneath PCI device objects. - -Fixed a problem with a possible race condition between threads -executing AcpiWalkNamespace and the AML interpreter. This -condition was removed by modifying AcpiWalkNamespace to (by -default) ignore all temporary namespace entries created during any -concurrent control method execution. An additional namespace race -condition is known to exist between AcpiWalkNamespace and the -Load/Unload ASL operators and is still under investigation. - -Restructured the AML ParseLoop function, breaking it into several -subfunctions in order to reduce CPU stack use and improve -maintainability. (Mikhail Kouzmich) - -AcpiGetHandle: Fix for parameter validation to detect invalid -combinations of prefix handle and pathname. BZ 478 - -Example Code and Data Size: These are the sizes for the OS- -independent acpica.lib produced by the Microsoft Visual C++ 6.0 32- -bit compiler. The debug version of the code includes the debug -output trace mechanism and has a much larger code and data size. - - Previous Release: - Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total - Debug Version: 154.6K Code, 63.0K Data, 217.6K Total - Current Release: - Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total - Debug Version: 155.4K Code, 63.1K Data, 218.5K Total - -2) iASL Compiler/Disassembler and Tools: - -Ported the -g option (get local ACPI tables) to the new ACPICA -Table Manager to restore original behavior. - ----------------------------------------- -27 September 2006. Summary of changes for version 20060927: - -1) ACPI CA Core Subsystem: - -Removed the "Flags" parameter from AcpiGetRegister and -AcpiSetRegister. These functions now use a spinlock for mutual -exclusion and the interrupt level indication flag is not needed. - -Fixed a problem with the Global Lock where the lock could appear -to be obtained before it is actually obtained. The global lock -semaphore was inadvertently created with one unit instead of zero -units. (BZ 464) Fiodor Suietov. - -Fixed a possible memory leak and fault in -AcpiExResolveObjectToValue during a read from a buffer or region -field. (BZ 458) Fiodor Suietov. - -Example Code and Data Size: These are the sizes for the OS- -independent acpica.lib produced by the Microsoft Visual C++ 6.0 32- -bit compiler. The debug version of the code includes the debug -output trace mechanism and has a much larger code and data size. - - Previous Release: - Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total - Debug Version: 154.7K Code, 63.0K Data, 217.7K Total - Current Release: - Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total - Debug Version: 154.6K Code, 63.0K Data, 217.6K Total - - -2) iASL Compiler/Disassembler and Tools: - -Fixed a compilation problem with the pre-defined Resource -Descriptor field names where an "object does not exist" error -could be incorrectly generated if the parent ResourceTemplate -pathname places the template within a different namespace scope -than the current scope. (BZ 7212) - -Fixed a problem where the compiler could hang after syntax errors -detected in an ElseIf construct. (BZ 453) - -Fixed a problem with the AmlFilename parameter to the -DefinitionBlock() operator. An incorrect output filename was -produced when this parameter was a null string (""). Now, the -original input filename is used as the AML output filename, with -an ".aml" extension. - -Implemented a generic batch command mode for the AcpiExec utility -(execute any AML debugger command) (Valery Podrezov). - ----------------------------------------- -12 September 2006. Summary of changes for version 20060912: - -1) ACPI CA Core Subsystem: - -Enhanced the implementation of the "serialized mode" of the -interpreter (enabled via the AcpiGbl_AllMethodsSerialized flag.) -When this mode is specified, instead of creating a serialization -semaphore per control method, the interpreter lock is simply no -longer released before a blocking operation during control method -execution. This effectively makes the AML Interpreter single- -threaded. The overhead of a semaphore per-method is eliminated. - -Fixed a regression where an error was no longer emitted if a -control method attempts to create 2 objects of the same name. This -once again returns AE_ALREADY_EXISTS. When this exception occurs, -it invokes the mechanism that will dynamically serialize the -control method to possible prevent future errors. (BZ 440) - -Integrated a fix for a problem with PCI Express HID detection in -the PCI Config Space setup procedure. (BZ 7145) - -Moved all FADT-related functions to a new file, tbfadt.c. -Eliminated the AcpiHwInitialize function - the FADT registers are -now validated when the table is loaded. - -Added two new warnings during FADT verification - 1) if the FADT -is larger than the largest known FADT version, and 2) if there is -a mismatch between a 32-bit block address and the 64-bit X -counterpart (when both are non-zero.) - -Example Code and Data Size: These are the sizes for the OS- -independent acpica.lib produced by the Microsoft Visual C++ 6.0 32- -bit compiler. The debug version of the code includes the debug -output trace mechanism and has a much larger code and data size. - - Previous Release: - Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total - Debug Version: 154.9K Code, 62.6K Data, 217.5K Total - Current Release: - Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total - Debug Version: 154.7K Code, 63.0K Data, 217.7K Total - - -2) iASL Compiler/Disassembler and Tools: - -Fixed a problem with the implementation of the Switch() operator -where the temporary variable was declared too close to the actual -Switch, instead of at method level. This could cause a problem if -the Switch() operator is within a while loop, causing an error on -the second iteration. (BZ 460) - -Disassembler - fix for error emitted for unknown type for target -of scope operator. Now, ignore it and continue. - -Disassembly of an FADT now verifies the input FADT and reports any -errors found. Fix for proper disassembly of full-sized (ACPI 2.0) -FADTs. - -Disassembly of raw data buffers with byte initialization data now -prefixes each output line with the current buffer offset. - -Disassembly of ASF! table now includes all variable-length data -fields at the end of some of the subtables. - -The disassembler now emits a comment if a buffer appears to be a -ResourceTemplate, but cannot be disassembled as such because the -EndTag does not appear at the very end of the buffer. - -AcpiExec - Added the "-t" command line option to enable the -serialized mode of the AML interpreter. - ----------------------------------------- -31 August 2006. Summary of changes for version 20060831: - -1) ACPI CA Core Subsystem: - -Miscellaneous fixes for the Table Manager: -- Correctly initialize internal common FADT for all 64-bit "X" -fields -- Fixed a couple table mapping issues during table load -- Fixed a couple alignment issues for IA64 -- Initialize input array to zero in AcpiInitializeTables -- Additional parameter validation for AcpiGetTable, -AcpiGetTableHeader, AcpiGetTableByIndex - -Change for GPE support: when a "wake" GPE is received, all wake -GPEs are now immediately disabled to prevent the waking GPE from -firing again and to prevent other wake GPEs from interrupting the -wake process. - -Added the AcpiGpeCount global that tracks the number of processed -GPEs, to be used for debugging systems with a large number of ACPI -interrupts. - -Implemented support for the "DMAR" ACPI table (DMA Redirection -Table) in both the ACPICA headers and the disassembler. - -Example Code and Data Size: These are the sizes for the OS- -independent acpica.lib produced by the Microsoft Visual C++ 6.0 32- -bit compiler. The debug version of the code includes the debug -output trace mechanism and has a much larger code and data size. - - Previous Release: - Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total - Debug Version: 154.6K Code, 62.3K Data, 216.9K Total - Current Release: - Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total - Debug Version: 154.9K Code, 62.6K Data, 217.5K Total - - -2) iASL Compiler/Disassembler and Tools: - -Disassembler support for the DMAR ACPI table. - ----------------------------------------- -23 August 2006. Summary of changes for version 20060823: - -1) ACPI CA Core Subsystem: - -The Table Manager component has been completely redesigned and -reimplemented. The new design is much simpler, and reduces the -overall code and data size of the kernel-resident ACPICA by -approximately 5%. Also, it is now possible to obtain the ACPI -tables very early during kernel initialization, even before -dynamic memory management is initialized. (Alexey Starikovskiy, -Fiodor Suietov, Bob Moore) - -Obsolete ACPICA interfaces: - -- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early -kernel init time). -- AcpiLoadTable: Not needed. -- AcpiUnloadTable: Not needed. - -New ACPICA interfaces: - -- AcpiInitializeTables: Must be called before the table manager -can be used. -- AcpiReallocateRootTable: Used to transfer the root table to -dynamically allocated memory after it becomes available. -- AcpiGetTableByIndex: Allows the host to easily enumerate all -ACPI tables in the RSDT/XSDT. - -Other ACPICA changes: - -- AcpiGetTableHeader returns the actual mapped table header, not a -copy. Use AcpiOsUnmapMemory to free this mapping. -- AcpiGetTable returns the actual mapped table. The mapping is -managed internally and must not be deleted by the caller. Use of -this interface causes no additional dynamic memory allocation. -- AcpiFindRootPointer: Support for physical addressing has been -eliminated, it appeared to be unused. -- The interface to AcpiOsMapMemory has changed to be consistent -with the other allocation interfaces. -- The interface to AcpiOsGetRootPointer has changed to eliminate -unnecessary parameters. -- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 -bits on 64-bit platforms. Was previously 64 bits on all platforms. -- The interface to the ACPI Global Lock acquire/release macros -have changed slightly since ACPICA no longer keeps a local copy of -the FACS with a constructed pointer to the actual global lock. - -Porting to the new table manager: - -- AcpiInitializeTables: Must be called once, and can be called -anytime during the OS initialization process. It allows the host -to specify an area of memory to be used to store the internal -version of the RSDT/XSDT (root table). This allows the host to -access ACPI tables before memory management is initialized and -running. -- AcpiReallocateRootTable: Can be called after memory management -is running to copy the root table to a dynamically allocated -array, freeing up the scratch memory specified in the call to -AcpiInitializeTables. -- AcpiSubsystemInitialize: This existing interface is independent -of the Table Manager, and does not have to be called before the -Table Manager can be used, it only must be called before the rest -of ACPICA can be used. -- ACPI Tables: Some changes have been made to the names and -structure of the actbl.h and actbl1.h header files and may require -changes to existing code. For example, bitfields have been -completely removed because of their lack of portability across C -compilers. -- Update interfaces to the Global Lock acquire/release macros if -local versions are used. (see acwin.h) - -Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c - -New files: tbfind.c - -Example Code and Data Size: These are the sizes for the OS- -independent acpica.lib produced by the Microsoft Visual C++ 6.0 32- -bit compiler. The debug version of the code includes the debug -output trace mechanism and has a much larger code and data size. - - Previous Release: - Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total - Debug Version: 161.0K Code, 65.1K Data, 226.1K Total - Current Release: - Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total - Debug Version: 154.6K Code, 62.3K Data, 216.9K Total - - -2) iASL Compiler/Disassembler and Tools: - -No changes for this release. - ----------------------------------------- -21 July 2006. Summary of changes for version 20060721: - -1) ACPI CA Core Subsystem: - -The full source code for the ASL test suite used to validate the -iASL compiler and the ACPICA core subsystem is being released with -the ACPICA source for the first time. The source is contained in a -separate package and consists of over 1100 files that exercise all -ASL/AML operators. The package should appear on the Intel/ACPI web -site shortly. (Valery Podrezov, Fiodor Suietov) - -Completed a new design and implementation for support of the ACPI -Global Lock. On the OS side, the global lock is now treated as a -standard AML mutex. Previously, multiple OS threads could -"acquire" the global lock simultaneously. However, this could -cause the BIOS to be starved out of the lock - especially in cases -such as the Embedded Controller driver where there is a tight -coupling between the OS and the BIOS. - -Implemented an optimization for the ACPI Global Lock interrupt -mechanism. The Global Lock interrupt handler no longer queues the -execution of a separate thread to signal the global lock -semaphore. Instead, the semaphore is signaled directly from the -interrupt handler. - -Implemented support within the AML interpreter for package objects -that contain a larger AML length (package list length) than the -package element count. In this case, the length of the package is -truncated to match the package element count. Some BIOS code -apparently modifies the package length on the fly, and this change -supports this behavior. Provides compatibility with the MS AML -interpreter. (With assistance from Fiodor Suietov) - -Implemented a temporary fix for the BankValue parameter of a Bank -Field to support all constant values, now including the Zero and -One opcodes. Evaluation of this parameter must eventually be -converted to a full TermArg evaluation. A not-implemented error is -now returned (temporarily) for non-constant values for this -parameter. - -Fixed problem reports (Fiodor Suietov) integrated: -- Fix for premature object deletion after CopyObject on Operation -Region (BZ 350) - -Example Code and Data Size: These are the sizes for the OS- -independent acpica.lib produced by the Microsoft Visual C++ 6.0 32- -bit compiler. The debug version of the code includes the debug -output trace mechanism and has a much larger code and data size. - - Previous Release: - Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total - Debug Version: 160.9K Code, 65.1K Data, 226.0K Total - Current Release: - Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total - Debug Version: 161.0K Code, 65.1K Data, 226.1K Total - - -2) iASL Compiler/Disassembler and Tools: - -No changes for this release. - ----------------------------------------- -07 July 2006. Summary of changes for version 20060707: - -1) ACPI CA Core Subsystem: - -Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C -compilers that do not allow the initialization of address pointers -within packed structures - even though the hardware itself may -support misaligned transfers. Some of the debug data structures -are packed by default to minimize size. - -Added an error message for the case where AcpiOsGetThreadId() -returns zero. A non-zero value is required by the core ACPICA code -to ensure the proper operation of AML mutexes and recursive -control methods. - -The DSDT is now the only ACPI table that determines whether the -AML interpreter is in 32-bit or 64-bit mode. Not really a -functional change, but the hooks for per-table 32/64 switching -have been removed from the code. A clarification to the ACPI -specification is forthcoming in ACPI 3.0B. - -Fixed a possible leak of an OwnerID in the error path of -AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table -OwnerID deletion to a single place in AcpiTbUninstallTable to -correct possible leaks when using the AcpiTbDeleteTablesByType -interface (with assistance from Lance Ortiz.) - -Fixed a problem with Serialized control methods where the -semaphore associated with the method could be over-signaled after -multiple method invocations. - -Fixed two issues with the locking of the internal namespace data -structure. Both the Unload() operator and AcpiUnloadTable -interface now lock the namespace during the namespace deletion -associated with the table unload (with assistance from Linn -Crosetto.) - -Fixed problem reports (Valery Podrezov) integrated: -- Eliminate unnecessary memory allocation for CreateXxxxField (BZ -5426) - -Fixed problem reports (Fiodor Suietov) integrated: -- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) -- On Address Space handler deletion, needless deactivation call -(BZ 374) -- AcpiRemoveAddressSpaceHandler: validate Device handle parameter -(BZ 375) -- Possible memory leak, Notify sub-objects of Processor, Power, -ThermalZone (BZ 376) -- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ -378) -- Minimum Length of RSDT should be validated (BZ 379) -- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj -has no Handler (BZ (380) -- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified -type loaded (BZ 381) - -Example Code and Data Size: These are the sizes for the OS- -independent acpica.lib produced by the Microsoft Visual C++ 6.0 32- -bit compiler. The debug version of the code includes the debug -output trace mechanism and has a much larger code and data size. - - Previous Release: - Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total - Debug Version: 160.8K Code, 64.8K Data, 225.6K Total - Current Release: - Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total - Debug Version: 161.0K Code, 65.1K Data, 226.1K Total - - -2) iASL Compiler/Disassembler and Tools: - -Fixed problem reports: -Compiler segfault when ASL contains a long (>1024) String -declaration (BZ 436) - ----------------------------------------- -23 June 2006. Summary of changes for version 20060623: - -1) ACPI CA Core Subsystem: - -Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. -This allows the type to be customized to the host OS for improved -efficiency (since a spinlock is usually a very small object.) - -Implemented support for "ignored" bits in the ACPI registers. -According to the ACPI specification, these bits should be -preserved when writing the registers via a read/modify/write -cycle. There are 3 bits preserved in this manner: PM1_CONTROL[0] -(SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. - -Implemented the initial deployment of new OSL mutex interfaces. -Since some host operating systems have separate mutex and -semaphore objects, this feature was requested. The base code now -uses mutexes (and the new mutex interfaces) wherever a binary -semaphore was used previously. However, for the current release, -the mutex interfaces are defined as macros to map them to the -existing semaphore interfaces. Therefore, no OSL changes are -required at this time. (See acpiosxf.h) - -Fixed several problems with the support for the control method -SyncLevel parameter. The SyncLevel now works according to the ACPI -specification and in concert with the Mutex SyncLevel parameter, -since the current SyncLevel is a property of the executing thread. -Mutual exclusion for control methods is now implemented with a -mutex instead of a semaphore. - -Fixed three instances of the use of the C shift operator in the -bitfield support code (exfldio.c) to avoid the use of a shift -value larger than the target data width. The behavior of C -compilers is undefined in this case and can cause unpredictable -results, and therefore the case must be detected and avoided. -(Fiodor Suietov) - -Added an info message whenever an SSDT or OEM table is loaded -dynamically via the Load() or LoadTable() ASL operators. This -should improve debugging capability since it will show exactly -what tables have been loaded (beyond the tables present in the -RSDT/XSDT.) - -Example Code and Data Size: These are the sizes for the OS- -independent acpica.lib produced by the Microsoft Visual C++ 6.0 32- -bit compiler. The debug version of the code includes the debug -output trace mechanism and has a much larger code and data size. - - Previous Release: - Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total - Debug Version: 160.2K Code, 64.7K Data, 224.9K Total - Current Release: - Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total - Debug Version: 160.8K Code, 64.8K Data, 225.6K Total - - -2) iASL Compiler/Disassembler and Tools: - -No changes for this release. - ----------------------------------------- -08 June 2006. Summary of changes for version 20060608: - -1) ACPI CA Core Subsystem: - -Converted the locking mutex used for the ACPI hardware to a -spinlock. This change should eliminate all problems caused by -attempting to acquire a semaphore at interrupt level, and it means -that all ACPICA external interfaces that directly access the ACPI -hardware can be safely called from interrupt level. OSL code that -implements the semaphore interfaces should be able to eliminate -any workarounds for being called at interrupt level. - -Fixed a regression introduced in 20060526 where the ACPI device -initialization could be prematurely aborted with an AE_NOT_FOUND -if a device did not have an optional _INI method. - -Fixed an IndexField issue where a write to the Data Register -should be limited in size to the AccessSize (width) of the -IndexField itself. (BZ 433, Fiodor Suietov) - -Fixed problem reports (Valery Podrezov) integrated: -- Allow store of ThermalZone objects to Debug object (BZ -5369/5370) - -Fixed problem reports (Fiodor Suietov) integrated: -- AcpiGetTableHeader doesn't handle multiple instances correctly -(BZ 364) - -Removed four global mutexes that were obsolete and were no longer -being used. - -Example Code and Data Size: These are the sizes for the OS- -independent acpica.lib produced by the Microsoft Visual C++ 6.0 32- -bit compiler. The debug version of the code includes the debug -output trace mechanism and has a much larger code and data size. - - Previous Release: - Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total - Debug Version: 160.3K Code, 64.9K Data, 225.2K Total - Current Release: - Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total - Debug Version: 160.2K Code, 64.7K Data, 224.9K Total - - -2) iASL Compiler/Disassembler and Tools: - -Fixed a fault when using -g option (get tables from registry) on -Windows machines. - -Fixed problem reports integrated: -- Generate error if CreateField NumBits parameter is zero. (BZ -405) -- Fault if Offset/Length in Field unit is very large (BZ 432, -Fiodor Suietov) -- Global table revision override (-r) is ignored (BZ 413) - ----------------------------------------- -26 May 2006. Summary of changes for version 20060526: - -1) ACPI CA Core Subsystem: - -Restructured, flattened, and simplified the internal interfaces -for namespace object evaluation - resulting in smaller code, less -CPU stack use, and fewer interfaces. (With assistance from Mikhail -Kouzmich) - -Fixed a problem with the CopyObject operator where the first -parameter was not typed correctly for the parser, interpreter, -compiler, and disassembler. Caused various errors and unexpected -behavior. - -Fixed a problem where a ShiftLeft or ShiftRight of more than 64 -bits produced incorrect results with some C compilers. Since the -behavior of C compilers when the shift value is larger than the -datatype width is apparently not well defined, the interpreter now -detects this condition and simply returns zero as expected in all -such cases. (BZ 395) - -Fixed problem reports (Valery Podrezov) integrated: -- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ -5329) -- Allow interpreter to handle nested method declarations (BZ 5361) - -Fixed problem reports (Fiodor Suietov) integrated: -- AcpiTerminate doesn't free debug memory allocation list objects -(BZ 355) -- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK -(BZ 356) -- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ -357) -- Resource Manager should return AE_TYPE for non-device objects -(BZ 358) -- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) -- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData -(BZ 360) -- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) -- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) -- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is -loaded (BZ 365) -- Status of the Global Initialization Handler call not used (BZ -366) -- Incorrect object parameter to Global Initialization Handler (BZ -367) - -Example Code and Data Size: These are the sizes for the OS- -independent acpica.lib produced by the Microsoft Visual C++ 6.0 32- -bit compiler. The debug version of the code includes the debug -output trace mechanism and has a much larger code and data size. - - Previous Release: - Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total - Debug Version: 160.5K Code, 65.1K Data, 225.6K Total - Current Release: - Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total - Debug Version: 160.3K Code, 64.9K Data, 225.2K Total - - -2) iASL Compiler/Disassembler and Tools: - -Modified the parser to allow the names IO, DMA, and IRQ to be used -as namespace identifiers with no collision with existing resource -descriptor macro names. This provides compatibility with other ASL -compilers and is most useful for disassembly/recompilation of -existing tables without parse errors. (With assistance from Thomas -Renninger) - -Disassembler: fixed an incorrect disassembly problem with the -DataTableRegion and CopyObject operators. Fixed a possible fault -during disassembly of some Alias operators. - ----------------------------------------- -12 May 2006. Summary of changes for version 20060512: - -1) ACPI CA Core Subsystem: - -Replaced the AcpiOsQueueForExecution interface with a new -interface named AcpiOsExecute. The major difference is that the -new interface does not have a Priority parameter, this appeared to -be useless and has been replaced by a Type parameter. The Type -tells the host what type of execution is being requested, such as -global lock handler, notify handler, GPE handler, etc. This allows -the host to queue and execute the request as appropriate for the -request type, possibly using different work queues and different -priorities for the various request types. This enables fixes for -multithreading deadlock problems such as BZ #5534, and will -require changes to all existing OS interface layers. (Alexey -Starikovskiy and Bob Moore) - -Fixed a possible memory leak associated with the support for the -so-called "implicit return" ACPI extension. Reported by FreeBSD, -BZ #6514. (Fiodor Suietov) - -Fixed a problem with the Load() operator where a table load from -an operation region could overwrite an internal table buffer by up -to 7 bytes and cause alignment faults on IPF systems. (With -assistance from Luming Yu) - -Example Code and Data Size: These are the sizes for the OS- -independent acpica.lib produced by the Microsoft Visual C++ 6.0 32- -bit compiler. The debug version of the code includes the debug -output trace mechanism and has a much larger code and data size. - - Previous Release: - Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total - Debug Version: 160.1K Code, 65.2K Data, 225.3K Total - Current Release: - Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total - Debug Version: 160.5K Code, 65.1K Data, 225.6K Total - - - -2) iASL Compiler/Disassembler and Tools: - -Disassembler: Implemented support to cross reference the internal -namespace and automatically generate ASL External() statements for -symbols not defined within the current table being disassembled. -This will simplify the disassembly and recompilation of -interdependent tables such as SSDTs since these statements will no -longer have to be added manually. - -Disassembler: Implemented experimental support to automatically -detect invocations of external control methods and generate -appropriate External() statements. This is problematic because the -AML cannot be correctly parsed until the number of arguments for -each control method is known. Currently, standalone method -invocations and invocations as the source operand of a Store() -statement are supported. - -Disassembler: Implemented support for the ASL pseudo-operators -LNotEqual, LLessEqual, and LGreaterEqual. Previously disassembled -as LNot(LEqual()), LNot(LGreater()), and LNot(LLess()), this makes -the disassembled ASL code more readable and likely closer to the -original ASL source. - ----------------------------------------- -21 April 2006. Summary of changes for version 20060421: - -1) ACPI CA Core Subsystem: - -Removed a device initialization optimization introduced in -20051216 where the _STA method was not run unless an _INI was also -present for the same device. This optimization could cause -problems because it could allow _INI methods to be run within a -not-present device subtree. (If a not-present device had no _INI, -_STA would not be run, the not-present status would not be -discovered, and the children of the device would be incorrectly -traversed.) - -Implemented a new _STA optimization where namespace subtrees that -do not contain _INI are identified and ignored during device -initialization. Selectively running _STA can significantly improve -boot time on large machines (with assistance from Len Brown.) - -Implemented support for the device initialization case where the -returned _STA flags indicate a device not-present but functioning. -In this case, _INI is not run, but the device children are -examined for presence, as per the ACPI specification. - -Implemented an additional change to the IndexField support in -order to conform to MS behavior. The value written to the Index -Register is not simply a byte offset, it is a byte offset in units -of the access width of the parent Index Field. (Fiodor Suietov) - -Defined and deployed a new OSL interface, AcpiOsValidateAddress. -This interface is called during the creation of all AML operation -regions, and allows the host OS to exert control over what -addresses it will allow the AML code to access. Operation Regions -whose addresses are disallowed will cause a runtime exception when -they are actually accessed (will not affect or abort table -loading.) See oswinxf or osunixxf for an example implementation. - -Defined and deployed a new OSL interface, AcpiOsValidateInterface. -This interface allows the host OS to match the various "optional" -interface/behavior strings for the _OSI predefined control method -as appropriate (with assistance from Bjorn Helgaas.) See oswinxf -or osunixxf for an example implementation. - -Restructured and corrected various problems in the exception -handling code paths within DsCallControlMethod and -DsTerminateControlMethod in dsmethod (with assistance from -Takayoshi Kochi.) - -Modified the Linux source converter to ignore quoted string -literals while converting identifiers from mixed to lower case. -This will correct problems with the disassembler and other areas -where such strings must not be modified. - -The ACPI_FUNCTION_* macros no longer require quotes around the -function name. This allows the Linux source converter to convert -the names, now that the converter ignores quoted strings. - -Example Code and Data Size: These are the sizes for the OS- -independent acpica.lib produced by the Microsoft Visual C++ 6.0 32- -bit compiler. The debug version of the code includes the debug -output trace mechanism and has a much larger code and data size. - - Previous Release: - - Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total - Debug Version: 158.9K Code, 64.9K Data, 223.8K Total - Current Release: - Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total - Debug Version: 160.1K Code, 65.2K Data, 225.3K Total - - -2) iASL Compiler/Disassembler and Tools: - -Implemented 3 new warnings for iASL, and implemented multiple -warning levels (w2 flag). - -1) Ignored timeouts: If the TimeoutValue parameter to Wait or -Acquire is not WAIT_FOREVER (0xFFFF) and the code does not examine -the return value to check for the possible timeout, a warning is -issued. - -2) Useless operators: If an ASL operator does not specify an -optional target operand and it also does not use the function -return value from the operator, a warning is issued since the -operator effectively does nothing. - -3) Unreferenced objects: If a namespace object is created, but -never referenced, a warning is issued. This is a warning level 2 -since there are cases where this is ok, such as when a secondary -table is loaded that uses the unreferenced objects. Even so, care -is taken to only flag objects that don't look like they will ever -be used. For example, the reserved methods (starting with an -underscore) are usually not referenced because it is expected that -the OS will invoke them. - ----------------------------------------- -31 March 2006. Summary of changes for version 20060331: - -1) ACPI CA Core Subsystem: - -Implemented header file support for the following additional ACPI -tables: ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. -With this support, all current and known ACPI tables are now -defined in the ACPICA headers and are available for use by device -drivers and other software. - -Implemented support to allow tables that contain ACPI names with -invalid characters to be loaded. Previously, this would cause the -table load to fail, but since there are several known cases of -such tables on existing machines, this change was made to enable -ACPI support for them. Also, this matches the behavior of the -Microsoft ACPI implementation. - -Fixed a couple regressions introduced during the memory -optimization in the 20060317 release. The namespace node -definition required additional reorganization and an internal -datatype that had been changed to 8-bit was restored to 32-bit. -(Valery Podrezov) - -Fixed a problem where a null pointer passed to -AcpiUtDeleteGenericState could be passed through to -AcpiOsReleaseObject which is unexpected. Such null pointers are -now trapped and ignored, matching the behavior of the previous -implementation before the deployment of AcpiOsReleaseObject. -(Valery Podrezov, Fiodor Suietov) - -Fixed a memory mapping leak during the deletion of a SystemMemory -operation region where a cached memory mapping was not deleted. -This became a noticeable problem for operation regions that are -defined within frequently used control methods. (Dana Meyers) - -Reorganized the ACPI table header files into two main files: one -for the ACPI tables consumed by the ACPICA core, and another for -the miscellaneous ACPI tables that are consumed by the drivers and -other software. The various FADT definitions were merged into one -common section and three different tables (ACPI 1.0, 1.0+, and -2.0) - -Example Code and Data Size: These are the sizes for the OS- -independent acpica.lib produced by the Microsoft Visual C++ 6.0 32- -bit compiler. The debug version of the code includes the debug -output trace mechanism and has a much larger code and data size. - - Previous Release: - Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total - Debug Version: 158.7K Code, 64.8K Data, 223.5K Total - Current Release: - Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total - Debug Version: 158.9K Code, 64.9K Data, 223.8K Total - - -2) iASL Compiler/Disassembler and Tools: - -Disassembler: Implemented support to decode and format all non-AML -ACPI tables (tables other than DSDTs and SSDTs.) This includes the -new tables added to the ACPICA headers, therefore all current and -known ACPI tables are supported. - -Disassembler: The change to allow ACPI names with invalid -characters also enables the disassembly of such tables. Invalid -characters within names are changed to '*' to make the name -printable; the iASL compiler will still generate an error for such -names, however, since this is an invalid ACPI character. - -Implemented an option for AcpiXtract (-a) to extract all tables -found in the input file. The default invocation extracts only the -DSDTs and SSDTs. - -Fixed a couple of gcc generation issues for iASL and AcpiExec and -added a makefile for the AcpiXtract utility. - ----------------------------------------- -17 March 2006. Summary of changes for version 20060317: - -1) ACPI CA Core Subsystem: - -Implemented the use of a cache object for all internal namespace -nodes. Since there are about 1000 static nodes in a typical -system, this will decrease memory use for cache implementations -that minimize per-allocation overhead (such as a slab allocator.) - -Removed the reference count mechanism for internal namespace -nodes, since it was deemed unnecessary. This reduces the size of -each namespace node by about 5%-10% on all platforms. Nodes are -now 20 bytes for the 32-bit case, and 32 bytes for the 64-bit -case. - -Optimized several internal data structures to reduce object size -on 64-bit platforms by packing data within the 64-bit alignment. -This includes the frequently used ACPI_OPERAND_OBJECT, of which -there can be ~1000 static instances corresponding to the namespace -objects. - -Added two new strings for the predefined _OSI method: "Windows -2001.1 SP1" and "Windows 2006". - -Split the allocation tracking mechanism out to a separate file, -from utalloc.c to uttrack.c. This mechanism appears to be only -useful for application-level code. Kernels may wish to not include -uttrack.c in distributions. - -Removed all remnants of the obsolete ACPI_REPORT_* macros and the -associated code. (These macros have been replaced by the -ACPI_ERROR and ACPI_WARNING macros.) - -Code and Data Size: These are the sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 32-bit compiler. The -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a much larger code and data size. Note that these values will -vary depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release: - Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total - Debug Version: 161.6K Code, 65.7K Data, 227.3K Total - Current Release: - Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total - Debug Version: 158.7K Code, 64.8K Data, 223.5K Total - - -2) iASL Compiler/Disassembler and Tools: - -Implemented an ANSI C version of the acpixtract utility. This -version will automatically extract the DSDT and all SSDTs from the -input acpidump text file and dump the binary output to separate -files. It can also display a summary of the input file including -the headers for each table found and will extract any single ACPI -table, with any signature. (See source/tools/acpixtract) - ----------------------------------------- -10 March 2006. Summary of changes for version 20060310: - -1) ACPI CA Core Subsystem: - -Tagged all external interfaces to the subsystem with the new -ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary -to assist kernel integration. For Linux, the macro resolves to the -EXPORT_SYMBOL macro. The default definition is NULL. - -Added the ACPI_THREAD_ID type for the return value from -AcpiOsGetThreadId. This allows the host to define this as -necessary to simplify kernel integration. The default definition -is ACPI_NATIVE_UINT. - -Fixed two interpreter problems related to error processing, the -deletion of objects, and placing invalid pointers onto the -internal operator result stack. BZ 6028, 6151 (Valery Podrezov) - -Increased the reference count threshold where a warning is emitted -for large reference counts in order to eliminate unnecessary -warnings on systems with large namespaces (especially 64-bit.) -Increased the value from 0x400 to 0x800. - -Due to universal disagreement as to the meaning of the 'c' in the -calloc() function, the ACPI_MEM_CALLOCATE macro has been renamed -to ACPI_ALLOCATE_ZEROED so that the purpose of the interface is -'clear'. ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to -ACPI_ALLOCATE and ACPI_FREE. - -Code and Data Size: These are the sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 32-bit compiler. The -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a much larger code and data size. Note that these values will -vary depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release: - Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total - Debug Version: 161.4K Code, 65.7K Data, 227.1K Total - Current Release: - Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total - Debug Version: 161.6K Code, 65.7K Data, 227.3K Total - - -2) iASL Compiler/Disassembler: - -Disassembler: implemented support for symbolic resource descriptor -references. If a CreateXxxxField operator references a fixed -offset within a resource descriptor, a name is assigned to the -descriptor and the offset is translated to the appropriate -resource tag and pathname. The addition of this support brings the -disassembled code very close to the original ASL source code and -helps eliminate run-time errors when the disassembled code is -modified (and recompiled) in such a way as to invalidate the -original fixed offsets. - -Implemented support for a Descriptor Name as the last parameter to -the ASL Register() macro. This parameter was inadvertently left -out of the ACPI specification, and will be added for ACPI 3.0b. - -Fixed a problem where the use of the "_OSI" string (versus the -full path "\_OSI") caused an internal compiler error. ("No back -ptr to op") - -Fixed a problem with the error message that occurs when an invalid -string is used for a _HID object (such as one with an embedded -asterisk: "*PNP010A".) The correct message is now displayed. - ----------------------------------------- -17 February 2006. Summary of changes for version 20060217: - -1) ACPI CA Core Subsystem: - -Implemented a change to the IndexField support to match the -behavior of the Microsoft AML interpreter. The value written to -the Index register is now a byte offset, no longer an index based -upon the width of the Data register. This should fix IndexField -problems seen on some machines where the Data register is not -exactly one byte wide. The ACPI specification will be clarified on -this point. - -Fixed a problem where several resource descriptor types could -overrun the internal descriptor buffer due to size miscalculation: -VendorShort, VendorLong, and Interrupt. This was noticed on IA64 -machines, but could affect all platforms. - -Fixed a problem where individual resource descriptors were -misaligned within the internal buffer, causing alignment faults on -IA64 platforms. - -Code and Data Size: These are the sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 32-bit compiler. The -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a much larger code and data size. Note that these values will -vary depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release: - Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total - Debug Version: 161.3K Code, 65.6K Data, 226.9K Total - Current Release: - Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total - Debug Version: 161.4K Code, 65.7K Data, 227.1K Total - - -2) iASL Compiler/Disassembler: - -Implemented support for new reserved names: _WDG and _WED are -Microsoft extensions for Windows Instrumentation Management, _TDL -is a new ACPI-defined method (Throttling Depth Limit.) - -Fixed a problem where a zero-length VendorShort or VendorLong -resource descriptor was incorrectly emitted as a descriptor of -length one. - ----------------------------------------- -10 February 2006. Summary of changes for version 20060210: - -1) ACPI CA Core Subsystem: - -Removed a couple of extraneous ACPI_ERROR messages that appeared -during normal execution. These became apparent after the -conversion from ACPI_DEBUG_PRINT. - -Fixed a problem where the CreateField operator could hang if the -BitIndex or NumBits parameter referred to a named object. (Valery -Podrezov, BZ 5359) - -Fixed a problem where a DeRefOf operation on a buffer object -incorrectly failed with an exception. This also fixes a couple of -related RefOf and DeRefOf issues. (Valery Podrezov, BZ -5360/5392/5387) - -Fixed a problem where the AE_BUFFER_LIMIT exception was returned -instead of AE_STRING_LIMIT on an out-of-bounds Index() operation. -(Valery Podrezov, BZ 5480) - -Implemented a memory cleanup at the end of the execution of each -iteration of an AML While() loop, preventing the accumulation of -outstanding objects. (Valery Podrezov, BZ 5427) - -Eliminated a chunk of duplicate code in the object resolution -code. (Valery Podrezov, BZ 5336) - -Fixed several warnings during the 64-bit code generation. - -The AcpiSrc source code conversion tool now inserts one line of -whitespace after an if() statement that is followed immediately by -a comment, improving readability of the Linux code. - -Code and Data Size: The current and previous library sizes for the -core subsystem are shown below. These are the code and data sizes -for the acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit -compiler. These values do not include any ACPI driver or OSPM -code. The debug version of the code includes the debug output -trace mechanism and has a much larger code and data size. Note -that these values will vary depending on the efficiency of the -compiler and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total - Debug Version: 161.3K Code, 65.7K Data, 227.0K Total - Current Release: - Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total - Debug Version: 161.3K Code, 65.6K Data, 226.9K Total - - -2) iASL Compiler/Disassembler: - -Fixed a problem with the disassembly of a BankField operator with -a complex expression for the BankValue parameter. - ----------------------------------------- -27 January 2006. Summary of changes for version 20060127: - -1) ACPI CA Core Subsystem: - -Implemented support in the Resource Manager to allow unresolved -namestring references within resource package objects for the _PRT -method. This support is in addition to the previously implemented -unresolved reference support within the AML parser. If the -interpreter slack mode is enabled, these unresolved references -will be passed through to the caller as a NULL package entry. - -Implemented and deployed new macros and functions for error and -warning messages across the subsystem. These macros are simpler -and generate less code than their predecessors. The new macros -ACPI_ERROR, ACPI_EXCEPTION, ACPI_WARNING, and ACPI_INFO replace -the ACPI_REPORT_* macros. The older macros remain defined to allow -ACPI drivers time to migrate to the new macros. - -Implemented the ACPI_CPU_FLAGS type to simplify host OS -integration of the Acquire/Release Lock OSL interfaces. - -Fixed a problem where Alias ASL operators are sometimes not -correctly resolved, in both the interpreter and the iASL compiler. - -Fixed several problems with the implementation of the -ConcatenateResTemplate ASL operator. As per the ACPI -specification, zero length buffers are now treated as a single -EndTag. One-length buffers always cause a fatal exception. Non- -zero length buffers that do not end with a full 2-byte EndTag -cause a fatal exception. - -Fixed a possible structure overwrite in the AcpiGetObjectInfo -external interface. (With assistance from Thomas Renninger) - -Code and Data Size: The current and previous library sizes for the -core subsystem are shown below. These are the code and data sizes -for the acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit -compiler. These values do not include any ACPI driver or OSPM -code. The debug version of the code includes the debug output -trace mechanism and has a much larger code and data size. Note -that these values will vary depending on the efficiency of the -compiler and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total - Debug Version: 163.2K Code, 66.2K Data, 229.4K Total - Current Release: - Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total - Debug Version: 161.3K Code, 65.7K Data, 227.0K Total - - -2) iASL Compiler/Disassembler: - -Fixed an internal error that was generated for any forward -references to ASL Alias objects. - ----------------------------------------- -13 January 2006. Summary of changes for version 20060113: - -1) ACPI CA Core Subsystem: - -Added 2006 copyright to all module headers and signons. This -affects virtually every file in the ACPICA core subsystem, iASL -compiler, and the utilities. - -Enhanced the ACPICA error reporting in order to simplify user -migration to the non-debug version of ACPICA. Replaced all -instances of the ACPI_DEBUG_PRINT macro invoked at the -ACPI_DB_ERROR and ACPI_DB_WARN debug levels with the -ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, respectively. -This preserves all error and warning messages in the non-debug -version of the ACPICA code (this has been referred to as the -"debug lite" option.) Over 200 cases were converted to create a -total of over 380 error/warning messages across the ACPICA code. -This increases the code and data size of the default non-debug -version of the code somewhat (about 13K), but all error/warning -reporting may be disabled if desired (and code eliminated) by -specifying the ACPI_NO_ERROR_MESSAGES compile-time configuration -option. The size of the debug version of ACPICA remains about the -same. - -Fixed a memory leak within the AML Debugger "Set" command. One -object was not properly deleted for every successful invocation of -the command. - -Code and Data Size: The current and previous library sizes for the -core subsystem are shown below. These are the code and data sizes -for the acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit -compiler. These values do not include any ACPI driver or OSPM -code. The debug version of the code includes the debug output -trace mechanism and has a much larger code and data size. Note -that these values will vary depending on the efficiency of the -compiler and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total - Debug Version: 163.7K Code, 67.5K Data, 231.2K Total - Current Release: - Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total - Debug Version: 163.2K Code, 66.2K Data, 229.4K Total - - -2) iASL Compiler/Disassembler: - -The compiler now officially supports the ACPI 3.0a specification -that was released on December 30, 2005. (Specification is -available at www.acpi.info) - ----------------------------------------- -16 December 2005. Summary of changes for version 20051216: - -1) ACPI CA Core Subsystem: - -Implemented optional support to allow unresolved names within ASL -Package objects. A null object is inserted in the package when a -named reference cannot be located in the current namespace. -Enabled via the interpreter slack flag, this should eliminate -AE_NOT_FOUND exceptions seen on machines that contain such code. - -Implemented an optimization to the initialization sequence that -can improve boot time. During ACPI device initialization, the _STA -method is now run if and only if the _INI method exists. The _STA -method is used to determine if the device is present; An _INI can -only be run if _STA returns present, but it is a waste of time to -run the _STA method if the _INI does not exist. (Prototype and -assistance from Dong Wei) - -Implemented use of the C99 uintptr_t for the pointer casting -macros if it is available in the current compiler. Otherwise, the -default (void *) cast is used as before. - -Fixed some possible memory leaks found within the execution path -of the Break, Continue, If, and CreateField operators. (Valery -Podrezov) - -Fixed a problem introduced in the 20051202 release where an -exception is generated during method execution if a control method -attempts to declare another method. - -Moved resource descriptor string constants that are used by both -the AML disassembler and AML debugger to the common utilities -directory so that these components are independent. - -Implemented support in the AcpiExec utility (-e switch) to -globally ignore exceptions during control method execution (method -is not aborted.) - -Added the rsinfo.c source file to the AcpiExec makefile for -Linux/Unix generation. - -Code and Data Size: The current and previous library sizes for the -core subsystem are shown below. These are the code and data sizes -for the acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit -compiler. These values do not include any ACPI driver or OSPM -code. The debug version of the code includes the debug output -trace mechanism and has a much larger code and data size. Note -that these values will vary depending on the efficiency of the -compiler and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total - Debug Version: 163.2K Code, 67.4K Data, 230.6K Total - Current Release: - Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total - Debug Version: 163.7K Code, 67.5K Data, 231.2K Total - - -2) iASL Compiler/Disassembler: - -Fixed a problem where a CPU stack overflow fault could occur if a -recursive method call was made from within a Return statement. - ----------------------------------------- -02 December 2005. Summary of changes for version 20051202: - -1) ACPI CA Core Subsystem: - -Modified the parsing of control methods to no longer create -namespace objects during the first pass of the parse. Objects are -now created only during the execute phase, at the moment the -namespace creation operator is encountered in the AML (Name, -OperationRegion, CreateByteField, etc.) This should eliminate -ALREADY_EXISTS exceptions seen on some machines where reentrant -control methods are protected by an AML mutex. The mutex will now -correctly block multiple threads from attempting to create the -same object more than once. - -Increased the number of available Owner Ids for namespace object -tracking from 32 to 255. This should eliminate the OWNER_ID_LIMIT -exceptions seen on some machines with a large number of ACPI -tables (either static or dynamic). - -Fixed a problem with the AcpiExec utility where a fault could -occur when the -b switch (batch mode) is used. - -Enhanced the namespace dump routine to output the owner ID for -each namespace object. - -Code and Data Size: The current and previous library sizes for the -core subsystem are shown below. These are the code and data sizes -for the acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit -compiler. These values do not include any ACPI driver or OSPM -code. The debug version of the code includes the debug output -trace mechanism and has a much larger code and data size. Note -that these values will vary depending on the efficiency of the -compiler and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total - Debug Version: 163.0K Code, 67.4K Data, 230.4K Total - Current Release: - Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total - Debug Version: 163.2K Code, 67.4K Data, 230.6K Total - - -2) iASL Compiler/Disassembler: - -Fixed a parse error during compilation of certain Switch/Case -constructs. To simplify the parse, the grammar now allows for -multiple Default statements and this error is now detected and -flagged during the analysis phase. - -Disassembler: The disassembly now includes the contents of the -original table header within a comment at the start of the file. -This includes the name and version of the original ASL compiler. - ----------------------------------------- -17 November 2005. Summary of changes for version 20051117: - -1) ACPI CA Core Subsystem: - -Fixed a problem in the AML parser where the method thread count -could be decremented below zero if any errors occurred during the -method parse phase. This should eliminate AE_AML_METHOD_LIMIT -exceptions seen on some machines. This also fixed a related -regression with the mechanism that detects and corrects methods -that cannot properly handle reentrancy (related to the deployment -of the new OwnerId mechanism.) - -Eliminated the pre-parsing of control methods (to detect errors) -during table load. Related to the problem above, this was causing -unwind issues if any errors occurred during the parse, and it -seemed to be overkill. A table load should not be aborted if there -are problems with any single control method, thus rendering this -feature rather pointless. - -Fixed a problem with the new table-driven resource manager where -an internal buffer overflow could occur for small resource -templates. - -Implemented a new external interface, AcpiGetVendorResource. This -interface will find and return a vendor-defined resource -descriptor within a _CRS or _PRS method via an ACPI 3.0 UUID -match. With assistance from Bjorn Helgaas. - -Removed the length limit (200) on string objects as per the -upcoming ACPI 3.0A specification. This affects the following areas -of the interpreter: 1) any implicit conversion of a Buffer to a -String, 2) a String object result of the ASL Concatentate -operator, 3) the String object result of the ASL ToString -operator. - -Fixed a problem in the Windows OS interface layer (OSL) where a -WAIT_FOREVER on a semaphore object would incorrectly timeout. This -allows the multithreading features of the AcpiExec utility to work -properly under Windows. - -Updated the Linux makefiles for the iASL compiler and AcpiExec to -include the recently added file named "utresrc.c". - -Code and Data Size: The current and previous library sizes for the -core subsystem are shown below. These are the code and data sizes -for the acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit -compiler. These values do not include any ACPI driver or OSPM -code. The debug version of the code includes the debug output -trace mechanism and has a much larger code and data size. Note -that these values will vary depending on the efficiency of the -compiler and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total - Debug Version: 163.0K Code, 67.4K Data, 230.4K Total - Current Release: - Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total - Debug Version: 163.0K Code, 67.4K Data, 230.4K Total - - -2) iASL Compiler/Disassembler: - -Removed the limit (200) on string objects as per the upcoming ACPI -3.0A specification. For the iASL compiler, this means that string -literals within the source ASL can be of any length. - -Enhanced the listing output to dump the AML code for resource -descriptors immediately after the ASL code for each descriptor, -instead of in a block at the end of the entire resource template. - -Enhanced the compiler debug output to dump the entire original -parse tree constructed during the parse phase, before any -transforms are applied to the tree. The transformed tree is dumped -also. - ----------------------------------------- -02 November 2005. Summary of changes for version 20051102: - -1) ACPI CA Core Subsystem: - -Modified the subsystem initialization sequence to improve GPE -support. The GPE initialization has been split into two parts in -order to defer execution of the _PRW methods (Power Resources for -Wake) until after the hardware is fully initialized and the SCI -handler is installed. This allows the _PRW methods to access -fields protected by the Global Lock. This will fix systems where a -NO_GLOBAL_LOCK exception has been seen during initialization. - -Converted the ACPI internal object disassemble and display code -within the AML debugger to fully table-driven operation, reducing -code size and increasing maintainability. - -Fixed a regression with the ConcatenateResTemplate() ASL operator -introduced in the 20051021 release. - -Implemented support for "local" internal ACPI object types within -the debugger "Object" command and the AcpiWalkNamespace external -interfaces. These local types include RegionFields, BankFields, -IndexFields, Alias, and reference objects. - -Moved common AML resource handling code into a new file, -"utresrc.c". This code is shared by both the Resource Manager and -the AML Debugger. - -Code and Data Size: The current and previous library sizes for the -core subsystem are shown below. These are the code and data sizes -for the acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit -compiler. These values do not include any ACPI driver or OSPM -code. The debug version of the code includes the debug output -trace mechanism and has a much larger code and data size. Note -that these values will vary depending on the efficiency of the -compiler and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total - Debug Version: 163.5K Code, 67.0K Data, 230.5K Total - Current Release: - Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total - Debug Version: 163.0K Code, 67.4K Data, 230.4K Total - - -2) iASL Compiler/Disassembler: - -Fixed a problem with very large initializer lists (more than 4000 -elements) for both Buffer and Package objects where the parse -stack could overflow. - -Enhanced the pre-compile source code scan for non-ASCII characters -to ignore characters within comment fields. The scan is now always -performed and is no longer optional, detecting invalid characters -within a source file immediately rather than during the parse -phase or later. - -Enhanced the ASL grammar definition to force early reductions on -all list-style grammar elements so that the overall parse stack -usage is greatly reduced. This should improve performance and -reduce the possibility of parse stack overflow. - -Eliminated all reduce/reduce conflicts in the iASL parser -generation. Also, with the addition of a %expected statement, the -compiler generates from source with no warnings. - -Fixed a possible segment fault in the disassembler if the input -filename does not contain a "dot" extension (Thomas Renninger). - ----------------------------------------- -21 October 2005. Summary of changes for version 20051021: - -1) ACPI CA Core Subsystem: - -Implemented support for the EM64T and other x86-64 processors. -This essentially entails recognizing that these processors support -non-aligned memory transfers. Previously, all 64-bit processors -were assumed to lack hardware support for non-aligned transfers. - -Completed conversion of the Resource Manager to nearly full table- -driven operation. Specifically, the resource conversion code -(convert AML to internal format and the reverse) and the debug -code to dump internal resource descriptors are fully table-driven, -reducing code and data size and improving maintainability. - -The OSL interfaces for Acquire and Release Lock now use a 64-bit -flag word on 64-bit processors instead of a fixed 32-bit word. -(With assistance from Alexey Starikovskiy) - -Implemented support within the resource conversion code for the -Type-Specific byte within the various ACPI 3.0 *WordSpace macros. - -Fixed some issues within the resource conversion code for the type- -specific flags for both Memory and I/O address resource -descriptors. For Memory, implemented support for the MTP and TTP -flags. For I/O, split the TRS and TTP flags into two separate -fields. - -Code and Data Size: The current and previous library sizes for the -core subsystem are shown below. These are the code and data sizes -for the acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit -compiler. These values do not include any ACPI driver or OSPM -code. The debug version of the code includes the debug output -trace mechanism and has a much larger code and data size. Note -that these values will vary depending on the efficiency of the -compiler and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total - Debug Version: 168.0K Code, 68.3K Data, 236.3K Total - Current Release: - Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total - Debug Version: 163.5K Code, 67.0K Data, 230.5K Total - - - -2) iASL Compiler/Disassembler: - -Relaxed a compiler restriction that disallowed a ResourceIndex -byte if the corresponding ResourceSource string was not also -present in a resource descriptor declaration. This restriction -caused problems with existing AML/ASL code that includes the Index -byte without the string. When such AML was disassembled, it could -not be compiled without modification. Further, the modified code -created a resource template with a different size than the -original, breaking code that used fixed offsets into the resource -template buffer. - -Removed a recent feature of the disassembler to ignore a lone -ResourceIndex byte. This byte is now emitted if present so that -the exact AML can be reproduced when the disassembled code is -recompiled. - -Improved comments and text alignment for the resource descriptor -code emitted by the disassembler. - -Implemented disassembler support for the ACPI 3.0 AccessSize field -within a Register() resource descriptor. - ----------------------------------------- -30 September 2005. Summary of changes for version 20050930: - -1) ACPI CA Core Subsystem: - -Completed a major overhaul of the Resource Manager code - -specifically, optimizations in the area of the AML/internal -resource conversion code. The code has been optimized to simplify -and eliminate duplicated code, CPU stack use has been decreased by -optimizing function parameters and local variables, and naming -conventions across the manager have been standardized for clarity -and ease of maintenance (this includes function, parameter, -variable, and struct/typedef names.) The update may force changes -in some driver code, depending on how resources are handled by the -host OS. - -All Resource Manager dispatch and information tables have been -moved to a single location for clarity and ease of maintenance. -One new file was created, named "rsinfo.c". - -The ACPI return macros (return_ACPI_STATUS, etc.) have been -modified to guarantee that the argument is not evaluated twice, -making them less prone to macro side-effects. However, since there -exists the possibility of additional stack use if a particular -compiler cannot optimize them (such as in the debug generation -case), the original macros are optionally available. Note that -some invocations of the return_VALUE macro may now cause size -mismatch warnings; the return_UINT8 and return_UINT32 macros are -provided to eliminate these. (From Randy Dunlap) - -Implemented a new mechanism to enable debug tracing for individual -control methods. A new external interface, AcpiDebugTrace, is -provided to enable this mechanism. The intent is to allow the host -OS to easily enable and disable tracing for problematic control -methods. This interface can be easily exposed to a user or -debugger interface if desired. See the file psxface.c for details. - -AcpiUtCallocate will now return a valid pointer if a length of -zero is specified - a length of one is used and a warning is -issued. This matches the behavior of AcpiUtAllocate. - -Code and Data Size: The current and previous library sizes for the -core subsystem are shown below. These are the code and data sizes -for the acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit -compiler. These values do not include any ACPI driver or OSPM -code. The debug version of the code includes the debug output -trace mechanism and has a much larger code and data size. Note -that these values will vary depending on the efficiency of the -compiler and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total - Debug Version: 168.1K Code, 68.4K Data, 236.5K Total - Current Release: - Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total - Debug Version: 168.0K Code, 68.3K Data, 236.3K Total - - -2) iASL Compiler/Disassembler: - -A remark is issued if the effective compile-time length of a -package or buffer is zero. Previously, this was a warning. - ----------------------------------------- -16 September 2005. Summary of changes for version 20050916: - -1) ACPI CA Core Subsystem: - -Fixed a problem within the Resource Manager where support for the -Generic Register descriptor was not fully implemented. This -descriptor is now fully recognized, parsed, disassembled, and -displayed. - -Completely restructured the Resource Manager code to utilize table- -driven dispatch and lookup, eliminating many of the large switch() -statements. This reduces overall subsystem code size and code -complexity. Affects the resource parsing and construction, -disassembly, and debug dump output. - -Cleaned up and restructured the debug dump output for all resource -descriptors. Improved readability of the output and reduced code -size. - -Fixed a problem where changes to internal data structures caused -the optional ACPI_MUTEX_DEBUG code to fail compilation if -specified. - -Code and Data Size: The current and previous library sizes for the -core subsystem are shown below. These are the code and data sizes -for the acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit -compiler. These values do not include any ACPI driver or OSPM -code. The debug version of the code includes the debug output -trace mechanism and has a much larger code and data size. Note -that these values will vary depending on the efficiency of the -compiler and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total - Debug Version: 169.6K Code, 69.9K Data, 239.5K Total - Current Release: - Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total - Debug Version: 168.1K Code, 68.4K Data, 236.5K Total - - -2) iASL Compiler/Disassembler: - -Updated the disassembler to automatically insert an -EndDependentFn() macro into the ASL stream if this macro is -missing in the original AML code, simplifying compilation of the -resulting ASL module. - -Fixed a problem in the disassembler where a disassembled -ResourceSource string (within a large resource descriptor) was not -surrounded by quotes and not followed by a comma, causing errors -when the resulting ASL module was compiled. Also, escape sequences -within a ResourceSource string are now handled correctly -(especially "\\") - ----------------------------------------- -02 September 2005. Summary of changes for version 20050902: - -1) ACPI CA Core Subsystem: - -Fixed a problem with the internal Owner ID allocation and -deallocation mechanisms for control method execution and recursive -method invocation. This should eliminate the OWNER_ID_LIMIT -exceptions and "Invalid OwnerId" messages seen on some systems. -Recursive method invocation depth is currently limited to 255. -(Alexey Starikovskiy) - -Completely eliminated all vestiges of support for the "module- -level executable code" until this support is fully implemented and -debugged. This should eliminate the NO_RETURN_VALUE exceptions -seen during table load on some systems that invoke this support. - -Fixed a problem within the resource manager code where the -transaction flags for a 64-bit address descriptor were handled -incorrectly in the type-specific flag byte. - -Consolidated duplicate code within the address descriptor resource -manager code, reducing overall subsystem code size. - -Fixed a fault when using the AML debugger "disassemble" command to -disassemble individual control methods. - -Removed references to the "release_current" directory within the -Unix release package. - -Code and Data Size: The current and previous core subsystem -library sizes are shown below. These are the code and data sizes -for the acpica.lib produced by the Microsoft Visual C++ 6.0 -compiler. These values do not include any ACPI driver or OSPM -code. The debug version of the code includes the debug output -trace mechanism and has a much larger code and data size. Note -that these values will vary depending on the efficiency of the -compiler and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total - Debug Version: 170.0K Code, 69.9K Data, 239.9K Total - Current Release: - Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total - Debug Version: 169.6K Code, 69.9K Data, 239.5K Total - - -2) iASL Compiler/Disassembler: - -Implemented an error check for illegal duplicate values in the -interrupt and dma lists for the following ASL macros: Dma(), -Irq(), IrqNoFlags(), and Interrupt(). - -Implemented error checking for the Irq() and IrqNoFlags() macros -to detect too many values in the interrupt list (16 max) and -invalid values in the list (range 0 - 15) - -The maximum length string literal within an ASL file is now -restricted to 200 characters as per the ACPI specification. - -Fixed a fault when using the -ln option (generate namespace -listing). - -Implemented an error check to determine if a DescriptorName within -a resource descriptor has already been used within the current -scope. - ----------------------------------------- -15 August 2005. Summary of changes for version 20050815: - -1) ACPI CA Core Subsystem: - -Implemented a full bytewise compare to determine if a table load -request is attempting to load a duplicate table. The compare is -performed if the table signatures and table lengths match. This -will allow different tables with the same OEM Table ID and -revision to be loaded - probably against the ACPI specification, -but discovered in the field nonetheless. - -Added the changes.txt logfile to each of the zipped release -packages. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total - Debug Version: 167.0K Code, 69.9K Data, 236.9K Total - Current Release: - Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total - Debug Version: 170.0K Code, 69.9K Data, 239.9K Total - - -2) iASL Compiler/Disassembler: - -Fixed a problem where incorrect AML code could be generated for -Package objects if optimization is disabled (via the -oa switch). - -Fixed a problem with where incorrect AML code is generated for -variable-length packages when the package length is not specified -and the number of initializer values is greater than 255. - - ----------------------------------------- -29 July 2005. Summary of changes for version 20050729: - -1) ACPI CA Core Subsystem: - -Implemented support to ignore an attempt to install/load a -particular ACPI table more than once. Apparently there exists BIOS -code that repeatedly attempts to load the same SSDT upon certain -events. With assistance from Venkatesh Pallipadi. - -Restructured the main interface to the AML parser in order to -correctly handle all exceptional conditions. This will prevent -leakage of the OwnerId resource and should eliminate the -AE_OWNER_ID_LIMIT exceptions seen on some machines. With -assistance from Alexey Starikovskiy. - -Support for "module level code" has been disabled in this version -due to a number of issues that have appeared on various machines. -The support can be enabled by defining -ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem compilation. When -the issues are fully resolved, the code will be enabled by default -again. - -Modified the internal functions for debug print support to define -the FunctionName parameter as a (const char *) for compatibility -with compiler built-in macros such as __FUNCTION__, etc. - -Linted the entire ACPICA source tree for both 32-bit and 64-bit. - -Implemented support to display an object count summary for the AML -Debugger commands Object and Methods. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total - Debug Version: 170.0K Code, 69.7K Data, 239.7K Total - Current Release: - Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total - Debug Version: 167.0K Code, 69.9K Data, 236.9K Total - - -2) iASL Compiler/Disassembler: - -Fixed a regression that appeared in the 20050708 version of the -compiler where an error message was inadvertently emitted for -invocations of the _OSI reserved control method. - ----------------------------------------- -08 July 2005. Summary of changes for version 20050708: - -1) ACPI CA Core Subsystem: - -The use of the CPU stack in the debug version of the subsystem has -been considerably reduced. Previously, a debug structure was -declared in every function that used the debug macros. This -structure has been removed in favor of declaring the individual -elements as parameters to the debug functions. This reduces the -cumulative stack use during nested execution of ACPI function -calls at the cost of a small increase in the code size of the -debug version of the subsystem. With assistance from Alexey -Starikovskiy and Len Brown. - -Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler- -dependent headers to define a macro that will return the current -function name at runtime (such as __FUNCTION__ or _func_, etc.) -The function name is used by the debug trace output. If -ACPI_GET_FUNCTION_NAME is not defined in the compiler-dependent -header, the function name is saved on the CPU stack (one pointer -per function.) This mechanism is used because apparently there -exists no standard ANSI-C defined macro that that returns the -function name. - -Redesigned and reimplemented the "Owner ID" mechanism used to -track namespace objects created/deleted by ACPI tables and control -method execution. A bitmap is now used to allocate and free the -IDs, thus solving the wraparound problem present in the previous -implementation. The size of the namespace node descriptor was -reduced by 2 bytes as a result (Alexey Starikovskiy). - -Removed the UINT32_BIT and UINT16_BIT types that were used for the -bitfield flag definitions within the headers for the predefined -ACPI tables. These have been replaced by UINT8_BIT in order to -increase the code portability of the subsystem. If the use of -UINT8 remains a problem, we may be forced to eliminate bitfields -entirely because of a lack of portability. - -Enhanced the performance of the AcpiUtUpdateObjectReference -procedure. This is a frequently used function and this improvement -increases the performance of the entire subsystem (Alexey -Starikovskiy). - -Fixed several possible memory leaks and the inverse - premature -object deletion (Alexey Starikovskiy). - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total - Debug Version: 165.2K Code, 69.6K Data, 234.8K Total - Current Release: - Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total - Debug Version: 170.0K Code, 69.7K Data, 239.7K Total - ----------------------------------------- -24 June 2005. Summary of changes for version 20050624: - -1) ACPI CA Core Subsystem: - -Modified the new OSL cache interfaces to use ACPI_CACHE_T as the -type for the host-defined cache object. This allows the OSL -implementation to define and type this object in any manner -desired, simplifying the OSL implementation. For example, -ACPI_CACHE_T is defined as kmem_cache_t for Linux, and should be -defined in the OS-specific header file for other operating systems -as required. - -Changed the interface to AcpiOsAcquireObject to directly return -the requested object as the function return (instead of -ACPI_STATUS.) This change was made for performance reasons, since -this is the purpose of the interface in the first place. -AcpiOsAcquireObject is now similar to the AcpiOsAllocate -interface. - -Implemented a new AML debugger command named Businfo. This command -displays information about all devices that have an associate _PRT -object. The _ADR, _HID, _UID, and _CID are displayed for these -devices. - -Modified the initialization sequence in AcpiInitializeSubsystem to -call the OSL interface AcpiOslInitialize first, before any local -initialization. This change was required because the global -initialization now calls OSL interfaces. - -Enhanced the Dump command to display the entire contents of -Package objects (including all sub-objects and their values.) - -Restructured the code base to split some files because of size -and/or because the code logically belonged in a separate file. New -files are listed below. All makefiles and project files included -in the ACPI CA release have been updated. - utilities/utcache.c /* Local cache interfaces */ - utilities/utmutex.c /* Local mutex support */ - utilities/utstate.c /* State object support */ - interpreter/parser/psloop.c /* Main AML parse loop */ - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total - Debug Version: 164.0K Code, 69.1K Data, 233.1K Total - Current Release: - Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total - Debug Version: 165.2K Code, 69.6K Data, 234.8K Total - - -2) iASL Compiler/Disassembler: - -Fixed a regression introduced in version 20050513 where the use of -a Package object within a Case() statement caused a compile time -exception. The original behavior has been restored (a Match() -operator is emitted.) - ----------------------------------------- -17 June 2005. Summary of changes for version 20050617: - -1) ACPI CA Core Subsystem: - -Moved the object cache operations into the OS interface layer -(OSL) to allow the host OS to handle these operations if desired -(for example, the Linux OSL will invoke the slab allocator). This -support is optional; the compile time define ACPI_USE_LOCAL_CACHE -may be used to utilize the original cache code in the ACPI CA -core. The new OSL interfaces are shown below. See utalloc.c for an -example implementation, and acpiosxf.h for the exact interface -definitions. With assistance from Alexey Starikovskiy. - AcpiOsCreateCache - AcpiOsDeleteCache - AcpiOsPurgeCache - AcpiOsAcquireObject - AcpiOsReleaseObject - -Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock -to return and restore a flags parameter. This fits better with -many OS lock models. Note: the current execution state (interrupt -handler or not) is no longer passed to these interfaces. If -necessary, the OSL must determine this state by itself, a simple -and fast operation. With assistance from Alexey Starikovskiy. - -Fixed a problem in the ACPI table handling where a valid XSDT was -assumed present if the revision of the RSDP was 2 or greater. -According to the ACPI specification, the XSDT is optional in all -cases, and the table manager therefore now checks for both an RSDP ->=2 and a valid XSDT pointer. Otherwise, the RSDT pointer is used. -Some ACPI 2.0 compliant BIOSs contain only the RSDT. - -Fixed an interpreter problem with the Mid() operator in the case -of an input string where the resulting output string is of zero -length. It now correctly returns a valid, null terminated string -object instead of a string object with a null pointer. - -Fixed a problem with the control method argument handling to allow -a store to an Arg object that already contains an object of type -Device. The Device object is now correctly overwritten. -Previously, an error was returned. - - -Enhanced the debugger Find command to emit object values in -addition to the found object pathnames. The output format is the -same as the dump namespace command. - -Enhanced the debugger Set command. It now has the ability to set -the value of any Named integer object in the namespace -(Previously, only method locals and args could be set.) - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total - Debug Version: 164.0K Code, 69.3K Data, 233.3K Total - Current Release: - Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total - Debug Version: 164.0K Code, 69.1K Data, 233.1K Total - - -2) iASL Compiler/Disassembler: - -Fixed a regression in the disassembler where if/else/while -constructs were output incorrectly. This problem was introduced in -the previous release (20050526). This problem also affected the -single-step disassembly in the debugger. - -Fixed a problem where compiling the reserved _OSI method would -randomly (but rarely) produce compile errors. - -Enhanced the disassembler to emit compilable code in the face of -incorrect AML resource descriptors. If the optional -ResourceSourceIndex is present, but the ResourceSource is not, do -not emit the ResourceSourceIndex in the disassembly. Otherwise, -the resulting code cannot be compiled without errors. - ----------------------------------------- -26 May 2005. Summary of changes for version 20050526: - -1) ACPI CA Core Subsystem: - -Implemented support to execute Type 1 and Type 2 AML opcodes -appearing at the module level (not within a control method.) These -opcodes are executed exactly once at the time the table is loaded. -This type of code was legal up until the release of ACPI 2.0B -(2002) and is now supported within ACPI CA in order to provide -backwards compatibility with earlier BIOS implementations. This -eliminates the "Encountered executable code at module level" -warning that was previously generated upon detection of such code. - -Fixed a problem in the interpreter where an AE_NOT_FOUND exception -could inadvertently be generated during the lookup of namespace -objects in the second pass parse of ACPI tables and control -methods. It appears that this problem could occur during the -resolution of forward references to namespace objects. - -Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex -function, corresponding to the same #ifdef in the -AcpiUtAcquireMutex function. This allows the deadlock detection -debug code to be compiled out in the normal case, improving mutex -performance (and overall subsystem performance) considerably. - -Implemented a handful of miscellaneous fixes for possible memory -leaks on error conditions and error handling control paths. These -fixes were suggested by FreeBSD and the Coverity Prevent source -code analysis tool. - -Added a check for a null RSDT pointer in AcpiGetFirmwareTable -(tbxfroot.c) to prevent a fault in this error case. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total - Debug Version: 163.7K Code, 69.3K Data, 233.0K Total - Current Release: - Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total - Debug Version: 164.0K Code, 69.3K Data, 233.3K Total - - -2) iASL Compiler/Disassembler: - -Implemented support to allow Type 1 and Type 2 ASL operators to -appear at the module level (not within a control method.) These -operators will be executed once at the time the table is loaded. -This type of code was legal up until the release of ACPI 2.0B -(2002) and is now supported by the iASL compiler in order to -provide backwards compatibility with earlier BIOS ASL code. - -The ACPI integer width (specified via the table revision ID or the --r override, 32 or 64 bits) is now used internally during compile- -time constant folding to ensure that constants are truncated to 32 -bits if necessary. Previously, the revision ID value was only -emitted in the AML table header. - -An error message is now generated for the Mutex and Method -operators if the SyncLevel parameter is outside the legal range of -0 through 15. - -Fixed a problem with the Method operator ParameterTypes list -handling (ACPI 3.0). Previously, more than 2 types or 2 arguments -generated a syntax error. The actual underlying implementation of -method argument typechecking is still under development, however. - ----------------------------------------- -13 May 2005. Summary of changes for version 20050513: - -1) ACPI CA Core Subsystem: - -Implemented support for PCI Express root bridges -- added support -for device PNP0A08 in the root bridge search within -AcpiEvPciConfigRegionSetup. - -The interpreter now automatically truncates incoming 64-bit -constants to 32 bits if currently executing out of a 32-bit ACPI -table (Revision < 2). This also affects the iASL compiler constant -folding. (Note: as per below, the iASL compiler no longer allows -64-bit constants within 32-bit tables.) - -Fixed a problem where string and buffer objects with "static" -pointers (pointers to initialization data within an ACPI table) -were not handled consistently. The internal object copy operation -now always copies the data to a newly allocated buffer, regardless -of whether the source object is static or not. - -Fixed a problem with the FromBCD operator where an implicit result -conversion was improperly performed while storing the result to -the target operand. Since this is an "explicit conversion" -operator, the implicit conversion should never be performed on the -output. - -Fixed a problem with the CopyObject operator where a copy to an -existing named object did not always completely overwrite the -existing object stored at name. Specifically, a buffer-to-buffer -copy did not delete the existing buffer. - -Replaced "InterruptLevel" with "InterruptNumber" in all GPE -interfaces and structs for consistency. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total - Debug Version: 163.7K Code, 69.3K Data, 233.0K Total - Current Release: (Same sizes) - Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total - Debug Version: 163.7K Code, 69.3K Data, 233.0K Total - - -2) iASL Compiler/Disassembler: - -The compiler now emits a warning if an attempt is made to generate -a 64-bit integer constant from within a 32-bit ACPI table -(Revision < 2). The integer is truncated to 32 bits. - -Fixed a problem with large package objects: if the static length -of the package is greater than 255, the "variable length package" -opcode is emitted. Previously, this caused an error. This requires -an update to the ACPI spec, since it currently (incorrectly) -states that packages larger than 255 elements are not allowed. - -The disassembler now correctly handles variable length packages -and packages larger than 255 elements. - ----------------------------------------- -08 April 2005. Summary of changes for version 20050408: - -1) ACPI CA Core Subsystem: - -Fixed three cases in the interpreter where an "index" argument to -an ASL function was still (internally) 32 bits instead of the -required 64 bits. This was the Index argument to the Index, Mid, -and Match operators. - -The "strupr" function is now permanently local (AcpiUtStrupr), -since this is not a POSIX-defined function and not present in most -kernel-level C libraries. All references to the C library strupr -function have been removed from the headers. - -Completed the deployment of static functions/prototypes. All -prototypes with the static attribute have been moved from the -headers to the owning C file. - -Implemented an extract option (-e) for the AcpiBin utility (AML -binary utility). This option allows the utility to extract -individual ACPI tables from the output of AcpiDmp. It provides the -same functionality of the acpixtract.pl perl script without the -worry of setting the correct perl options. AcpiBin runs on Windows -and has not yet been generated/validated in the Linux/Unix -environment (but should be soon). - -Updated and fixed the table dump option for AcpiBin (-d). This -option converts a single ACPI table to a hex/ascii file, similar -to the output of AcpiDmp. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total - Debug Version: 163.5K Code, 69.3K Data, 232.8K Total - Current Release: - Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total - Debug Version: 163.7K Code, 69.3K Data, 233.0K Total - - -2) iASL Compiler/Disassembler: - -Disassembler fix: Added a check to ensure that the table length -found in the ACPI table header within the input file is not longer -than the actual input file size. This indicates some kind of file -or table corruption. - ----------------------------------------- -29 March 2005. Summary of changes for version 20050329: - -1) ACPI CA Core Subsystem: - -An error is now generated if an attempt is made to create a Buffer -Field of length zero (A CreateField with a length operand of -zero.) - -The interpreter now issues a warning whenever executable code at -the module level is detected during ACPI table load. This will -give some idea of the prevalence of this type of code. - -Implemented support for references to named objects (other than -control methods) within package objects. - -Enhanced package object output for the debug object. Package -objects are now completely dumped, showing all elements. - -Enhanced miscellaneous object output for the debug object. Any -object can now be written to the debug object (for example, a -device object can be written, and the type of the object will be -displayed.) - -The "static" qualifier has been added to all local functions -across both the core subsystem and the iASL compiler. - -The number of "long" lines (> 80 chars) within the source has been -significantly reduced, by about 1/3. - -Cleaned up all header files to ensure that all CA/iASL functions -are prototyped (even static functions) and the formatting is -consistent. - -Two new header files have been added, acopcode.h and acnames.h. - -Removed several obsolete functions that were no longer used. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total - Debug Version: 165.4K Code, 69.7K Data, 236.1K Total - Current Release: - Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total - Debug Version: 163.5K Code, 69.3K Data, 232.8K Total - - - -2) iASL Compiler/Disassembler: - -Fixed a problem with the resource descriptor generation/support. -For the ResourceSourceIndex and the ResourceSource fields, both -must be present, or both must be not present - can't have one -without the other. - -The compiler now returns non-zero from the main procedure if any -errors have occurred during the compilation. - - ----------------------------------------- -09 March 2005. Summary of changes for version 20050309: - -1) ACPI CA Core Subsystem: - -The string-to-buffer implicit conversion code has been modified -again after a change to the ACPI specification. In order to match -the behavior of the other major ACPI implementation, the target -buffer is no longer truncated if the source string is smaller than -an existing target buffer. This change requires an update to the -ACPI spec, and should eliminate the recent AE_AML_BUFFER_LIMIT -issues. - -The "implicit return" support was rewritten to a new algorithm -that solves the general case. Rather than attempt to determine -when a method is about to exit, the result of every ASL operator -is saved momentarily until the very next ASL operator is executed. -Therefore, no matter how the method exits, there will always be a -saved implicit return value. This feature is only enabled with the -AcpiGbl_EnableInterpreterSlack flag, and should eliminate -AE_AML_NO_RETURN_VALUE errors when enabled. - -Implemented implicit conversion support for the predicate -(operand) of the If, Else, and While operators. String and Buffer -arguments are automatically converted to Integers. - -Changed the string-to-integer conversion behavior to match the new -ACPI errata: "If no integer object exists, a new integer is -created. The ASCII string is interpreted as a hexadecimal -constant. Each string character is interpreted as a hexadecimal -value (`0'-`9', `A'-`F', `a', `f'), starting with the first -character as the most significant digit, and ending with the first -non-hexadecimal character or end-of-string." This means that the -first non-hex character terminates the conversion and this is the -code that was changed. - -Fixed a problem where the ObjectType operator would fail (fault) -when used on an Index of a Package which pointed to a null package -element. The operator now properly returns zero (Uninitialized) in -this case. - -Fixed a problem where the While operator used excessive memory by -not properly popping the result stack during execution. There was -no memory leak after execution, however. (Code provided by Valery -Podrezov.) - -Fixed a problem where references to control methods within Package -objects caused the method to be invoked, instead of producing a -reference object pointing to the method. - -Restructured and simplified the pswalk.c module -(AcpiPsDeleteParseTree) to improve performance and reduce code -size. (Code provided by Alexey Starikovskiy.) - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total - Debug Version: 165.4K Code, 69.6K Data, 236.0K Total - Current Release: - Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total - Debug Version: 165.4K Code, 69.7K Data, 236.1K Total - - -2) iASL Compiler/Disassembler: - -Fixed a problem with the Return operator with no arguments. Since -the AML grammar for the byte encoding requires an operand for the -Return opcode, the compiler now emits a Return(Zero) for this -case. An ACPI specification update has been written for this -case. - -For tables other than the DSDT, namepath optimization is -automatically disabled. This is because SSDTs can be loaded -anywhere in the namespace, the compiler has no knowledge of where, -and thus cannot optimize namepaths. - -Added "ProcessorObj" to the ObjectTypeKeyword list. This object -type was inadvertently omitted from the ACPI specification, and -will require an update to the spec. - -The source file scan for ASCII characters is now optional (-a). -This change was made because some vendors place non-ascii -characters within comments. However, the scan is simply a brute- -force byte compare to ensure all characters in the file are in the -range 0x00 to 0x7F. - -Fixed a problem with the CondRefOf operator where the compiler was -inappropriately checking for the existence of the target. Since -the point of the operator is to check for the existence of the -target at run-time, the compiler no longer checks for the target -existence. - -Fixed a problem where errors generated from the internal AML -interpreter during constant folding were not handled properly, -causing a fault. - -Fixed a problem with overly aggressive range checking for the -Stall operator. The valid range (max 255) is now only checked if -the operand is of type Integer. All other operand types cannot be -statically checked. - -Fixed a problem where control method references within the RefOf, -DeRefOf, and ObjectType operators were not treated properly. They -are now treated as actual references, not method invocations. - -Fixed and enhanced the "list namespace" option (-ln). This option -was broken a number of releases ago. - -Improved error handling for the Field, IndexField, and BankField -operators. The compiler now cleanly reports and recovers from -errors in the field component (FieldUnit) list. - -Fixed a disassembler problem where the optional ResourceDescriptor -fields TRS and TTP were not always handled correctly. - -Disassembler - Comments in output now use "//" instead of "/*" - ----------------------------------------- -28 February 2005. Summary of changes for version 20050228: - -1) ACPI CA Core Subsystem: - -Fixed a problem where the result of an Index() operator (an object -reference) must increment the reference count on the target object -for the life of the object reference. - -Implemented AML Interpreter and Debugger support for the new ACPI -3.0 Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, -and WordSpace resource descriptors. - -Implemented support in the _OSI method for the ACPI 3.0 "Extended -Address Space Descriptor" string, indicating interpreter support -for the descriptors above. - -Implemented header support for the new ACPI 3.0 FADT flag bits. - -Implemented header support for the new ACPI 3.0 PCI Express bits -for the PM1 status/enable registers. - -Updated header support for the MADT processor local Apic struct -and MADT platform interrupt source struct for new ACPI 3.0 fields. - -Implemented header support for the SRAT and SLIT ACPI tables. - -Implemented the -s switch in AcpiExec to enable the -"InterpreterSlack" flag at runtime. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total - Debug Version: 164.9K Code, 69.2K Data, 234.1K Total - Current Release: - Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total - Debug Version: 165.4K Code, 69.6K Data, 236.0K Total - - -2) iASL Compiler/Disassembler: - -Fixed a problem with the internal 64-bit String-to-integer -conversion with strings less than two characters long. - -Fixed a problem with constant folding where the result of the -Index() operator can not be considered a constant. This means that -Index() cannot be a type3 opcode and this will require an update -to the ACPI specification. - -Disassembler: Implemented support for the TTP, MTP, and TRS -resource descriptor fields. These fields were inadvertently -ignored and not output in the disassembly of the resource -descriptor. - - - ---------------------------------------- -11 February 2005. Summary of changes for version 20050211: - -1) ACPI CA Core Subsystem: - -Implemented ACPI 3.0 support for implicit conversion within the -Match() operator. MatchObjects can now be of type integer, buffer, -or string instead of just type integer. Package elements are -implicitly converted to the type of the MatchObject. This change -aligns the behavior of Match() with the behavior of the other -logical operators (LLess(), etc.) It also requires an errata -change to the ACPI specification as this support was intended for -ACPI 3.0, but was inadvertently omitted. - -Fixed a problem with the internal implicit "to buffer" conversion. -Strings that are converted to buffers will cause buffer truncation -if the string is smaller than the target buffer. Integers that are -converted to buffers will not cause buffer truncation, only zero -extension (both as per the ACPI spec.) The problem was introduced -when code was added to truncate the buffer, but this should not be -performed in all cases, only the string case. - -Fixed a problem with the Buffer and Package operators where the -interpreter would get confused if two such operators were used as -operands to an ASL operator (such as -LLess(Buffer(1){0},Buffer(1){1}). The internal result stack was -not being popped after the execution of these operators, resulting -in an AE_NO_RETURN_VALUE exception. - -Fixed a problem with constructs of the form Store(Index(...),...). -The reference object returned from Index was inadvertently -resolved to an actual value. This problem was introduced in -version 20050114 when the behavior of Store() was modified to -restrict the object types that can be used as the source operand -(to match the ACPI specification.) - -Reduced excessive stack use within the AcpiGetObjectInfo -procedure. - -Added a fix to aclinux.h to allow generation of AcpiExec on Linux. - -Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS -struct. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total - Debug Version: 164.8K Code, 69.2K Data, 234.0K Total - Current Release: - Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total - Debug Version: 164.9K Code, 69.2K Data, 234.1K Total - - -2) iASL Compiler/Disassembler: - -Fixed a code generation problem in the constant folding -optimization code where incorrect code was generated if a constant -was reduced to a buffer object (i.e., a reduced type 5 opcode.) - -Fixed a typechecking problem for the ToBuffer operator. Caused by -an incorrect return type in the internal opcode information table. - ----------------------------------------- -25 January 2005. Summary of changes for version 20050125: - -1) ACPI CA Core Subsystem: - -Fixed a recently introduced problem with the Global Lock where the -underlying semaphore was not created. This problem was introduced -in version 20050114, and caused an AE_AML_NO_OPERAND exception -during an Acquire() operation on _GL. - -The local object cache is now optional, and is disabled by -default. Both AcpiExec and the iASL compiler enable the cache -because they run in user mode and this enhances their performance. -#define ACPI_ENABLE_OBJECT_CACHE to enable the local cache. - -Fixed an issue in the internal function AcpiUtEvaluateObject -concerning the optional "implicit return" support where an error -was returned if no return object was expected, but one was -implicitly returned. AE_OK is now returned in this case and the -implicitly returned object is deleted. AcpiUtEvaluateObject is -only occasionally used, and only to execute reserved methods such -as _STA and _INI where the return type is known up front. - -Fixed a few issues with the internal convert-to-integer code. It -now returns an error if an attempt is made to convert a null -string, a string of only blanks/tabs, or a zero-length buffer. -This affects both implicit conversion and explicit conversion via -the ToInteger() operator. - -The internal debug code in AcpiUtAcquireMutex has been commented -out. It is not needed for normal operation and should increase the -performance of the entire subsystem. The code remains in case it -is needed for debug purposes again. - -The AcpiExec source and makefile are included in the Unix/Linux -package for the first time. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total - Debug Version: 165.4K Code, 69.4K Data, 234.8K Total - Current Release: - Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total - Debug Version: 164.8K Code, 69.2K Data, 234.0K Total - -2) iASL Compiler/Disassembler: - -Switch/Case support: A warning is now issued if the type of the -Switch value cannot be determined at compile time. For example, -Switch(Arg0) will generate the warning, and the type is assumed to -be an integer. As per the ACPI spec, use a construct such as -Switch(ToInteger(Arg0)) to eliminate the warning. - -Switch/Case support: Implemented support for buffer and string -objects as the switch value. This is an ACPI 3.0 feature, now -that LEqual supports buffers and strings. - -Switch/Case support: The emitted code for the LEqual() comparisons -now uses the switch value as the first operand, not the second. -The case value is now the second operand, and this allows the case -value to be implicitly converted to the type of the switch value, -not the other way around. - -Switch/Case support: Temporary variables are now emitted -immediately within the control method, not at the global level. -This means that there are now 36 temps available per-method, not -36 temps per-module as was the case with the earlier -implementation (_T_0 through _T_9 and _T_A through _T_Z.) - ----------------------------------------- -14 January 2005. Summary of changes for version 20050114: - -Added 2005 copyright to all module headers. This affects every -module in the core subsystem, iASL compiler, and the utilities. - -1) ACPI CA Core Subsystem: - -Fixed an issue with the String-to-Buffer conversion code where the -string null terminator was not included in the buffer after -conversion, but there is existing ASL that assumes the string null -terminator is included. This is the root of the -ACPI_AML_BUFFER_LIMIT regression. This problem was introduced in -the previous version when the code was updated to correctly set -the converted buffer size as per the ACPI specification. The ACPI -spec is ambiguous and will be updated to specify that the null -terminator must be included in the converted buffer. This also -affects the ToBuffer() ASL operator. - -Fixed a problem with the Mid() ASL/AML operator where it did not -work correctly on Buffer objects. Newly created sub-buffers were -not being marked as initialized. - - -Fixed a problem in AcpiTbFindTable where incorrect string compares -were performed on the OemId and OemTableId table header fields. -These fields are not null terminated, so strncmp is now used -instead of strcmp. - -Implemented a restriction on the Store() ASL/AML operator to align -the behavior with the ACPI specification. Previously, any object -could be used as the source operand. Now, the only objects that -may be used are Integers, Buffers, Strings, Packages, Object -References, and DDB Handles. If necessary, the original behavior -can be restored by enabling the EnableInterpreterSlack flag. - -Enhanced the optional "implicit return" support to allow an -implicit return value from methods that are invoked externally via -the AcpiEvaluateObject interface. This enables implicit returns -from the _STA and _INI methods, for example. - -Changed the Revision() ASL/AML operator to return the current -version of the AML interpreter, in the YYYYMMDD format. -Previously, it incorrectly returned the supported ACPI version -(This is the function of the _REV method). - -Updated the _REV predefined method to return the currently -supported version of ACPI, now 3. - -Implemented batch mode option for the AcpiExec utility (-b). - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total - Debug Version: 165.3K Code, 69.4K Data, 234.7K Total - Current Release: - Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total - Debug Version: 165.4K Code, 69.4K Data, 234.8K Total - ----------------------------------------- -10 December 2004. Summary of changes for version 20041210: - -ACPI 3.0 support is nearing completion in both the iASL compiler -and the ACPI CA core subsystem. - -1) ACPI CA Core Subsystem: - -Fixed a problem in the ToDecimalString operator where the -resulting string length was incorrectly calculated. The length is -now calculated exactly, eliminating incorrect AE_STRING_LIMIT -exceptions. - -Fixed a problem in the ToHexString operator to allow a maximum 200 -character string to be produced. - -Fixed a problem in the internal string-to-buffer and buffer-to- -buffer copy routine where the length of the resulting buffer was -not truncated to the new size (if the target buffer already -existed). - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total - Debug Version: 164.7K Code, 68.5K Data, 233.2K Total - Current Release: - Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total - Debug Version: 165.3K Code, 69.4K Data, 234.7K Total - - -2) iASL Compiler/Disassembler: - -Implemented the new ACPI 3.0 resource template macros - -DWordSpace, ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, -and WordSpace. Includes support in the disassembler. - -Implemented support for the new (ACPI 3.0) parameter to the -Register macro, AccessSize. - -Fixed a problem where the _HE resource name for the Interrupt -macro was referencing bit 0 instead of bit 1. - -Implemented check for maximum 255 interrupts in the Interrupt -macro. - -Fixed a problem with the predefined resource descriptor names -where incorrect AML code was generated if the offset within the -resource buffer was 0 or 1. The optimizer shortened the AML code -to a single byte opcode but did not update the surrounding package -lengths. - -Changes to the Dma macro: All channels within the channel list -must be in the range 0-7. Maximum 8 channels can be specified. -BusMaster operand is optional (default is BusMaster). - -Implemented check for maximum 7 data bytes for the VendorShort -macro. - -The ReadWrite parameter is now optional for the Memory32 and -similar macros. - ----------------------------------------- -03 December 2004. Summary of changes for version 20041203: - -1) ACPI CA Core Subsystem: - -The low-level field insertion/extraction code (exfldio) has been -completely rewritten to eliminate unnecessary complexity, bugs, -and boundary conditions. - -Fixed a problem in the ToInteger, ToBuffer, ToHexString, and -ToDecimalString operators where the input operand could be -inadvertently deleted if no conversion was necessary (e.g., if the -input to ToInteger was an Integer object.) - -Fixed a problem with the ToDecimalString and ToHexString where an -incorrect exception code was returned if the resulting string -would be > 200 chars. AE_STRING_LIMIT is now returned. - -Fixed a problem with the Concatenate operator where AE_OK was -always returned, even if the operation failed. - -Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > -128 semaphores to be allocated. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total - Debug Version: 165.2K Code, 68.6K Data, 233.8K Total - Current Release: - Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total - Debug Version: 164.7K Code, 68.5K Data, 233.2K Total - - -2) iASL Compiler/Disassembler: - -Fixed typechecking for the ObjectType and SizeOf operators. -Problem was recently introduced in 20041119. - -Fixed a problem with the ToUUID macro where the upper nybble of -each buffer byte was inadvertently set to zero. - ----------------------------------------- -19 November 2004. Summary of changes for version 20041119: - -1) ACPI CA Core Subsystem: - -Fixed a problem in the internal ConvertToInteger routine where new -integers were not truncated to 32 bits for 32-bit ACPI tables. -This routine converts buffers and strings to integers. - -Implemented support to store a value to an Index() on a String -object. This is an ACPI 2.0 feature that had not yet been -implemented. - -Implemented new behavior for storing objects to individual package -elements (via the Index() operator). The previous behavior was to -invoke the implicit conversion rules if an object was already -present at the index. The new behavior is to simply delete any -existing object and directly store the new object. Although the -ACPI specification seems unclear on this subject, other ACPI -implementations behave in this manner. (This is the root of the -AE_BAD_HEX_CONSTANT issue.) - -Modified the RSDP memory scan mechanism to support the extended -checksum for ACPI 2.0 (and above) RSDPs. Note that the search -continues until a valid RSDP signature is found with a valid -checksum. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total - Debug Version: 165.2K Code, 68.6K Data, 233.8K Total - Current Release: - Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total - Debug Version: 165.2K Code, 68.6K Data, 233.8K Total - - -2) iASL Compiler/Disassembler: - -Fixed a missing semicolon in the aslcompiler.y file. - ----------------------------------------- -05 November 2004. Summary of changes for version 20041105: - -1) ACPI CA Core Subsystem: - -Implemented support for FADT revision 2. This was an interim -table (between ACPI 1.0 and ACPI 2.0) that adds support for the -FADT reset register. - -Implemented optional support to allow uninitialized LocalX and -ArgX variables in a control method. The variables are initialized -to an Integer object with a value of zero. This support is -enabled by setting the AcpiGbl_EnableInterpreterSlack flag to -TRUE. - -Implemented support for Integer objects for the SizeOf operator. -Either 4 or 8 is returned, depending on the current integer size -(32-bit or 64-bit, depending on the parent table revision). - -Fixed a problem in the implementation of the SizeOf and ObjectType -operators where the operand was resolved to a value too early, -causing incorrect return values for some objects. - -Fixed some possible memory leaks during exceptional conditions. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total - Debug Version: 164.8K Code, 68.6K Data, 233.4K Total - Current Release: - Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total - Debug Version: 165.2K Code, 68.6K Data, 233.8K Total - - -2) iASL Compiler/Disassembler: - -Implemented support for all ACPI 3.0 reserved names and methods. - -Implemented all ACPI 3.0 grammar elements in the front-end, -including support for semicolons. - -Implemented the ACPI 3.0 Function() and ToUUID() macros - -Fixed a problem in the disassembler where a Scope() operator would -not be emitted properly if the target of the scope was in another -table. - ----------------------------------------- -15 October 2004. Summary of changes for version 20041015: - -Note: ACPI CA is currently undergoing an in-depth and complete -formal evaluation to test/verify the following areas. Other -suggestions are welcome. This will result in an increase in the -frequency of releases and the number of bug fixes in the next few -months. - - Functional tests for all ASL/AML operators - - All implicit/explicit type conversions - - Bit fields and operation regions - - 64-bit math support and 32-bit-only "truncated" math support - - Exceptional conditions, both compiler and interpreter - - Dynamic object deletion and memory leaks - - ACPI 3.0 support when implemented - - External interfaces to the ACPI subsystem - - -1) ACPI CA Core Subsystem: - -Fixed two alignment issues on 64-bit platforms - within debug -statements in AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed -references to the Address field within the non-aligned ACPI -generic address structure. - -Fixed a problem in the Increment and Decrement operators where -incorrect operand resolution could result in the inadvertent -modification of the original integer when the integer is passed -into another method as an argument and the arg is then -incremented/decremented. - -Fixed a problem in the FromBCD operator where the upper 32-bits of -a 64-bit BCD number were truncated during conversion. - -Fixed a problem in the ToDecimal operator where the length of the -resulting string could be set incorrectly too long if the input -operand was a Buffer object. - -Fixed a problem in the Logical operators (LLess, etc.) where a -NULL byte (0) within a buffer would prematurely terminate a -compare between buffer objects. - -Added a check for string overflow (>200 characters as per the ACPI -specification) during the Concatenate operator with two string -operands. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total - Debug Version: 164.6K Code, 68.5K Data, 233.1K Total - Current Release: - Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total - Debug Version: 164.8K Code, 68.6K Data, 233.4K Total - - - -2) iASL Compiler/Disassembler: - -Allow the use of the ObjectType operator on uninitialized Locals -and Args (returns 0 as per the ACPI specification). - -Fixed a problem where the compiler would fault if there was a -syntax error in the FieldName of all of the various CreateXXXField -operators. - -Disallow the use of lower case letters within the EISAID macro, as -per the ACPI specification. All EISAID strings must be of the -form "UUUNNNN" Where U is an uppercase letter and N is a hex -digit. - - ----------------------------------------- -06 October 2004. Summary of changes for version 20041006: - -1) ACPI CA Core Subsystem: - -Implemented support for the ACPI 3.0 Timer operator. This ASL -function implements a 64-bit timer with 100 nanosecond -granularity. - -Defined a new OSL interface, AcpiOsGetTimer. This interface is -used to implement the ACPI 3.0 Timer operator. This allows the -host OS to implement the timer with the best clock available. -Also, it keeps the core subsystem out of the clock handling -business, since the host OS (usually) performs this function. - -Fixed an alignment issue on 64-bit platforms. The -HwLowLevelRead(Write) functions use a 64-bit address which is part -of the packed ACPI Generic Address Structure. Since the structure -is non-aligned, the alignment macros are now used to extract the -address to a local variable before use. - -Fixed a problem where the ToInteger operator assumed all input -strings were hexadecimal. The operator now handles both decimal -strings and hex strings (prefixed with "0x"). - -Fixed a problem where the string length in the string object -created as a result of the internal ConvertToString procedure -could be incorrect. This potentially affected all implicit -conversions and also the ToDecimalString and ToHexString -operators. - -Fixed two problems in the ToString operator. If the length -parameter was zero, an incorrect string object was created and the -value of the input length parameter was inadvertently changed from -zero to Ones. - -Fixed a problem where the optional ResourceSource string in the -ExtendedIRQ resource macro was ignored. - -Simplified the interfaces to the internal division functions, -reducing code size and complexity. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total - Debug Version: 164.5K Code, 68.3K Data, 232.8K Total - Current Release: - Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total - Debug Version: 164.6K Code, 68.5K Data, 233.1K Total - - -2) iASL Compiler/Disassembler: - -Implemented support for the ACPI 3.0 Timer operator. - -Fixed a problem where the Default() operator was inadvertently -ignored in a Switch/Case block. This was a problem in the -translation of the Switch statement to If...Else pairs. - -Added support to allow a standalone Return operator, with no -parentheses (or operands). - -Fixed a problem with code generation for the ElseIf operator where -the translated Else...If parse tree was improperly constructed -leading to the loss of some code. - ----------------------------------------- -22 September 2004. Summary of changes for version 20040922: - -1) ACPI CA Core Subsystem: - -Fixed a problem with the implementation of the LNot() operator -where "Ones" was not returned for the TRUE case. Changed the code -to return Ones instead of (!Arg) which was usually 1. This change -affects iASL constant folding for this operator also. - -Fixed a problem in AcpiUtInitializeBuffer where an existing buffer -was not initialized properly -- Now zero the entire buffer in this -case where the buffer already exists. - -Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 -Milliseconds) to simply (ACPI_INTEGER Milliseconds). This -simplifies all related code considerably. This will require -changes/updates to all OS interface layers (OSLs.) - -Implemented a new external interface, AcpiInstallExceptionHandler, -to allow a system exception handler to be installed. This handler -is invoked upon any run-time exception that occurs during control -method execution. - -Added support for the DSDT in AcpiTbFindTable. This allows the -DataTableRegion() operator to access the local copy of the DSDT. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total - Debug Version: 164.2K Code, 68.2K Data, 232.4K Total - Current Release: - Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total - Debug Version: 164.5K Code, 68.3K Data, 232.8K Total - - -2) iASL Compiler/Disassembler: - -Fixed a problem with constant folding and the LNot operator. LNot -was returning 1 in the TRUE case, not Ones as per the ACPI -specification. This could result in the generation of an incorrect -folded/reduced constant. - -End-Of-File is now allowed within a "//"-style comment. A parse -error no longer occurs if such a comment is at the very end of the -input ASL source file. - -Implemented the "-r" option to override the Revision in the table -header. The initial use of this option will be to simplify the -evaluation of the AML interpreter by allowing a single ASL source -module to be compiled for either 32-bit or 64-bit integers. - - ----------------------------------------- -27 August 2004. Summary of changes for version 20040827: - -1) ACPI CA Core Subsystem: - -- Implemented support for implicit object conversion in the non- -numeric logical operators (LEqual, LGreater, LGreaterEqual, LLess, -LLessEqual, and LNotEqual.) Any combination of -Integers/Strings/Buffers may now be used; the second operand is -implicitly converted on the fly to match the type of the first -operand. For example: - - LEqual (Source1, Source2) - -Source1 and Source2 must each evaluate to an integer, a string, or -a buffer. The data type of Source1 dictates the required type of -Source2. Source2 is implicitly converted if necessary to match the -type of Source1. - -- Updated and corrected the behavior of the string conversion -support. The rules concerning conversion of buffers to strings -(according to the ACPI specification) are as follows: - -ToDecimalString - explicit byte-wise conversion of buffer to -string of decimal values (0-255) separated by commas. ToHexString -- explicit byte-wise conversion of buffer to string of hex values -(0-FF) separated by commas. ToString - explicit byte-wise -conversion of buffer to string. Byte-by-byte copy with no -transform except NULL terminated. Any other implicit buffer-to- -string conversion - byte-wise conversion of buffer to string of -hex values (0-FF) separated by spaces. - -- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. - -- Fixed a problem in AcpiNsGetPathnameLength where the returned -length was one byte too short in the case of a node in the root -scope. This could cause a fault during debug output. - -- Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total - Debug Version: 164.1K Code, 68.3K Data, 232.4K Total - Current Release: - Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total - Debug Version: 164.2K Code, 68.2K Data, 232.4K Total - - -2) iASL Compiler/Disassembler: - -- Fixed a Linux generation error. - - ----------------------------------------- -16 August 2004. Summary of changes for version 20040816: - -1) ACPI CA Core Subsystem: - -Designed and implemented support within the AML interpreter for -the so-called "implicit return". This support returns the result -of the last ASL operation within a control method, in the absence -of an explicit Return() operator. A few machines depend on this -behavior, even though it is not explicitly supported by the ASL -language. It is optional support that can be enabled at runtime -via the AcpiGbl_EnableInterpreterSlack flag. - -Removed support for the PCI_Config address space from the internal -low level hardware interfaces (AcpiHwLowLevelRead and -AcpiHwLowLevelWrite). This support was not used internally, and -would not work correctly anyway because the PCI bus number and -segment number were not supported. There are separate interfaces -for PCI configuration space access because of the unique -interface. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total - Debug Version: 164.1K Code, 68.2K Data, 232.3K Total - Current Release: - Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total - Debug Version: 164.1K Code, 68.3K Data, 232.4K Total - - -2) iASL Compiler/Disassembler: - -Fixed a problem where constants in ASL expressions at the root -level (not within a control method) could be inadvertently -truncated during code generation. This problem was introduced in -the 20040715 release. - - ----------------------------------------- -15 July 2004. Summary of changes for version 20040715: - -1) ACPI CA Core Subsystem: - -Restructured the internal HW GPE interfaces to pass/track the -current state of interrupts (enabled/disabled) in order to avoid -possible deadlock and increase flexibility of the interfaces. - -Implemented a "lexicographical compare" for String and Buffer -objects within the logical operators -- LGreater, LLess, -LGreaterEqual, and LLessEqual -- as per further clarification to -the ACPI specification. Behavior is similar to C library -"strcmp". - -Completed a major reduction in CPU stack use for the -AcpiGetFirmwareTable external function. In the 32-bit non-debug -case, the stack use has been reduced from 168 bytes to 32 bytes. - -Deployed a new run-time configuration flag, -AcpiGbl_EnableInterpreterSlack, whose purpose is to allow the AML -interpreter to forgive certain bad AML constructs. Default -setting is FALSE. - -Implemented the first use of AcpiGbl_EnableInterpreterSlack in the -Field IO support code. If enabled, it allows field access to go -beyond the end of a region definition if the field is within the -region length rounded up to the next access width boundary (a -common coding error.) - -Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and -OSD_EXECUTION_CALLBACK to ACPI_OSD_EXEC_CALLBACK for consistency -with other ACPI symbols. Also, these symbols are lowercased by -the latest version of the AcpiSrc tool. - -The prototypes for the PCI interfaces in acpiosxf.h have been -updated to rename "Register" to simply "Reg" to prevent certain -compilers from complaining. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total - Debug Version: 163.8K Code, 68.2K Data, 232.0K Total - Current Release: - Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total - Debug Version: 164.1K Code, 68.2K Data, 232.3K Total - - -2) iASL Compiler/Disassembler: - -Implemented full support for Package objects within the Case() -operator. Note: The Break() operator is currently not supported -within Case blocks (TermLists) as there is some question about -backward compatibility with ACPI 1.0 interpreters. - - -Fixed a problem where complex terms were not supported properly -within the Switch() operator. - -Eliminated extraneous warning for compiler-emitted reserved names -of the form "_T_x". (Used in Switch/Case operators.) - -Eliminated optimization messages for "_T_x" objects and small -constants within the DefinitionBlock operator. - - ----------------------------------------- -15 June 2004. Summary of changes for version 20040615: - -1) ACPI CA Core Subsystem: - -Implemented support for Buffer and String objects (as per ACPI -2.0) for the following ASL operators: LEqual, LGreater, LLess, -LGreaterEqual, and LLessEqual. - -All directory names in the entire source package are lower case, -as they were in earlier releases. - -Implemented "Disassemble" command in the AML debugger that will -disassemble a single control method. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total - Debug Version: 163.3K Code, 67.2K Data, 230.5K Total - - Current Release: - Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total - Debug Version: 163.8K Code, 68.2K Data, 232.0K Total - - -2) iASL Compiler/Disassembler: - -Implemented support for Buffer and String objects (as per ACPI -2.0) for the following ASL operators: LEqual, LGreater, LLess, -LGreaterEqual, and LLessEqual. - -All directory names in the entire source package are lower case, -as they were in earlier releases. - -Fixed a fault when using the -g or -d options if the -FADT was not found. - -Fixed an issue with the Windows version of the compiler where -later versions of Windows place the FADT in the registry under the -name "FADT" and not "FACP" as earlier versions did. This applies -when using the -g or -d options. The compiler now -looks for both strings as necessary. - -Fixed a problem with compiler namepath optimization where a -namepath within the Scope() operator could not be optimized if the -namepath was a subpath of the current scope path. - ----------------------------------------- -27 May 2004. Summary of changes for version 20040527: - -1) ACPI CA Core Subsystem: - -Completed a new design and implementation for EBDA (Extended BIOS -Data Area) support in the RSDP scan code. The original code -improperly scanned for the EBDA by simply scanning from memory -location 0 to 0x400. The correct method is to first obtain the -EBDA pointer from within the BIOS data area, then scan 1K of -memory starting at the EBDA pointer. There appear to be few if -any machines that place the RSDP in the EBDA, however. - -Integrated a fix for a possible fault during evaluation of -BufferField arguments. Obsolete code that was causing the problem -was removed. - -Found and fixed a problem in the Field Support Code where data -could be corrupted on a bit field read that starts on an aligned -boundary but does not end on an aligned boundary. Merged the -read/write "datum length" calculation code into a common -procedure. - -Rolled in a couple of changes to the FreeBSD-specific header. - - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total - Debug Version: 163.2K Code, 67.2K Data, 230.4K Total - Current Release: - Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total - Debug Version: 163.3K Code, 67.2K Data, 230.5K Total - - -2) iASL Compiler/Disassembler: - -Fixed a generation warning produced by some overly-verbose -compilers for a 64-bit constant. - ----------------------------------------- -14 May 2004. Summary of changes for version 20040514: - -1) ACPI CA Core Subsystem: - -Fixed a problem where hardware GPE enable bits sometimes not set -properly during and after GPE method execution. Result of 04/27 -changes. - -Removed extra "clear all GPEs" when sleeping/waking. - -Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the -single AcpiHwWriteGpeEnableReg. Changed a couple of calls to the -functions above to the new AcpiEv* calls as appropriate. - -ACPI_OS_NAME was removed from the OS-specific headers. The -default name is now "Microsoft Windows NT" for maximum -compatibility. However this can be changed by modifying the -acconfig.h file. - -Allow a single invocation of AcpiInstallNotifyHandler for a -handler that traps both types of notifies (System, Device). Use -ACPI_ALL_NOTIFY flag. - -Run _INI methods on ThermalZone objects. This is against the ACPI -specification, but there is apparently ASL code in the field that -has these _INI methods, and apparently "other" AML interpreters -execute them. - -Performed a full 16/32/64 bit lint that resulted in some small -changes. - -Added a sleep simulation command to the AML debugger to test sleep -code. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total - Debug Version: 162.9K Code, 67.0K Data, 229.9K Total - Current Release: - Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total - Debug Version: 163.2K Code, 67.2K Data, 230.4K Total - ----------------------------------------- -27 April 2004. Summary of changes for version 20040427: - -1) ACPI CA Core Subsystem: - -Completed a major overhaul of the GPE handling within ACPI CA. -There are now three types of GPEs: wake-only, runtime-only, and -combination wake/run. The only GPEs allowed to be combination -wake/run are for button-style devices such as a control-method -power button, control-method sleep button, or a notebook lid -switch. GPEs that have an _Lxx or _Exx method and are not -referenced by any _PRW methods are marked for "runtime" and -hardware enabled. Any GPE that is referenced by a _PRW method is -marked for "wake" (and disabled at runtime). However, at sleep -time, only those GPEs that have been specifically enabled for wake -via the AcpiEnableGpe interface will actually be hardware enabled. - -A new external interface has been added, AcpiSetGpeType(), that is -meant to be used by device drivers to force a GPE to a particular -type. It will be especially useful for the drivers for the button -devices mentioned above. - -Completed restructuring of the ACPI CA initialization sequence so -that default operation region handlers are installed before GPEs -are initialized and the _PRW methods are executed. This will -prevent errors when the _PRW methods attempt to access system -memory or I/O space. - -GPE enable/disable no longer reads the GPE enable register. We -now keep the enable info for runtime and wake separate and in the -GPE_EVENT_INFO. We thus no longer depend on the hardware to -maintain these bits. - -Always clear the wake status and fixed/GPE status bits before -sleep, even for state S5. - -Improved the AML debugger output for displaying the GPE blocks and -their current status. - -Added new strings for the _OSI method, of the form "Windows 2001 -SPx" where x = 0,1,2,3,4. - -Fixed a problem where the physical address was incorrectly -calculated when the Load() operator was used to directly load from -an Operation Region (vs. loading from a Field object.) Also added -check for minimum table length for this case. - -Fix for multiple mutex acquisition. Restore original thread -SyncLevel on mutex release. - -Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for -consistency with the other fields returned. - -Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one -such structure for each GPE in the system, so the size of this -structure is important. - -CPU stack requirement reduction: Cleaned up the method execution -and object evaluation paths so that now a parameter structure is -passed, instead of copying the various method parameters over and -over again. - -In evregion.c: Correctly exit and reenter the interpreter region -if and only if dispatching an operation region request to a user- -installed handler. Do not exit/reenter when dispatching to a -default handler (e.g., default system memory or I/O handlers) - - -Notes for updating drivers for the new GPE support. The following -changes must be made to ACPI-related device drivers that are -attached to one or more GPEs: (This information will be added to -the ACPI CA Programmer Reference.) - -1) AcpiInstallGpeHandler no longer automatically enables the GPE, -you must explicitly call AcpiEnableGpe. -2) There is a new interface called AcpiSetGpeType. This should be -called before enabling the GPE. Also, this interface will -automatically disable the GPE if it is currently enabled. -3) AcpiEnableGpe no longer supports a GPE type flag. - -Specific drivers that must be changed: -1) EC driver: - AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, -AeGpeHandler, NULL); - AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); - AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); - -2) Button Drivers (Power, Lid, Sleep): -Run _PRW method under parent device -If _PRW exists: /* This is a control-method button */ - Extract GPE number and possibly GpeDevice - AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); - AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); - -For all other devices that have _PRWs, we automatically set the -GPE type to ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically -(wake) enabled. This must be done on a selective basis, usually -requiring some kind of user app to allow the user to pick the wake -devices. - - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total - Debug Version: 161.0K Code, 66.3K Data, 227.3K Total - Current Release: - - Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total - Debug Version: 162.9K Code, 67.0K Data, 229.9K Total - - - ----------------------------------------- -02 April 2004. Summary of changes for version 20040402: - -1) ACPI CA Core Subsystem: - -Fixed an interpreter problem where an indirect store through an -ArgX parameter was incorrectly applying the "implicit conversion -rules" during the store. From the ACPI specification: "If the -target is a method local or argument (LocalX or ArgX), no -conversion is performed and the result is stored directly to the -target". The new behavior is to disable implicit conversion -during ALL stores to an ArgX. - -Changed the behavior of the _PRW method scan to ignore any and all -errors returned by a given _PRW. This prevents the scan from -aborting from the failure of any single _PRW. - -Moved the runtime configuration parameters from the global init -procedure to static variables in acglobal.h. This will allow the -host to override the default values easily. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total - Debug Version: 160.8K Code, 66.1K Data, 226.9K Total - Current Release: - Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total - Debug Version: 161.0K Code, 66.3K Data, 227.3K Total - - -2) iASL Compiler/Disassembler: - -iASL now fully disassembles SSDTs. However, External() statements -are not generated automatically for unresolved symbols at this -time. This is a planned feature for future implementation. - -Fixed a scoping problem in the disassembler that occurs when the -type of the target of a Scope() operator is overridden. This -problem caused an incorrectly nested internal namespace to be -constructed. - -Any warnings or errors that are emitted during disassembly are now -commented out automatically so that the resulting file can be -recompiled without any hand editing. - ----------------------------------------- -26 March 2004. Summary of changes for version 20040326: - -1) ACPI CA Core Subsystem: - -Implemented support for "wake" GPEs via interaction between GPEs -and the _PRW methods. Every GPE that is pointed to by one or more -_PRWs is identified as a WAKE GPE and by default will no longer be -enabled at runtime. Previously, we were blindly enabling all GPEs -with a corresponding _Lxx or _Exx method - but most of these turn -out to be WAKE GPEs anyway. We believe this has been the cause of -thousands of "spurious" GPEs on some systems. - -This new GPE behavior is can be reverted to the original behavior -(enable ALL GPEs at runtime) via a runtime flag. - -Fixed a problem where aliased control methods could not access -objects properly. The proper scope within the namespace was not -initialized (transferred to the target of the aliased method) -before executing the target method. - -Fixed a potential race condition on internal object deletion on -the return object in AcpiEvaluateObject. - -Integrated a fix for resource descriptors where both _MEM and _MTP -were being extracted instead of just _MEM. (i.e. bitmask was -incorrectly too wide, 0x0F instead of 0x03.) - -Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, -preventing a fault in some cases. - -Updated Notify() values for debug statements in evmisc.c - -Return proper status from AcpiUtMutexInitialize, not just simply -AE_OK. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - - Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total - Debug Version: 160.3K Code, 66.0K Data, 226.3K Total - Current Release: - Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total - Debug Version: 160.8K Code, 66.1K Data, 226.9K Total - ----------------------------------------- -11 March 2004. Summary of changes for version 20040311: - -1) ACPI CA Core Subsystem: - -Fixed a problem where errors occurring during the parse phase of -control method execution did not abort cleanly. For example, -objects created and installed in the namespace were not deleted. -This caused all subsequent invocations of the method to return the -AE_ALREADY_EXISTS exception. - -Implemented a mechanism to force a control method to "Serialized" -execution if the method attempts to create namespace objects. (The -root of the AE_ALREADY_EXISTS problem.) - -Implemented support for the predefined _OSI "internal" control -method. Initial supported strings are "Linux", "Windows 2000", -"Windows 2001", and "Windows 2001.1", and can be easily upgraded -for new strings as necessary. This feature will allow "other" -operating systems to execute the fully tested, "Windows" code path -through the ASL code - -Global Lock Support: Now allows multiple acquires and releases -with any internal thread. Removed concept of "owning thread" for -this special mutex. - -Fixed two functions that were inappropriately declaring large -objects on the CPU stack: PsParseLoop, NsEvaluateRelative. -Reduces the stack usage during method execution considerably. - -Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where -the S4Bios_f field was incorrectly defined as UINT32 instead of -UINT32_BIT. - -Fixed a problem where AcpiEvGpeDetect would fault if there were no -GPEs defined on the machine. - -Implemented two runtime options: One to force all control method -execution to "Serialized" to mimic Windows behavior, another to -disable _OSI support if it causes problems on a given machine. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total - Debug Version: 158.7K Code, 65.1K Data, 223.8K Total - Current Release: - Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total - Debug Version: 160.3K Code, 66.0K Data, 226.3K Total - -2) iASL Compiler/Disassembler: - -Fixed an array size problem for FreeBSD that would cause the -compiler to fault. - ----------------------------------------- -20 February 2004. Summary of changes for version 20040220: - - -1) ACPI CA Core Subsystem: - -Implemented execution of _SxD methods for Device objects in the -GetObjectInfo interface. - -Fixed calls to _SST method to pass the correct arguments. - -Added a call to _SST on wake to restore to "working" state. - -Check for End-Of-Buffer failure case in the WalkResources -interface. - -Integrated fix for 64-bit alignment issue in acglobal.h by moving -two structures to the beginning of the file. - -After wake, clear GPE status register(s) before enabling GPEs. - -After wake, clear/enable power button. (Perhaps we should -clear/enable all fixed events upon wake.) - -Fixed a couple of possible memory leaks in the Namespace manager. - -Integrated latest acnetbsd.h file. - ----------------------------------------- -11 February 2004. Summary of changes for version 20040211: - - -1) ACPI CA Core Subsystem: - -Completed investigation and implementation of the call-by- -reference mechanism for control method arguments. - -Fixed a problem where a store of an object into an indexed package -could fail if the store occurs within a different method than the -method that created the package. - -Fixed a problem where the ToDecimal operator could return -incorrect results. - -Fixed a problem where the CopyObject operator could fail on some -of the more obscure objects (e.g., Reference objects.) - -Improved the output of the Debug object to display buffer, -package, and index objects. - -Fixed a problem where constructs of the form "RefOf (ArgX)" did -not return the expected result. - -Added permanent ACPI_REPORT_ERROR macros for all instances of the -ACPI_AML_INTERNAL exception. - -Integrated latest version of acfreebsd.h - ----------------------------------------- -16 January 2004. Summary of changes for version 20040116: - -The purpose of this release is primarily to update the copyright -years in each module, thus causing a huge number of diffs. There -are a few small functional changes, however. - -1) ACPI CA Core Subsystem: - -Improved error messages when there is a problem finding one or -more of the required base ACPI tables - -Reintroduced the definition of APIC_HEADER in actbl.h - -Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) - -Removed extraneous reference to NewObj in dsmthdat.c - -2) iASL compiler - -Fixed a problem introduced in December that disabled the correct -disassembly of Resource Templates - - ----------------------------------------- -03 December 2003. Summary of changes for version 20031203: - -1) ACPI CA Core Subsystem: - -Changed the initialization of Operation Regions during subsystem -init to perform two entire walks of the ACPI namespace; The first -to initialize the regions themselves, the second to execute the -_REG methods. This fixed some interdependencies across _REG -methods found on some machines. - -Fixed a problem where a Store(Local0, Local1) could simply update -the object reference count, and not create a new copy of the -object if the Local1 is uninitialized. - -Implemented support for the _SST reserved method during sleep -transitions. - -Implemented support to clear the SLP_TYP and SLP_EN bits when -waking up, this is apparently required by some machines. - -When sleeping, clear the wake status only if SleepState is not S5. - -Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect -pointer arithmetic advanced a string pointer too far. - -Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer -could be returned if the requested table has not been loaded. - -Within the support for IRQ resources, restructured the handling of -the active and edge/level bits. - -Fixed a few problems in AcpiPsxExecute() where memory could be -leaked under certain error conditions. - -Improved error messages for the cases where the ACPI mode could -not be entered. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release (20031029): - Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total - Debug Version: 158.3K Code, 65.0K Data, 223.3K Total - Current Release: - Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total - Debug Version: 158.7K Code, 65.1K Data, 223.8K Total - -2) iASL Compiler/Disassembler: - -Implemented a fix for the iASL disassembler where a bad index was -generated. This was most noticeable on 64-bit platforms - - ----------------------------------------- -29 October 2003. Summary of changes for version 20031029: - -1) ACPI CA Core Subsystem: - - -Fixed a problem where a level-triggered GPE with an associated -_Lxx control method was incorrectly cleared twice. - -Fixed a problem with the Field support code where an access can -occur beyond the end-of-region if the field is non-aligned but -extends to the very end of the parent region (resulted in an -AE_AML_REGION_LIMIT exception.) - -Fixed a problem with ACPI Fixed Events where an RT Clock handler -would not get invoked on an RTC event. The RTC event bitmasks for -the PM1 registers were not being initialized properly. - -Implemented support for executing _STA and _INI methods for -Processor objects. Although this is currently not part of the -ACPI specification, there is existing ASL code that depends on the -init-time execution of these methods. - -Implemented and deployed a GetDescriptorName function to decode -the various types of internal descriptors. Guards against null -descriptors during debug output also. - -Implemented and deployed a GetNodeName function to extract the 4- -character namespace node name. This function simplifies the debug -and error output, as well as guarding against null pointers during -output. - -Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to -simplify the debug and error output of 64-bit integers. This -macro replaces the HIDWORD and LODWORD macros for dumping these -integers. - -Updated the implementation of the Stall() operator to only call -AcpiOsStall(), and also return an error if the operand is larger -than 255. This preserves the required behavior of not -relinquishing the processor, as would happen if AcpiOsSleep() was -called for "long stalls". - -Constructs of the form "Store(LocalX,LocalX)" where LocalX is not -initialized are now treated as NOOPs. - -Cleaned up a handful of warnings during 64-bit generation. - -Fixed a reported error where and incorrect GPE number was passed -to the GPE dispatch handler. This value is only used for error -output, however. Used this opportunity to clean up and streamline -the GPE dispatch code. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The - -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release (20031002): - Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total - Debug Version: 157.9K Code, 64.8K Data, 222.7K Total - Current Release: - Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total - Debug Version: 158.3K Code, 65.0K Data, 223.3K Total - - -2) iASL Compiler/Disassembler: - -Updated the iASL compiler to return an error if the operand to the -Stall() operator is larger than 255. - - ----------------------------------------- -02 October 2003. Summary of changes for version 20031002: - - -1) ACPI CA Core Subsystem: - -Fixed a problem with Index Fields where the index was not -incremented for fields that require multiple writes to the -index/data registers (Fields that are wider than the data -register.) - -Fixed a problem with all Field objects where a write could go -beyond the end-of-field if the field was larger than the access -granularity and therefore required multiple writes to complete the -request. An extra write beyond the end of the field could happen -inadvertently. - -Fixed a problem with Index Fields where a BUFFER_OVERFLOW error -would incorrectly be returned if the width of the Data Register -was larger than the specified field access width. - -Completed fixes for LoadTable() and Unload() and verified their -operation. Implemented full support for the "DdbHandle" object -throughout the ACPI CA subsystem. - -Implemented full support for the MADT and ECDT tables in the ACPI -CA header files. Even though these tables are not directly -consumed by ACPI CA, the header definitions are useful for ACPI -device drivers. - -Integrated resource descriptor fixes posted to the Linux ACPI -list. This included checks for minimum descriptor length, and -support for trailing NULL strings within descriptors that have -optional string elements. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release (20030918): - Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total - Debug Version: 157.3K Code, 64.5K Data, 221.8K Total - Current Release: - Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total - Debug Version: 157.9K Code, 64.8K Data, 222.7K Total - - -2) iASL Compiler: - -Implemented detection of non-ASCII characters within the input -source ASL file. This catches attempts to compile binary (AML) -files early in the compile, with an informative error message. - -Fixed a problem where the disassembler would fault if the output -filename could not be generated or if the output file could not be -opened. - ----------------------------------------- -18 September 2003. Summary of changes for version 20030918: - - -1) ACPI CA Core Subsystem: - -Found and fixed a longstanding problem with the late execution of -the various deferred AML opcodes (such as Operation Regions, -Buffer Fields, Buffers, and Packages). If the name string -specified for the name of the new object placed the object in a -scope other than the current scope, the initialization/execution -of the opcode failed. The solution to this problem was to -implement a mechanism where the late execution of such opcodes -does not attempt to lookup/create the name a second time in an -incorrect scope. This fixes the "region size computed -incorrectly" problem. - -Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a -Global Lock AE_BAD_PARAMETER error. - -Fixed several 64-bit issues with prototypes, casting and data -types. - -Removed duplicate prototype from acdisasm.h - -Fixed an issue involving EC Operation Region Detach (Shaohua Li) - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release: - - Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total - Debug Version: 156.9K Code, 64.2K Data, 221.1K Total - Current Release: - Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total - Debug Version: 157.3K Code, 64.5K Data, 221.8K Total - - -2) Linux: - -Fixed the AcpiOsSleep implementation in osunixxf.c to pass the -correct sleep time in seconds. - ----------------------------------------- -14 July 2003. Summary of changes for version 20030619: - -1) ACPI CA Core Subsystem: - -Parse SSDTs in order discovered, as opposed to reverse order -(Hrvoje Habjanic) - -Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas -Klausner, - Nate Lawson) - - -2) Linux: - -Dynamically allocate SDT list (suggested by Andi Kleen) - -proc function return value cleanups (Andi Kleen) - -Correctly handle NMI watchdog during long stalls (Andrew Morton) - -Make it so acpismp=force works (reported by Andrew Morton) - - ----------------------------------------- -19 June 2003. Summary of changes for version 20030619: - -1) ACPI CA Core Subsystem: - -Fix To/FromBCD, eliminating the need for an arch-specific #define. - -Do not acquire a semaphore in the S5 shutdown path. - -Fix ex_digits_needed for 0. (Takayoshi Kochi) - -Fix sleep/stall code reversal. (Andi Kleen) - -Revert a change having to do with control method calling -semantics. - -2) Linux: - -acpiphp update (Takayoshi Kochi) - -Export acpi_disabled for sonypi (Stelian Pop) - -Mention acpismp=force in config help - -Re-add acpitable.c and acpismp=force. This improves backwards - -compatibility and also cleans up the code to a significant degree. - -Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) - ----------------------------------------- -22 May 2003. Summary of changes for version 20030522: - -1) ACPI CA Core Subsystem: - -Found and fixed a reported problem where an AE_NOT_FOUND error -occurred occasionally during _BST evaluation. This turned out to -be an Owner ID allocation issue where a called method did not get -a new ID assigned to it. Eventually, (after 64k calls), the Owner -ID UINT16 would wraparound so that the ID would be the same as the -caller's and the called method would delete the caller's -namespace. - -Implemented extended error reporting for control methods that are -aborted due to a run-time exception. Output includes the exact -AML instruction that caused the method abort, a dump of the method -locals and arguments at the time of the abort, and a trace of all -nested control method calls. - -Modified the interpreter to allow the creation of buffers of zero -length from the AML code. Implemented new code to ensure that no -attempt is made to actually allocate a memory buffer (of length -zero) - instead, a simple buffer object with a NULL buffer pointer -and length zero is created. A warning is no longer issued when -the AML attempts to create a zero-length buffer. - -Implemented a workaround for the "leading asterisk issue" in -_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading -asterisk is automatically removed if present in any HID, UID, or -CID strings. The iASL compiler will still flag this asterisk as -an error, however. - -Implemented full support for _CID methods that return a package of -multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface -now additionally returns a device _CID list if present. This -required a change to the external interface in order to pass an -ACPI_BUFFER object as a parameter since the _CID list is of -variable length. - -Fixed a problem with the new AE_SAME_HANDLER exception where -handler initialization code did not know about this exception. - -Code and Data Size: Current and previous core subsystem library -sizes are shown below. These are the code and data sizes for the -acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and -these values do not include any ACPI driver or OSPM code. The -debug version of the code includes the debug output trace -mechanism and has a much larger code and data size. Note that -these values will vary depending on the efficiency of the compiler -and the compiler options used during generation. - - Previous Release (20030509): - Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total - Debug Version: 156.1K Code, 63.9K Data, 220.0K Total - Current Release: - Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total - Debug Version: 156.9K Code, 64.2K Data, 221.1K Total - - -2) Linux: - -Fixed a bug in which we would reinitialize the ACPI interrupt -after it was already working, thus disabling all ACPI and the IRQs -for any other device sharing the interrupt. (Thanks to Stian -Jordet) - -Toshiba driver update (John Belmonte) - -Return only 0 or 1 for our interrupt handler status (Andrew -Morton) - - -3) iASL Compiler: - -Fixed a reported problem where multiple (nested) ElseIf() -statements were not handled correctly by the compiler, resulting -in incorrect warnings and incorrect AML code. This was a problem -in both the ASL parser and the code generator. - - -4) Documentation: - -Added changes to existing interfaces, new exception codes, and new -text concerning reference count object management versus garbage -collection. - ----------------------------------------- -09 May 2003. Summary of changes for version 20030509. - - -1) ACPI CA Core Subsystem: - -Changed the subsystem initialization sequence to hold off -installation of address space handlers until the hardware has been -initialized and the system has entered ACPI mode. This is because -the installation of space handlers can cause _REG methods to be -run. Previously, the _REG methods could potentially be run before -ACPI mode was enabled. - -Fixed some memory leak issues related to address space handler and -notify handler installation. There were some problems with the -reference count mechanism caused by the fact that the handler -objects are shared across several namespace objects. - -Fixed a reported problem where reference counts within the -namespace were not properly updated when named objects created by -method execution were deleted. - -Fixed a reported problem where multiple SSDTs caused a deletion -issue during subsystem termination. Restructured the table data -structures to simplify the linked lists and the related code. - -Fixed a problem where the table ID associated with secondary -tables (SSDTs) was not being propagated into the namespace objects -created by those tables. This would only present a problem for -tables that are unloaded at run-time, however. - -Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE -type as the length parameter (instead of UINT32). - -Solved a long-standing problem where an ALREADY_EXISTS error -appears on various systems. This problem could happen when there -are multiple PCI_Config operation regions under a single PCI root -bus. This doesn't happen very frequently, but there are some -systems that do this in the ASL. - -Fixed a reported problem where the internal DeleteNode function -was incorrectly handling the case where a namespace node was the -first in the parent's child list, and had additional peers (not -the only child, but first in the list of children.) - -Code and Data Size: Current core subsystem library sizes are shown -below. These are the code and data sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 compiler, and these -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a much larger code and data size. Note that these values will -vary depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release - Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total - Debug Version: 156.1K Code, 63.6K Data, 219.7K Total - Current Release: - Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total - Debug Version: 156.1K Code, 63.9K Data, 220.0K Total - - -2) Linux: - -Allow ":" in OS override string (Ducrot Bruno) - -Kobject fix (Greg KH) - - -3 iASL Compiler/Disassembler: - -Fixed a problem in the generation of the C source code files (AML -is emitted in C source statements for BIOS inclusion) where the -Ascii dump that appears within a C comment at the end of each line -could cause a compile time error if the AML sequence happens to -have an open comment or close comment sequence embedded. - - ----------------------------------------- -24 April 2003. Summary of changes for version 20030424. - - -1) ACPI CA Core Subsystem: - -Support for big-endian systems has been implemented. Most of the -support has been invisibly added behind big-endian versions of the -ACPI_MOVE_* macros. - -Fixed a problem in AcpiHwDisableGpeBlock() and -AcpiHwClearGpeBlock() where an incorrect offset was passed to the -low level hardware write routine. The offset parameter was -actually eliminated from the low level read/write routines because -they had become obsolete. - -Fixed a problem where a handler object was deleted twice during -the removal of a fixed event handler. - - -2) Linux: - -A fix for SMP systems with link devices was contributed by - -Compaq's Dan Zink. - -(2.5) Return whether we handled the interrupt in our IRQ handler. -(Linux ISRs no longer return void, so we can propagate the handler -return value from the ACPI CA core back to the OS.) - - - -3) Documentation: - -The ACPI CA Programmer Reference has been updated to reflect new -interfaces and changes to existing interfaces. - ----------------------------------------- -28 March 2003. Summary of changes for version 20030328. - -1) ACPI CA Core Subsystem: - -The GPE Block Device support has been completed. New interfaces -are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event -interfaces (enable, disable, clear, getstatus) have been split -into separate interfaces for Fixed Events and General Purpose -Events (GPEs) in order to support GPE Block Devices properly. - -Fixed a problem where the error message "Failed to acquire -semaphore" would appear during operations on the embedded -controller (EC). - -Code and Data Size: Current core subsystem library sizes are shown -below. These are the code and data sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 compiler, and these -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a much larger code and data size. Note that these values will -vary depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release - Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total - Debug Version: 154.0K Code, 63.4K Data, 217.4K Total - Current Release: - Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total - Debug Version: 156.1K Code, 63.6K Data, 219.7K Total - - ----------------------------------------- -28 February 2003. Summary of changes for version 20030228. - - -1) ACPI CA Core Subsystem: - -The GPE handling and dispatch code has been completely overhauled -in preparation for support of GPE Block Devices (ID ACPI0006). -This affects internal data structures and code only; there should -be no differences visible externally. One new file has been -added, evgpeblk.c - -The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only -fields that are used to determine the GPE block lengths. The -REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address -structures are ignored. This is per the ACPI specification but it -isn't very clear. The full 256 Block 0/1 GPEs are now supported -(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). - -In the SCI interrupt handler, removed the read of the PM1_CONTROL -register to look at the SCI_EN bit. On some machines, this read -causes an SMI event and greatly slows down SCI events. (This may -in fact be the cause of slow battery status response on some -systems.) - -Fixed a problem where a store of a NULL string to a package object -could cause the premature deletion of the object. This was seen -during execution of the battery _BIF method on some systems, -resulting in no battery data being returned. - -Added AcpiWalkResources interface to simplify parsing of resource -lists. - -Code and Data Size: Current core subsystem library sizes are shown -below. These are the code and data sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 compiler, and these -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a much larger code and data size. Note that these values will -vary depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release - Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total - Debug Version: 153.0K Code, 62.9K Data, 215.9K Total - Current Release: - Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total - Debug Version: 154.0K Code, 63.4K Data, 217.4K Total - - -2) Linux - -S3 fixes (Ole Rohne) - -Update ACPI PHP driver with to use new acpi_walk_resource API -(Bjorn Helgaas) - -Add S4BIOS support (Pavel Machek) - -Map in entire table before performing checksum (John Stultz) - -Expand the mem= cmdline to allow the specification of reserved and -ACPI DATA blocks (Pavel Machek) - -Never use ACPI on VISWS - -Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) - -Revert a change that allowed P_BLK lengths to be 4 or 5. This is -causing us to think that some systems support C2 when they really -don't. - -Do not count processor objects for non-present CPUs (Thanks to -Dominik Brodowski) - - -3) iASL Compiler: - -Fixed a problem where ASL include files could not be found and -opened. - -Added support for the _PDC reserved name. - - ----------------------------------------- -22 January 2003. Summary of changes for version 20030122. - - -1) ACPI CA Core Subsystem: - -Added a check for constructs of the form: Store (Local0, Local0) -where Local0 is not initialized. Apparently, some BIOS -programmers believe that this is a NOOP. Since this store doesn't -do anything anyway, the new prototype behavior will ignore this -error. This is a case where we can relax the strict checking in -the interpreter in the name of compatibility. - - -2) Linux - -The AcpiSrc Source Conversion Utility has been released with the -Linux package for the first time. This is the utility that is -used to convert the ACPI CA base source code to the Linux version. - -(Both) Handle P_BLK lengths shorter than 6 more gracefully - -(Both) Move more headers to include/acpi, and delete an unused -header. - -(Both) Move drivers/acpi/include directory to include/acpi - -(Both) Boot functions don't use cmdline, so don't pass it around - -(Both) Remove include of unused header (Adrian Bunk) - -(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since -the -former now also includes the latter, acpiphp.h only needs the one, -now. - -(2.5) Make it possible to select method of bios restoring after S3 -resume. [=> no more ugly ifdefs] (Pavel Machek) - -(2.5) Make proc write interfaces work (Pavel Machek) - -(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) - -(2.5) Break out ACPI Perf code into its own module, under cpufreq -(Dominik Brodowski) - -(2.4) S4BIOS support (Ducrot Bruno) - -(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio -Visinoni) - - -3) iASL Compiler: - -Added support to disassemble SSDT and PSDTs. - -Implemented support to obtain SSDTs from the Windows registry if -available. - - ----------------------------------------- -09 January 2003. Summary of changes for version 20030109. - -1) ACPI CA Core Subsystem: - -Changed the behavior of the internal Buffer-to-String conversion -function. The current ACPI specification states that the contents -of the buffer are "converted to a string of two-character -hexadecimal numbers, each separated by a space". Unfortunately, -this definition is not backwards compatible with existing ACPI 1.0 -implementations (although the behavior was not defined in the ACPI -1.0 specification). The new behavior simply copies data from the -buffer to the string until a null character is found or the end of -the buffer is reached. The new String object is always null -terminated. This problem was seen during the generation of _BIF -battery data where incorrect strings were returned for battery -type, etc. This will also require an errata to the ACPI -specification. - -Renamed all instances of NATIVE_UINT and NATIVE_INT to -ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. - -Copyright in all module headers (both Linux and non-Linux) has be -updated to 2003. - -Code and Data Size: Current core subsystem library sizes are shown -below. These are the code and data sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 compiler, and these -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a much larger code and data size. Note that these values will -vary depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release - Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total - Debug Version: 153.0K Code, 62.9K Data, 215.9K Total - Current Release: - Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total - Debug Version: 153.0K Code, 62.9K Data, 215.9K Total - - -2) Linux - -Fixed an oops on module insertion/removal (Matthew Tippett) - -(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) - -(2.5) Replace pr_debug (Randy Dunlap) - -(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) - -(Both) Eliminate spawning of thread from timer callback, in favor -of schedule_work() - -(Both) Show Lid status in /proc (Zdenek OGAR Skalak) - -(Both) Added define for Fixed Function HW region (Matthew Wilcox) - -(Both) Add missing statics to button.c (Pavel Machek) - -Several changes have been made to the source code translation -utility that generates the Linux Code in order to make the code -more "Linux-like": - -All typedefs on structs and unions have been removed in keeping -with the Linux coding style. - -Removed the non-Linux SourceSafe module revision number from each -module header. - -Completed major overhaul of symbols to be lowercased for linux. -Doubled the number of symbols that are lowercased. - -Fixed a problem where identifiers within procedure headers and -within quotes were not fully lower cased (they were left with a -starting capital.) - -Some C macros whose only purpose is to allow the generation of 16- -bit code are now completely removed in the Linux code, increasing -readability and maintainability. - ----------------------------------------- - -12 December 2002. Summary of changes for version 20021212. - - -1) ACPI CA Core Subsystem: - -Fixed a problem where the creation of a zero-length AML Buffer -would cause a fault. - -Fixed a problem where a Buffer object that pointed to a static AML -buffer (in an ACPI table) could inadvertently be deleted, causing -memory corruption. - -Fixed a problem where a user buffer (passed in to the external -ACPI CA interfaces) could be overwritten if the buffer was too -small to complete the operation, causing memory corruption. - -Fixed a problem in the Buffer-to-String conversion code where a -string of length one was always returned, regardless of the size -of the input Buffer object. - -Removed the NATIVE_CHAR data type across the entire source due to -lack of need and lack of consistent use. - -Code and Data Size: Current core subsystem library sizes are shown -below. These are the code and data sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 compiler, and these -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a much larger code and data size. Note that these values will -vary depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release - Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total - Debug Version: 152.7K Code, 62.7K Data, 215.4K Total - Current Release: - Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total - Debug Version: 153.0K Code, 62.9K Data, 215.9K Total - - ----------------------------------------- -05 December 2002. Summary of changes for version 20021205. - -1) ACPI CA Core Subsystem: - -Fixed a problem where a store to a String or Buffer object could -cause corruption of the DSDT if the object type being stored was -the same as the target object type and the length of the object -being stored was equal to or smaller than the original (existing) -target object. This was seen to cause corruption of battery _BIF -buffers if the _BIF method modified the buffer on the fly. - -Fixed a problem where an internal error was generated if a control -method invocation was used in an OperationRegion, Buffer, or -Package declaration. This was caused by the deferred parsing of -the control method and thus the deferred creation of the internal -method object. The solution to this problem was to create the -internal method object at the moment the method is encountered in -the first pass - so that subsequent references to the method will -able to obtain the required parameter count and thus properly -parse the method invocation. This problem presented itself as an -AE_AML_INTERNAL during the pass 1 parse phase during table load. - -Fixed a problem where the internal String object copy routine did -not always allocate sufficient memory for the target String object -and caused memory corruption. This problem was seen to cause -"Allocation already present in list!" errors as memory allocation -became corrupted. - -Implemented a new function for the evaluation of namespace objects -that allows the specification of the allowable return object -types. This simplifies a lot of code that checks for a return -object of one or more specific objects returned from the -evaluation (such as _STA, etc.) This may become and external -function if it would be useful to ACPI-related drivers. - -Completed another round of prefixing #defines with "ACPI_" for -clarity. - -Completed additional code restructuring to allow more modular -linking for iASL compiler and AcpiExec. Several files were split -creating new files. New files: nsparse.c dsinit.c evgpe.c - -Implemented an abort mechanism to terminate an executing control -method via the AML debugger. This feature is useful for debugging -control methods that depend (wait) for specific hardware -responses. - -Code and Data Size: Current core subsystem library sizes are shown -below. These are the code and data sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 compiler, and these -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a much larger code and data size. Note that these values will -vary depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release - Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total - Debug Version: 152.9K Code, 63.3K Data, 216.2K Total - Current Release: - Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total - Debug Version: 152.7K Code, 62.7K Data, 215.4K Total - - -2) iASL Compiler/Disassembler - -Fixed a compiler code generation problem for "Interrupt" Resource -Descriptors. If specified in the ASL, the optional "Resource -Source Index" and "Resource Source" fields were not inserted into -the correct location within the AML resource descriptor, creating -an invalid descriptor. - -Fixed a disassembler problem for "Interrupt" resource descriptors. -The optional "Resource Source Index" and "Resource Source" fields -were ignored. - - ----------------------------------------- -22 November 2002. Summary of changes for version 20021122. - - -1) ACPI CA Core Subsystem: - -Fixed a reported problem where an object stored to a Method Local -or Arg was not copied to a new object during the store - the -object pointer was simply copied to the Local/Arg. This caused -all subsequent operations on the Local/Arg to also affect the -original source of the store operation. - -Fixed a problem where a store operation to a Method Local or Arg -was not completed properly if the Local/Arg contained a reference -(from RefOf) to a named field. The general-purpose store-to- -namespace-node code is now used so that this case is handled -automatically. - -Fixed a problem where the internal object copy routine would cause -a protection fault if the object being copied was a Package and -contained either 1) a NULL package element or 2) a nested sub- -package. - -Fixed a problem with the GPE initialization that resulted from an -ambiguity in the ACPI specification. One section of the -specification states that both the address and length of the GPE -block must be zero if the block is not supported. Another section -implies that only the address need be zero if the block is not -supported. The code has been changed so that both the address and -the length must be non-zero to indicate a valid GPE block (i.e., -if either the address or the length is zero, the GPE block is -invalid.) - -Code and Data Size: Current core subsystem library sizes are shown -below. These are the code and data sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 compiler, and these -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a much larger code and data size. Note that these values will -vary depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release - Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total - Debug Version: 152.7K Code, 63.2K Data, 215.5K Total - Current Release: - Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total - Debug Version: 152.9K Code, 63.3K Data, 216.2K Total - - -2) Linux - -Cleaned up EC driver. Exported an external EC read/write -interface. By going through this, other drivers (most notably -sonypi) will be able to serialize access to the EC. - - -3) iASL Compiler/Disassembler - -Implemented support to optionally generate include files for both -ASM and C (the -i switch). This simplifies BIOS development by -automatically creating include files that contain external -declarations for the symbols that are created within the - -(optionally generated) ASM and C AML source files. - - ----------------------------------------- -15 November 2002. Summary of changes for version 20021115. - -1) ACPI CA Core Subsystem: - -Fixed a memory leak problem where an error during resolution of - -method arguments during a method invocation from another method -failed to cleanup properly by deleting all successfully resolved -argument objects. - -Fixed a problem where the target of the Index() operator was not -correctly constructed if the source object was a package. This -problem has not been detected because the use of a target operand -with Index() is very rare. - -Fixed a problem with the Index() operator where an attempt was -made to delete the operand objects twice. - -Fixed a problem where an attempt was made to delete an operand -twice during execution of the CondRefOf() operator if the target -did not exist. - -Implemented the first of perhaps several internal create object -functions that create and initialize a specific object type. This -consolidates duplicated code wherever the object is created, thus -shrinking the size of the subsystem. - -Implemented improved debug/error messages for errors that occur -during nested method invocations. All executing method pathnames -are displayed (with the error) as the call stack is unwound - thus -simplifying debug. - -Fixed a problem introduced in the 10/02 release that caused -premature deletion of a buffer object if a buffer was used as an -ASL operand where an integer operand is required (Thus causing an -implicit object conversion from Buffer to Integer.) The change in -the 10/02 release was attempting to fix a memory leak (albeit -incorrectly.) - -Code and Data Size: Current core subsystem library sizes are shown -below. These are the code and data sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 compiler, and these -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a much larger code and data size. Note that these values will -vary depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release - Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total - Debug Version: 153.1K Code, 63.3K Data, 216.4K Total - Current Release: - Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total - Debug Version: 152.7K Code, 63.2K Data, 215.5K Total - - -2) Linux - -Changed the implementation of the ACPI semaphores to use down() -instead of down_interruptable(). It is important that the -execution of ACPI control methods not be interrupted by signals. -Methods must run to completion, or the system may be left in an -unknown/unstable state. - -Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. -(Shawn Starr) - - -3) iASL Compiler/Disassembler - - -Changed the default location of output files. All output files -are now placed in the current directory by default instead of in -the directory of the source file. This change may affect some -existing makefiles, but it brings the behavior of the compiler in -line with other similar tools. The location of the output files -can be overridden with the -p command line switch. - - ----------------------------------------- -11 November 2002. Summary of changes for version 20021111. - - -0) ACPI Specification 2.0B is released and is now available at: -http://www.acpi.info/index.html - - -1) ACPI CA Core Subsystem: - -Implemented support for the ACPI 2.0 SMBus Operation Regions. -This includes the early detection and handoff of the request to -the SMBus region handler (avoiding all of the complex field -support code), and support for the bidirectional return packet -from an SMBus write operation. This paves the way for the -development of SMBus drivers in each host operating system. - -Fixed a problem where the semaphore WAIT_FOREVER constant was -defined as 32 bits, but must be 16 bits according to the ACPI -specification. This had the side effect of causing ASL -Mutex/Event timeouts even though the ASL code requested a wait -forever. Changed all internal references to the ACPI timeout -parameter to 16 bits to prevent future problems. Changed the name -of WAIT_FOREVER to ACPI_WAIT_FOREVER. - -Code and Data Size: Current core subsystem library sizes are shown -below. These are the code and data sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 compiler, and these -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a much larger code and data size. Note that these values will -vary depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release - Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total - Debug Version: 152.3K Code, 63.0K Data, 215.3K Total - Current Release: - Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total - Debug Version: 153.1K Code, 63.3K Data, 216.4K Total - - -2) Linux - -Module loading/unloading fixes (John Cagle) - - -3) iASL Compiler/Disassembler - -Added support for the SMBBlockProcessCall keyword (ACPI 2.0) - -Implemented support for the disassembly of all SMBus protocol -keywords (SMBQuick, SMBWord, etc.) - ----------------------------------------- -01 November 2002. Summary of changes for version 20021101. - - -1) ACPI CA Core Subsystem: - -Fixed a problem where platforms that have a GPE1 block but no GPE0 -block were not handled correctly. This resulted in a "GPE -overlap" error message. GPE0 is no longer required. - -Removed code added in the previous release that inserted nodes -into the namespace in alphabetical order. This caused some side- -effects on various machines. The root cause of the problem is -still under investigation since in theory, the internal ordering -of the namespace nodes should not matter. - - -Enhanced error reporting for the case where a named object is not -found during control method execution. The full ACPI namepath -(name reference) of the object that was not found is displayed in -this case. - -Note: as a result of the overhaul of the namespace object types in -the previous release, the namespace nodes for the predefined -scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE -instead of ACPI_TYPE_ANY. This simplifies the namespace -management code but may affect code that walks the namespace tree -looking for specific object types. - -Code and Data Size: Current core subsystem library sizes are shown -below. These are the code and data sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 compiler, and these -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a much larger code and data size. Note that these values will -vary depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release - Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total - Debug Version: 151.7K Code, 62.4K Data, 214.1K Total - Current Release: - Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total - Debug Version: 152.3K Code, 63.0K Data, 215.3K Total - - -2) Linux - -Fixed a problem introduced in the previous release where the -Processor and Thermal objects were not recognized and installed in -/proc. This was related to the scope type change described above. - - -3) iASL Compiler/Disassembler - -Implemented the -g option to get all of the required ACPI tables -from the registry and save them to files (Windows version of the -compiler only.) The required tables are the FADT, FACS, and DSDT. - -Added ACPI table checksum validation during table disassembly in -order to catch corrupted tables. - - ----------------------------------------- -22 October 2002. Summary of changes for version 20021022. - -1) ACPI CA Core Subsystem: - -Implemented a restriction on the Scope operator that the target -must already exist in the namespace at the time the operator is -encountered (during table load or method execution). In other -words, forward references are not allowed and Scope() cannot -create a new object. This changes the previous behavior where the -interpreter would create the name if not found. This new behavior -correctly enables the search-to-root algorithm during namespace -lookup of the target name. Because of this upsearch, this fixes -the known Compaq _SB_.OKEC problem and makes both the AML -interpreter and iASL compiler compatible with other ACPI -implementations. - -Completed a major overhaul of the internal ACPI object types for -the ACPI Namespace and the associated operand objects. Many of -these types had become obsolete with the introduction of the two- -pass namespace load. This cleanup simplifies the code and makes -the entire namespace load mechanism much clearer and easier to -understand. - -Improved debug output for tracking scope opening/closing to help -diagnose scoping issues. The old scope name as well as the new -scope name are displayed. Also improved error messages for -problems with ASL Mutex objects and error messages for GPE -problems. - -Cleaned up the namespace dump code, removed obsolete code. - -All string output (for all namespace/object dumps) now uses the -common ACPI string output procedure which handles escapes properly -and does not emit non-printable characters. - -Fixed some issues with constants in the 64-bit version of the -local C library (utclib.c) - - -2) Linux - -EC Driver: No longer attempts to acquire the Global Lock at -interrupt level. - - -3) iASL Compiler/Disassembler - -Implemented ACPI 2.0B grammar change that disallows all Type 1 and -2 opcodes outside of a control method. This means that the -"executable" operators (versus the "namespace" operators) cannot -be used at the table level; they can only be used within a control -method. - -Implemented the restriction on the Scope() operator where the -target must already exist in the namespace at the time the -operator is encountered (during ASL compilation). In other words, -forward references are not allowed and Scope() cannot create a new -object. This makes the iASL compiler compatible with other ACPI -implementations and makes the Scope() implementation adhere to the -ACPI specification. - -Fixed a problem where namepath optimization for the Alias operator -was optimizing the wrong path (of the two namepaths.) This caused -a "Missing alias link" error message. - -Fixed a problem where an "unknown reserved name" warning could be -incorrectly generated for names like "_SB" when the trailing -underscore is not used in the original ASL. - -Fixed a problem where the reserved name check did not handle -NamePaths with multiple NameSegs correctly. The first nameseg of -the NamePath was examined instead of the last NameSeg. - - ----------------------------------------- - -02 October 2002. Summary of changes for this release. - - -1) ACPI CA Core Subsystem version 20021002: - -Fixed a problem where a store/copy of a string to an existing -string did not always set the string length properly in the String -object. - -Fixed a reported problem with the ToString operator where the -behavior was identical to the ToHexString operator instead of just -simply converting a raw buffer to a string data type. - -Fixed a problem where CopyObject and the other "explicit" -conversion operators were not updating the internal namespace node -type as part of the store operation. - -Fixed a memory leak during implicit source operand conversion -where the original object was not deleted if it was converted to a -new object of a different type. - -Enhanced error messages for all problems associated with namespace -lookups. Common procedure generates and prints the lookup name as -well as the formatted status. - -Completed implementation of a new design for the Alias support -within the namespace. The existing design did not handle the case -where a new object was assigned to one of the two names due to the -use of an explicit conversion operator, resulting in the two names -pointing to two different objects. The new design simply points -the Alias name to the original name node - not to the object. -This results in a level of indirection that must be handled in the -name resolution mechanism. - -Code and Data Size: Current core subsystem library sizes are shown -below. These are the code and data sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 compiler, and these -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a larger code and data size. Note that these values will vary -depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release - Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total - Debug Version: 150.0K Code, 61.7K Data, 211.7K Total - Current Release: - Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total - Debug Version: 151.7K Code, 62.4K Data, 214.1K Total - - -2) Linux - -Initialize thermal driver's timer before it is used. (Knut -Neumann) - -Allow handling negative celsius values. (Kochi Takayoshi) - -Fix thermal management and make trip points. R/W (Pavel Machek) - -Fix /proc/acpi/sleep. (P. Christeas) - -IA64 fixes. (David Mosberger) - -Fix reversed logic in blacklist code. (Sergio Monteiro Basto) - -Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik -Brodowski) - - -3) iASL Compiler/Disassembler - -Clarified some warning/error messages. - - ----------------------------------------- -18 September 2002. Summary of changes for this release. - - -1) ACPI CA Core Subsystem version 20020918: - -Fixed a reported problem with reference chaining (via the Index() -and RefOf() operators) in the ObjectType() and SizeOf() operators. -The definition of these operators includes the dereferencing of -all chained references to return information on the base object. - -Fixed a problem with stores to indexed package elements - the -existing code would not complete the store if an "implicit -conversion" was not performed. In other words, if the existing -object (package element) was to be replaced completely, the code -didn't handle this case. - -Relaxed typechecking on the ASL "Scope" operator to allow the -target name to refer to an object of type Integer, String, or -Buffer, in addition to the scoping object types (Device, -predefined Scopes, Processor, PowerResource, and ThermalZone.) -This allows existing AML code that has workarounds for a bug in -Windows to function properly. A warning is issued, however. This -affects both the AML interpreter and the iASL compiler. Below is -an example of this type of ASL code: - - Name(DEB,0x00) - Scope(DEB) - { - -Fixed some reported problems with 64-bit integer support in the -local implementation of C library functions (clib.c) - - -2) Linux - -Use ACPI fix map region instead of IOAPIC region, since it is -undefined in non-SMP. - -Ensure that the SCI has the proper polarity and trigger, even on -systems that do not have an interrupt override entry in the MADT. - -2.5 big driver reorganization (Pat Mochel) - -Use early table mapping code from acpitable.c (Andi Kleen) - -New blacklist entries (Andi Kleen) - -Blacklist improvements. Split blacklist code out into a separate -file. Move checking the blacklist to very early. Previously, we -would use ACPI tables, and then halfway through init, check the -blacklist -- too late. Now, it's early enough to completely fall- -back to non-ACPI. - - -3) iASL Compiler/Disassembler version 20020918: - -Fixed a problem where the typechecking code didn't know that an -alias could point to a method. In other words, aliases were not -being dereferenced during typechecking. - - ----------------------------------------- -29 August 2002. Summary of changes for this release. - -1) ACPI CA Core Subsystem Version 20020829: - -If the target of a Scope() operator already exists, it must be an -object type that actually opens a scope -- such as a Device, -Method, Scope, etc. This is a fatal runtime error. Similar error -check has been added to the iASL compiler also. - -Tightened up the namespace load to disallow multiple names in the -same scope. This previously was allowed if both objects were of -the same type. (i.e., a lookup was the same as entering a new -name). - - -2) Linux - -Ensure that the ACPI interrupt has the proper trigger and -polarity. - -local_irq_disable is extraneous. (Matthew Wilcox) - -Make "acpi=off" actually do what it says, and not use the ACPI -interpreter *or* the tables. - -Added arch-neutral support for parsing SLIT and SRAT tables (Kochi -Takayoshi) - - -3) iASL Compiler/Disassembler Version 20020829: - -Implemented namepath optimization for name declarations. For -example, a declaration like "Method (\_SB_.ABCD)" would get -optimized to "Method (ABCD)" if the declaration is within the -\_SB_ scope. This optimization is in addition to the named -reference path optimization first released in the previous -version. This would seem to complete all possible optimizations -for namepaths within the ASL/AML. - -If the target of a Scope() operator already exists, it must be an -object type that actually opens a scope -- such as a Device, -Method, Scope, etc. - -Implemented a check and warning for unreachable code in the same -block below a Return() statement. - -Fixed a problem where the listing file was not generated if the -compiler aborted if the maximum error count was exceeded (200). - -Fixed a problem where the typechecking of method return values was -broken. This includes the check for a return value when the -method is invoked as a TermArg (a return value is expected.) - -Fixed a reported problem where EOF conditions during a quoted -string or comment caused a fault. - - ----------------------------------------- -15 August 2002. Summary of changes for this release. - -1) ACPI CA Core Subsystem Version 20020815: - -Fixed a reported problem where a Store to a method argument that -contains a reference did not perform the indirect store correctly. -This problem was created during the conversion to the new -reference object model - the indirect store to a method argument -code was not updated to reflect the new model. - -Reworked the ACPI mode change code to better conform to ACPI 2.0, -handle corner cases, and improve code legibility (Kochi Takayoshi) - -Fixed a problem with the pathname parsing for the carat (^) -prefix. The heavy use of the carat operator by the new namepath -optimization in the iASL compiler uncovered a problem with the AML -interpreter handling of this prefix. In the case where one or -more carats precede a single nameseg, the nameseg was treated as -standalone and the search rule (to root) was inadvertently -applied. This could cause both the iASL compiler and the -interpreter to find the wrong object or to miss the error that -should occur if the object does not exist at that exact pathname. - -Found and fixed the problem where the HP Pavilion DSDT would not -load. This was a relatively minor tweak to the table loading code -(a problem caused by the unexpected encounter with a method -invocation not within a control method), but it does not solve the -overall issue of the execution of AML code at the table level. -This investigation is still ongoing. - -Code and Data Size: Current core subsystem library sizes are shown -below. These are the code and data sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 compiler, and these -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a larger code and data size. Note that these values will vary -depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release - Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total - Debug Version: 149.4K Code, 61.6K Data, 211.0K Total - Current Release: - Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total - Debug Version: 150.0K Code, 61.7K Data, 211.7K Total - - -2) Linux - -Remove redundant slab.h include (Brad Hards) - -Fix several bugs in thermal.c (Herbert Nachtnebel) - -Make CONFIG_ACPI_BOOT work properly (Pavel Machek) - -Change acpi_system_suspend to use updated irq functions (Pavel -Machek) - -Export acpi_get_firmware_table (Matthew Wilcox) - -Use proper root proc entry for ACPI (Kochi Takayoshi) - -Fix early-boot table parsing (Bjorn Helgaas) - - -3) iASL Compiler/Disassembler - -Reworked the compiler options to make them more consistent and to -use two-letter options where appropriate. We were running out of -sensible letters. This may break some makefiles, so check the -current options list by invoking the compiler with no parameters. - -Completed the design and implementation of the ASL namepath -optimization option for the compiler. This option optimizes all -references to named objects to the shortest possible path. The -first attempt tries to utilize a single nameseg (4 characters) and -the "search-to-root" algorithm used by the interpreter. If that -cannot be used (because either the name is not in the search path -or there is a conflict with another object with the same name), -the pathname is optimized using the carat prefix (usually a -shorter string than specifying the entire path from the root.) - -Implemented support to obtain the DSDT from the Windows registry -(when the disassembly option is specified with no input file). -Added this code as the implementation for AcpiOsTableOverride in -the Windows OSL. Migrated the 16-bit code (used in the AcpiDump -utility) to scan memory for the DSDT to the AcpiOsTableOverride -function in the DOS OSL to make the disassembler truly OS -independent. - -Implemented a new option to disassemble and compile in one step. -When used without an input filename, this option will grab the -DSDT from the local machine, disassemble it, and compile it in one -step. - -Added a warning message for invalid escapes (a backslash followed -by any character other than the allowable escapes). This catches -the quoted string error "\_SB_" (which should be "\\_SB_" ). - -Also, there are numerous instances in the ACPI specification where -this error occurs. - -Added a compiler option to disable all optimizations. This is -basically the "compatibility mode" because by using this option, -the AML code will come out exactly the same as other ASL -compilers. - -Added error messages for incorrectly ordered dependent resource -functions. This includes: missing EndDependentFn macro at end of -dependent resource list, nested dependent function macros (both -start and end), and missing StartDependentFn macro. These are -common errors that should be caught at compile time. - -Implemented _OSI support for the disassembler and compiler. _OSI -must be included in the namespace for proper disassembly (because -the disassembler must know the number of arguments.) - -Added an "optimization" message type that is optional (off by -default). This message is used for all optimizations - including -constant folding, integer optimization, and namepath optimization. - ----------------------------------------- -25 July 2002. Summary of changes for this release. - - -1) ACPI CA Core Subsystem Version 20020725: - -The AML Disassembler has been enhanced to produce compilable ASL -code and has been integrated into the iASL compiler (see below) as -well as the single-step disassembly for the AML debugger and the -disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, -resource templates and macros are fully supported. The -disassembler has been tested on over 30 different AML files, -producing identical AML when the resulting disassembled ASL file -is recompiled with the same ASL compiler. - -Modified the Resource Manager to allow zero interrupts and zero -dma channels during the GetCurrentResources call. This was -causing problems on some platforms. - -Added the AcpiOsRedirectOutput interface to the OSL to simplify -output redirection for the AcpiOsPrintf and AcpiOsVprintf -interfaces. - -Code and Data Size: Current core subsystem library sizes are shown -below. These are the code and data sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 compiler, and these -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a larger code and data size. Note that these values will vary -depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release - Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total - Debug Version: 142.9K Code, 58.7K Data, 201.6K Total - Current Release: - Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total - Debug Version: 149.4K Code, 61.6K Data, 211.0K Total - - -2) Linux - -Fixed a panic in the EC driver (Dominik Brodowski) - -Implemented checksum of the R/XSDT itself during Linux table scan -(Richard Schaal) - - -3) iASL compiler - -The AML disassembler is integrated into the compiler. The "-d" -option invokes the disassembler to completely disassemble an -input AML file, producing as output a text ASL file with the -extension ".dsl" (to avoid name collisions with existing .asl -source files.) A future enhancement will allow the disassembler -to obtain the BIOS DSDT from the registry under Windows. - -Fixed a problem with the VendorShort and VendorLong resource -descriptors where an invalid AML sequence was created. - -Implemented a fix for BufferData term in the ASL parser. It was -inadvertently defined twice, allowing invalid syntax to pass and -causing reduction conflicts. - -Fixed a problem where the Ones opcode could get converted to a -value of zero if "Ones" was used where a byte, word or dword value -was expected. The 64-bit value is now truncated to the correct -size with the correct value. - - - ----------------------------------------- -02 July 2002. Summary of changes for this release. - - -1) ACPI CA Core Subsystem Version 20020702: - -The Table Manager code has been restructured to add several new -features. Tables that are not required by the core subsystem -(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer -validated in any way and are returned from AcpiGetFirmwareTable if -requested. The AcpiOsTableOverride interface is now called for -each table that is loaded by the subsystem in order to allow the -host to override any table it chooses. Previously, only the DSDT -could be overridden. Added one new files, tbrsdt.c and -tbgetall.c. - -Fixed a problem with the conversion of internal package objects to -external objects (when a package is returned from a control -method.) The return buffer length was set to zero instead of the -proper length of the package object. - -Fixed a reported problem with the use of the RefOf and DeRefOf -operators when passing reference arguments to control methods. A -new type of Reference object is used internally for references -produced by the RefOf operator. - -Added additional error messages in the Resource Manager to explain -AE_BAD_DATA errors when they occur during resource parsing. - -Split the AcpiEnableSubsystem into two primitives to enable a -finer granularity initialization sequence. These two calls should -be called in this order: AcpiEnableSubsystem (flags), -AcpiInitializeObjects (flags). The flags parameter remains the -same. - - -2) Linux - -Updated the ACPI utilities module to understand the new style of -fully resolved package objects that are now returned from the core -subsystem. This eliminates errors of the form: - - ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] - acpi_utils-0430 [145] acpi_evaluate_reference: - Invalid element in package (not a device reference) - -The method evaluation utility uses the new buffer allocation -scheme instead of calling AcpiEvaluate Object twice. - -Added support for ECDT. This allows the use of the Embedded - -Controller before the namespace has been fully initialized, which -is necessary for ACPI 2.0 support, and for some laptops to -initialize properly. (Laptops using ECDT are still rare, so only -limited testing was performed of the added functionality.) - -Fixed memory leaks in the EC driver. - -Eliminated a brittle code structure in acpi_bus_init(). - -Eliminated the acpi_evaluate() helper function in utils.c. It is -no longer needed since acpi_evaluate_object can optionally -allocate memory for the return object. - -Implemented fix for keyboard hang when getting battery readings on -some systems (Stephen White) - -PCI IRQ routing update (Dominik Brodowski) - -Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC -support - ----------------------------------------- -11 June 2002. Summary of changes for this release. - - -1) ACPI CA Core Subsystem Version 20020611: - -Fixed a reported problem where constants such as Zero and One -appearing within _PRT packages were not handled correctly within -the resource manager code. Originally reported against the ASL -compiler because the code generator now optimizes integers to -their minimal AML representation (i.e. AML constants if possible.) -The _PRT code now handles all AML constant opcodes correctly -(Zero, One, Ones, Revision). - -Fixed a problem with the Concatenate operator in the AML -interpreter where a buffer result object was incorrectly marked as -not fully evaluated, causing a run-time error of AE_AML_INTERNAL. - -All package sub-objects are now fully resolved before they are -returned from the external ACPI interfaces. This means that name -strings are resolved to object handles, and constant operators -(Zero, One, Ones, Revision) are resolved to Integers. - -Implemented immediate resolution of the AML Constant opcodes -(Zero, One, Ones, Revision) to Integer objects upon detection -within the AML stream. This has simplified and reduced the -generated code size of the subsystem by eliminating about 10 -switch statements for these constants (which previously were -contained in Reference objects.) The complicating issues are that -the Zero opcode is used as a "placeholder" for unspecified -optional target operands and stores to constants are defined to be -no-ops. - -Code and Data Size: Current core subsystem library sizes are shown -below. These are the code and data sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 compiler, and these -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a larger code and data size. Note that these values will vary -depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release - Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total - Debug Version: 143.8K Code, 58.8K Data, 202.6K Total - Current Release: - Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total - Debug Version: 142.9K Code, 58.7K Data, 201.6K Total - - -2) Linux - - -Added preliminary support for obtaining _TRA data for PCI root -bridges (Bjorn Helgaas). - - -3) iASL Compiler Version X2046: - -Fixed a problem where the "_DDN" reserved name was defined to be a -control method with one argument. There are no arguments, and -_DDN does not have to be a control method. - -Fixed a problem with the Linux version of the compiler where the -source lines printed with error messages were the wrong lines. -This turned out to be the "LF versus CR/LF" difference between -Windows and Unix. This appears to be the longstanding issue -concerning listing output and error messages. - -Fixed a problem with the Linux version of compiler where opcode -names within error messages were wrong. This was caused by a -slight difference in the output of the Flex tool on Linux versus -Windows. - -Fixed a problem with the Linux compiler where the hex output files -contained some garbage data caused by an internal buffer overrun. - - ----------------------------------------- -17 May 2002. Summary of changes for this release. - - -1) ACPI CA Core Subsystem Version 20020517: - -Implemented a workaround to an BIOS bug discovered on the HP -OmniBook where the FADT revision number and the table size are -inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new -behavior is to fallback to using only the ACPI 1.0 fields of the -FADT if the table is too small to be a ACPI 2.0 table as claimed -by the revision number. Although this is a BIOS bug, this is a -case where the workaround is simple enough and with no side -effects, so it seemed prudent to add it. A warning message is -issued, however. - -Implemented minimum size checks for the fixed-length ACPI tables - -- the FADT and FACS, as well as consistency checks between the -revision number and the table size. - -Fixed a reported problem in the table override support where the -new table pointer was incorrectly treated as a physical address -instead of a logical address. - -Eliminated the use of the AE_AML_ERROR exception and replaced it -with more descriptive codes. - -Fixed a problem where an exception would occur if an ASL Field was -defined with no named Field Units underneath it (used by some -index fields). - -Code and Data Size: Current core subsystem library sizes are shown -below. These are the code and data sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 compiler, and these -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a larger code and data size. Note that these values will vary -depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release - Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total - Debug Version: 142.9K Code, 58.4K Data, 201.3K Total - Current Release: - Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total - Debug Version: 143.8K Code, 58.8K Data, 202.6K Total - - - -2) Linux - -Much work done on ACPI init (MADT and PCI IRQ routing support). -(Paul D. and Dominik Brodowski) - -Fix PCI IRQ-related panic on boot (Sam Revitch) - -Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) - -Fix "MHz" typo (Dominik Brodowski) - -Fix RTC year 2000 issue (Dominik Brodowski) - -Preclude multiple button proc entries (Eric Brunet) - -Moved arch-specific code out of include/platform/aclinux.h - -3) iASL Compiler Version X2044: - -Implemented error checking for the string used in the EISAID macro -(Usually used in the definition of the _HID object.) The code now -strictly enforces the PnP format - exactly 7 characters, 3 -uppercase letters and 4 hex digits. - -If a raw string is used in the definition of the _HID object -(instead of the EISAID macro), the string must contain all -alphanumeric characters (e.g., "*PNP0011" is not allowed because -of the asterisk.) - -Implemented checking for invalid use of ACPI reserved names for -most of the name creation operators (Name, Device, Event, Mutex, -OperationRegion, PowerResource, Processor, and ThermalZone.) -Previously, this check was only performed for control methods. - -Implemented an additional check on the Name operator to emit an -error if a reserved name that must be implemented in ASL as a -control method is used. We know that a reserved name must be a -method if it is defined with input arguments. - -The warning emitted when a namespace object reference is not found -during the cross reference phase has been changed into an error. -The "External" directive should be used for names defined in other -modules. - - -4) Tools and Utilities - -The 16-bit tools (adump16 and aexec16) have been regenerated and -tested. - -Fixed a problem with the output of both acpidump and adump16 where -the indentation of closing parentheses and brackets was not - -aligned properly with the parent block. - - ----------------------------------------- -03 May 2002. Summary of changes for this release. - - -1) ACPI CA Core Subsystem Version 20020503: - -Added support a new OSL interface that allows the host operating - -system software to override the DSDT found in the firmware - -AcpiOsTableOverride. With this interface, the OSL can examine the -version of the firmware DSDT and replace it with a different one -if desired. - -Added new external interfaces for accessing ACPI registers from -device drivers and other system software - AcpiGetRegister and -AcpiSetRegister. This was simply an externalization of the -existing AcpiHwBitRegister interfaces. - -Fixed a regression introduced in the previous build where the -ASL/AML CreateField operator always returned an error, -"destination must be a NS Node". - -Extended the maximum time (before failure) to successfully enable -ACPI mode to 3 seconds. - -Code and Data Size: Current core subsystem library sizes are shown -below. These are the code and data sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 compiler, and these -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a larger code and data size. Note that these values will vary -depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release - Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total - Debug Version: 142.4K Code, 58.3K Data, 200.7K Total - Current Release: - Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total - Debug Version: 142.9K Code, 58.4K Data, 201.3K Total - - -2) Linux - -Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- -free. While 3 out of 4 of our in-house systems work fine, the last -one still hangs when testing the LAPIC timer. - -Renamed many files in 2.5 kernel release to omit "acpi_" from the -name. - -Added warning on boot for Presario 711FR. - -Sleep improvements (Pavel Machek) - -ACPI can now be built without CONFIG_PCI enabled. - -IA64: Fixed memory map functions (JI Lee) - - -3) iASL Compiler Version X2043: - -Added support to allow the compiler to be integrated into the MS -VC++ development environment for one-button compilation of single -files or entire projects -- with error-to-source-line mapping. - -Implemented support for compile-time constant folding for the -Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 -specification. This allows the ASL writer to use expressions -instead of Integer/Buffer/String constants in terms that must -evaluate to constants at compile time and will also simplify the -emitted AML in any such sub-expressions that can be folded -(evaluated at compile-time.) This increases the size of the -compiler significantly because a portion of the ACPI CA AML -interpreter is included within the compiler in order to pre- -evaluate constant expressions. - - -Fixed a problem with the "Unicode" ASL macro that caused the -compiler to fault. (This macro is used in conjunction with the -_STR reserved name.) - -Implemented an AML opcode optimization to use the Zero, One, and -Ones opcodes where possible to further reduce the size of integer -constants and thus reduce the overall size of the generated AML -code. - -Implemented error checking for new reserved terms for ACPI version -2.0A. - -Implemented the -qr option to display the current list of ACPI -reserved names known to the compiler. - -Implemented the -qc option to display the current list of ASL -operators that are allowed within constant expressions and can -therefore be folded at compile time if the operands are constants. - - -4) Documentation - -Updated the Programmer's Reference for new interfaces, data types, -and memory allocation model options. - -Updated the iASL Compiler User Reference to apply new format and -add information about new features and options. - ----------------------------------------- -19 April 2002. Summary of changes for this release. - -1) ACPI CA Core Subsystem Version 20020419: - -The source code base for the Core Subsystem has been completely -cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit -versions. The Lint option files used are included in the -/acpi/generate/lint directory. - -Implemented enhanced status/error checking across the entire -Hardware manager subsystem. Any hardware errors (reported from -the OSL) are now bubbled up and will abort a running control -method. - - -Fixed a problem where the per-ACPI-table integer width (32 or 64) -was stored only with control method nodes, causing a fault when -non-control method code was executed during table loading. The -solution implemented uses a global variable to indicate table -width across the entire ACPI subsystem. Therefore, ACPI CA does -not support mixed integer widths across different ACPI tables -(DSDT, SSDT). - -Fixed a problem where NULL extended fields (X fields) in an ACPI -2.0 ACPI FADT caused the table load to fail. Although the -existing ACPI specification is a bit fuzzy on this topic, the new -behavior is to fall back on a ACPI 1.0 field if the corresponding -ACPI 2.0 X field is zero (even though the table revision indicates -a full ACPI 2.0 table.) The ACPI specification will be updated to -clarify this issue. - -Fixed a problem with the SystemMemory operation region handler -where memory was always accessed byte-wise even if the AML- -specified access width was larger than a byte. This caused -problems on systems with memory-mapped I/O. Memory is now -accessed with the width specified. On systems that do not support -non-aligned transfers, a check is made to guarantee proper address -alignment before proceeding in order to avoid an AML-caused -alignment fault within the kernel. - - -Fixed a problem with the ExtendedIrq resource where only one byte -of the 4-byte Irq field was extracted. - -Fixed the AcpiExDigitsNeeded() procedure to support _UID. This -function was out of date and required a rewrite. - -Code and Data Size: Current core subsystem library sizes are shown -below. These are the code and data sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 compiler, and these -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a larger code and data size. Note that these values will vary -depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release - Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total - Debug Version: 139.8K Code, 57.4K Data, 197.2K Total - Current Release: - Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total - Debug Version: 142.4K Code, 58.3K Data, 200.7K Total - - -2) Linux - -PCI IRQ routing fixes (Dominik Brodowski) - - -3) iASL Compiler Version X2042: - -Implemented an additional compile-time error check for a field -unit whose size + minimum access width would cause a run-time -access beyond the end-of-region. Previously, only the field size -itself was checked. - -The Core subsystem and iASL compiler now share a common parse -object in preparation for compile-time evaluation of the type -3/4/5 ASL operators. - - ----------------------------------------- -Summary of changes for this release: 03_29_02 - -1) ACPI CA Core Subsystem Version 20020329: - -Implemented support for late evaluation of TermArg operands to -Buffer and Package objects. This allows complex expressions to be -used in the declarations of these object types. - -Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI -1.0, if the field was larger than 32 bits, it was returned as a -buffer - otherwise it was returned as an integer. In ACPI 2.0, -the field is returned as a buffer only if the field is larger than -64 bits. The TableRevision is now considered when making this -conversion to avoid incompatibility with existing ASL code. - -Implemented logical addressing for AcpiOsGetRootPointer. This -allows an RSDP with either a logical or physical address. With -this support, the host OS can now override all ACPI tables with -one logical RSDP. Includes implementation of "typed" pointer -support to allow a common data type for both physical and logical -pointers internally. This required a change to the -AcpiOsGetRootPointer interface. - -Implemented the use of ACPI 2.0 Generic Address Structures for all -GPE, Fixed Event, and PM Timer I/O. This allows the use of memory -mapped I/O for these ACPI features. - -Initialization now ignores not only non-required tables (All -tables other than the FADT, FACS, DSDT, and SSDTs), but also does -not validate the table headers of unrecognized tables. - -Fixed a problem where a notify handler could only be -installed/removed on an object of type Device. All "notify" - -objects are now supported -- Devices, Processor, Power, and -Thermal. - -Removed most verbosity from the ACPI_DB_INFO debug level. Only -critical information is returned when this debug level is enabled. - -Code and Data Size: Current core subsystem library sizes are shown -below. These are the code and data sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 compiler, and these -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a larger code and data size. Note that these values will vary -depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release - Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total - Debug Version: 138.0K Code, 56.6K Data, 194.6K Total - Current Release: - Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total - Debug Version: 139.8K Code, 57.4K Data, 197.2K Total - - -2) Linux: - -The processor driver (acpi_processor.c) now fully supports ACPI -2.0-based processor performance control (e.g. Intel(R) -SpeedStep(TM) technology) Note that older laptops that only have -the Intel "applet" interface are not supported through this. The -'limit' and 'performance' interface (/proc) are fully functional. -[Note that basic policy for controlling performance state -transitions will be included in the next version of ospmd.] The -idle handler was modified to more aggressively use C2, and PIIX4 -errata handling underwent a complete overhaul (big thanks to -Dominik Brodowski). - -Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- -based devices in the ACPI namespace are now dynamically bound -(associated) with their PCI counterparts (e.g. PCI1->01:00.0). -This allows, among other things, ACPI to resolve bus numbers for -subordinate PCI bridges. - -Enhanced PCI IRQ routing to get the proper bus number for _PRT -entries defined underneath PCI bridges. - -Added IBM 600E to bad bios list due to invalid _ADR value for -PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. - -In the process of adding full MADT support (e.g. IOAPIC) for IA32 -(acpi.c, mpparse.c) -- stay tuned. - -Added back visual differentiation between fixed-feature and -control-method buttons in dmesg. Buttons are also subtyped (e.g. -button/power/PWRF) to simplify button identification. - -We no longer use -Wno-unused when compiling debug. Please ignore -any "_THIS_MODULE defined but not used" messages. - -Can now shut down the system using "magic sysrq" key. - - -3) iASL Compiler version 2041: - -Fixed a problem where conversion errors for hex/octal/decimal -constants were not reported. - -Implemented a fix for the General Register template Address field. -This field was 8 bits when it should be 64. - -Fixed a problem where errors/warnings were no longer being emitted -within the listing output file. - -Implemented the ACPI 2.0A restriction on ACPI Table Signatures to -exactly 4 characters, alphanumeric only. - - - - ----------------------------------------- -Summary of changes for this release: 03_08_02 - - -1) ACPI CA Core Subsystem Version 20020308: - -Fixed a problem with AML Fields where the use of the "AccessAny" -keyword could cause an interpreter error due to attempting to read -or write beyond the end of the parent Operation Region. - -Fixed a problem in the SystemMemory Operation Region handler where -an attempt was made to map memory beyond the end of the region. -This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" -errors on some Linux systems. - -Fixed a problem where the interpreter/namespace "search to root" -algorithm was not functioning for some object types. Relaxed the -internal restriction on the search to allow upsearches for all -external object types as well as most internal types. - - -2) Linux: - -We now use safe_halt() macro versus individual calls to sti | hlt. - -Writing to the processor limit interface should now work. "echo 1" -will increase the limit, 2 will decrease, and 0 will reset to the - -default. - - -3) ASL compiler: - -Fixed segfault on Linux version. - - ----------------------------------------- -Summary of changes for this release: 02_25_02 - -1) ACPI CA Core Subsystem: - - -Fixed a problem where the GPE bit masks were not initialized -properly, causing erratic GPE behavior. - -Implemented limited support for multiple calling conventions. The -code can be generated with either the VPL (variable parameter -list, or "C") convention, or the FPL (fixed parameter list, or -"Pascal") convention. The core subsystem is about 3.4% smaller -when generated with FPL. - - -2) Linux - -Re-add some /proc/acpi/event functionality that was lost during -the rewrite - -Resolved issue with /proc events for fixed-feature buttons showing -up as the system device. - -Fixed checks on C2/C3 latencies to be inclusive of maximum values. - -Replaced AE_ERRORs in acpi_osl.c with more specific error codes. - -Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" - -Fixed limit interface & usage to fix bugs with passive cooling -hysterisis. - -Restructured PRT support. - - ----------------------------------------- -Summary of changes for this label: 02_14_02 - - -1) ACPI CA Core Subsystem: - -Implemented support in AcpiLoadTable to allow loading of FACS and -FADT tables. - -Suport for the now-obsolete interim 0.71 64-bit ACPI tables has -been removed. All 64-bit platforms should be migrated to the ACPI -2.0 tables. The actbl71.h header has been removed from the source -tree. - -All C macros defined within the subsystem have been prefixed with -"ACPI_" to avoid collision with other system include files. - -Removed the return value for the two AcpiOsPrint interfaces, since -it is never used and causes lint warnings for ignoring the return -value. - -Added error checking to all internal mutex acquire and release -calls. Although a failure from one of these interfaces is -probably a fatal system error, these checks will cause the -immediate abort of the currently executing method or interface. - -Fixed a problem where the AcpiSetCurrentResources interface could -fault. This was a side effect of the deployment of the new memory -allocation model. - -Fixed a couple of problems with the Global Lock support introduced -in the last major build. The "common" (1.0/2.0) internal FACS was -being overwritten with the FACS signature and clobbering the -Global Lock pointer. Also, the actual firmware FACS was being -unmapped after construction of the "common" FACS, preventing -access to the actual Global Lock field within it. The "common" -internal FACS is no longer installed as an actual ACPI table; it -is used simply as a global. - -Code and Data Size: Current core subsystem library sizes are shown -below. These are the code and data sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 compiler, and these -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a larger code and data size. Note that these values will vary -depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release (02_07_01) - Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total - Debug Version: 136.9K Code, 56.4K Data, 193.3K Total - Current Release: - Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total - Debug Version: 138.0K Code, 56.6K Data, 194.6K Total - - -2) Linux - -Updated Linux-specific code for core macro and OSL interface -changes described above. - -Improved /proc/acpi/event. It now can be opened only once and has -proper poll functionality. - -Fixed and restructured power management (acpi_bus). - -Only create /proc "view by type" when devices of that class exist. - -Fixed "charging/discharging" bug (and others) in acpi_battery. - -Improved thermal zone code. - - -3) ASL Compiler, version X2039: - - -Implemented the new compiler restriction on ASL String hex/octal -escapes to non-null, ASCII values. An error results if an invalid -value is used. (This will require an ACPI 2.0 specification -change.) - -AML object labels that are output to the optional C and ASM source -are now prefixed with both the ACPI table signature and table ID -to help guarantee uniqueness within a large BIOS project. - - ----------------------------------------- -Summary of changes for this label: 02_01_02 - -1) ACPI CA Core Subsystem: - -ACPI 2.0 support is complete in the entire Core Subsystem and the -ASL compiler. All new ACPI 2.0 operators are implemented and all -other changes for ACPI 2.0 support are complete. With -simultaneous code and data optimizations throughout the subsystem, -ACPI 2.0 support has been implemented with almost no additional -cost in terms of code and data size. - -Implemented a new mechanism for allocation of return buffers. If -the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will -be allocated on behalf of the caller. Consolidated all return -buffer validation and allocation to a common procedure. Return -buffers will be allocated via the primary OSL allocation interface -since it appears that a separate pool is not needed by most users. -If a separate pool is required for these buffers, the caller can -still use the original mechanism and pre-allocate the buffer(s). - -Implemented support for string operands within the DerefOf -operator. - -Restructured the Hardware and Event managers to be table driven, -simplifying the source code and reducing the amount of generated -code. - -Split the common read/write low-level ACPI register bitfield -procedure into a separate read and write, simplifying the code -considerably. - -Obsoleted the AcpiOsCallocate OSL interface. This interface was -used only a handful of times and didn't have enough critical mass -for a separate interface. Replaced with a common calloc procedure -in the core. - -Fixed a reported problem with the GPE number mapping mechanism -that allows GPE1 numbers to be non-contiguous with GPE0. -Reorganized the GPE information and shrunk a large array that was -originally large enough to hold info for all possible GPEs (256) -to simply large enough to hold all GPEs up to the largest GPE -number on the machine. - -Fixed a reported problem with resource structure alignment on 64- -bit platforms. - -Changed the AcpiEnableEvent and AcpiDisableEvent external -interfaces to not require any flags for the common case of -enabling/disabling a GPE. - -Implemented support to allow a "Notify" on a Processor object. - -Most TBDs in comments within the source code have been resolved -and eliminated. - - -Fixed a problem in the interpreter where a standalone parent -prefix (^) was not handled correctly in the interpreter and -debugger. - -Removed obsolete and unnecessary GPE save/restore code. - -Implemented Field support in the ASL Load operator. This allows a -table to be loaded from a named field, in addition to loading a -table directly from an Operation Region. - -Implemented timeout and handle support in the external Global Lock -interfaces. - -Fixed a problem in the AcpiDump utility where pathnames were no -longer being generated correctly during the dump of named objects. - -Modified the AML debugger to give a full display of if/while -predicates instead of just one AML opcode at a time. (The -predicate can have several nested ASL statements.) The old method -was confusing during single stepping. - -Code and Data Size: Current core subsystem library sizes are shown -below. These are the code and data sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 compiler, and these -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a larger code and data size. Note that these values will vary -depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release (12_18_01) - Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total - Debug Version: 138.3K Code, 55.9K Data, 194.2K Total - Current Release: - Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total - Debug Version: 136.9K Code, 56.4K Data, 193.3K Total - -2) Linux - - Implemented fix for PIIX reverse throttling errata (Processor -driver) - -Added new Limit interface (Processor and Thermal drivers) - -New thermal policy (Thermal driver) - -Many updates to /proc - -Battery "low" event support (Battery driver) - -Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) - -IA32 - IA64 initialization unification, no longer experimental - -Menuconfig options redesigned - -3) ASL Compiler, version X2037: - -Implemented several new output features to simplify integration of -AML code into firmware: 1) Output the AML in C source code with -labels for each named ASL object. The original ASL source code -is interleaved as C comments. 2) Output the AML in ASM source code -with labels and interleaved ASL source. 3) Output the AML in -raw hex table form, in either C or ASM. - -Implemented support for optional string parameters to the -LoadTable operator. - -Completed support for embedded escape sequences within string -literals. The compiler now supports all single character escapes -as well as the Octal and Hex escapes. Note: the insertion of a -null byte into a string literal (via the hex/octal escape) causes -the string to be immediately terminated. A warning is issued. - -Fixed a problem where incorrect AML was generated for the case -where an ASL namepath consists of a single parent prefix ( - -) with no trailing name segments. - -The compiler has been successfully generated with a 64-bit C -compiler. - - - - ----------------------------------------- -Summary of changes for this label: 12_18_01 - -1) Linux - -Enhanced blacklist with reason and severity fields. Any table's -signature may now be used to identify a blacklisted system. - -Call _PIC control method to inform the firmware which interrupt -model the OS is using. Turn on any disabled link devices. - -Cleaned up busmgr /proc error handling (Andreas Dilger) - - 2) ACPI CA Core Subsystem: - -Implemented ACPI 2.0 semantics for the "Break" operator (Exit from -while loop) - -Completed implementation of the ACPI 2.0 "Continue", -"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" -operators. All new ACPI 2.0 operators are now implemented in both -the ASL compiler and the AML interpreter. The only remaining ACPI -2.0 task is support for the String data type in the DerefOf -operator. Fixed a problem with AcquireMutex where the status code -was lost if the caller had to actually wait for the mutex. - -Increased the maximum ASL Field size from 64K bits to 4G bits. - -Completed implementation of the external Global Lock interfaces -- -AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and -Handler parameters were added. - -Completed another pass at removing warnings and issues when -compiling with 64-bit compilers. The code now compiles cleanly -with the Intel 64-bit C/C++ compiler. Most notably, the pointer -add and subtract (diff) macros have changed considerably. - - -Created and deployed a new ACPI_SIZE type that is 64-bits wide on -64-bit platforms, 32-bits on all others. This type is used -wherever memory allocation and/or the C sizeof() operator is used, -and affects the OSL memory allocation interfaces AcpiOsAllocate -and AcpiOsCallocate. - -Implemented sticky user breakpoints in the AML debugger. - -Code and Data Size: Current core subsystem library sizes are shown -below. These are the code and data sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 compiler, and these -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a larger code and data size. Note that these values will vary -depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release (12_05_01) - Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total - Debug Version: 136.2K Code, 55.6K Data, 191.8K Total - Current Release: - Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total - Debug Version: 138.3K Code, 55.9K Data, 194.2K Total - - 3) ASL Compiler, version X2034: - -Now checks for (and generates an error if detected) the use of a -Break or Continue statement without an enclosing While statement. - - -Successfully generated the compiler with the Intel 64-bit C -compiler. - - ---------------------------------------- -Summary of changes for this label: 12_05_01 - - 1) ACPI CA Core Subsystem: - -The ACPI 2.0 CopyObject operator is fully implemented. This -operator creates a new copy of an object (and is also used to -bypass the "implicit conversion" mechanism of the Store operator.) - -The ACPI 2.0 semantics for the SizeOf operator are fully -implemented. The change is that performing a SizeOf on a -reference object causes an automatic dereference of the object to -tha actual value before the size is evaluated. This behavior was -undefined in ACPI 1.0. - -The ACPI 2.0 semantics for the Extended IRQ resource descriptor -have been implemented. The interrupt polarity and mode are now -independently set. - -Fixed a problem where ASL Constants (Zero, One, Ones, Revision) -appearing in Package objects were not properly converted to -integers when the internal Package was converted to an external -object (via the AcpiEvaluateObject interface.) - -Fixed a problem with the namespace object deletion mechanism for -objects created by control methods. There were two parts to this -problem: 1) Objects created during the initialization phase method -parse were not being deleted, and 2) The object owner ID mechanism -to track objects was broken. - -Fixed a problem where the use of the ASL Scope operator within a -control method would result in an invalid opcode exception. - -Fixed a problem introduced in the previous label where the buffer -length required for the _PRT structure was not being returned -correctly. - -Code and Data Size: Current core subsystem library sizes are shown -below. These are the code and data sizes for the acpica.lib -produced by the Microsoft Visual C++ 6.0 compiler, and these -values do not include any ACPI driver or OSPM code. The debug -version of the code includes the debug output trace mechanism and -has a larger code and data size. Note that these values will vary -depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Release (11_20_01) - Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total - Debug Version: 135.1K Code, 55.4K Data, 190.5K Total - - Current Release: - Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total - Debug Version: 136.2K Code, 55.6K Data, 191.8K Total - - 2) Linux: - -Updated all files to apply cleanly against 2.4.16. - -Added basic PCI Interrupt Routing Table (PRT) support for IA32 -(acpi_pci.c), and unified the PRT code for IA32 and IA64. This -version supports both static and dyanmic PRT entries, but dynamic -entries are treated as if they were static (not yet -reconfigurable). Architecture- specific code to use this data is -absent on IA32 but should be available shortly. - -Changed the initialization sequence to start the ACPI interpreter -(acpi_init) prior to initialization of the PCI driver (pci_init) -in init/main.c. This ordering is required to support PRT and -facilitate other (future) enhancement. A side effect is that the -ACPI bus driver and certain device drivers can no longer be loaded -as modules. - -Modified the 'make menuconfig' options to allow PCI Interrupt -Routing support to be included without the ACPI Bus and other -device drivers. - - 3) ASL Compiler, version X2033: - -Fixed some issues with the use of the new CopyObject and -DataTableRegion operators. Both are fully functional. - - ---------------------------------------- -Summary of changes for this label: 11_20_01 - - 20 November 2001. Summary of changes for this release. - - 1) ACPI CA Core Subsystem: - -Updated Index support to match ACPI 2.0 semantics. Storing a -Integer, String, or Buffer to an Index of a Buffer will store only -the least-significant byte of the source to the Indexed buffer -byte. Multiple writes are not performed. - -Fixed a problem where the access type used in an AccessAs ASL -operator was not recorded correctly into the field object. - -Fixed a problem where ASL Event objects were created in a -signalled state. Events are now created in an unsignalled state. - -The internal object cache is now purged after table loading and -initialization to reduce the use of dynamic kernel memory -- on -the assumption that object use is greatest during the parse phase -of the entire table (versus the run-time use of individual control -methods.) - -ACPI 2.0 variable-length packages are now fully operational. - -Code and Data Size: Code and Data optimizations have permitted new -feature development with an actual reduction in the library size. -Current core subsystem library sizes are shown below. These are -the code and data sizes for the acpica.lib produced by the -Microsoft Visual C++ 6.0 compiler, and these values do not include -any ACPI driver or OSPM code. The debug version of the code -includes the debug output trace mechanism and has a larger code -and data size. Note that these values will vary depending on the -efficiency of the compiler and the compiler options used during -generation. - - Previous Release (11_09_01): - Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total - Debug Version: 134.5K Code, 55.4K Data, 189.9K Total - - Current Release: - Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total - Debug Version: 135.1K Code, 55.4K Data, 190.5K Total - - 2) Linux: - -Enhanced the ACPI boot-time initialization code to allow the use -of Local APIC tables for processor enumeration on IA-32, and to -pave the way for a fully MPS-free boot (on SMP systems) in the -near future. This functionality replaces -arch/i386/kernel/acpitables.c, which was introduced in an earlier -2.4.15-preX release. To enable this feature you must add -"acpi_boot=on" to the kernel command line -- see the help entry -for CONFIG_ACPI_BOOT for more information. An IA-64 release is in -the works... - -Restructured the configuration options to allow boot-time table -parsing support without inclusion of the ACPI Interpreter (and -other) code. - -NOTE: This release does not include fixes for the reported events, -power-down, and thermal passive cooling issues (coming soon). - - 3) ASL Compiler: - -Added additional typechecking for Fields within restricted access -Operation Regions. All fields within EC and CMOS regions must be -declared with ByteAcc. All fields withing SMBus regions must be -declared with the BufferAcc access type. - -Fixed a problem where the listing file output of control methods -no longer interleaved the actual AML code with the ASL source -code. - - - - ----------------------------------------- -Summary of changes for this label: 11_09_01 - -1) ACPI CA Core Subsystem: - -Implemented ACPI 2.0-defined support for writes to fields with a -Buffer, String, or Integer source operand that is smaller than the -target field. In these cases, the source operand is zero-extended -to fill the target field. - -Fixed a problem where a Field starting bit offset (within the -parent operation region) was calculated incorrectly if the - -alignment of the field differed from the access width. This -affected CreateWordField, CreateDwordField, CreateQwordField, and -possibly other fields that use the "AccessAny" keyword. - -Fixed a problem introduced in the 11_02_01 release where indirect -stores through method arguments did not operate correctly. - -2) Linux: - -Implemented boot-time ACPI table parsing support -(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code -facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than -legacy BIOS interfaces (e.g. MPS) for the configuration of system -processors, memory, and interrupts during setup_arch(). Note that -this patch does not include the required architecture-specific -changes required to apply this information -- subsequent patches -will be posted for both IA32 and IA64 to achieve this. - -Added low-level sleep support for IA32 platforms, courtesy of Pat -Mochel. This allows IA32 systems to transition to/from various -sleeping states (e.g. S1, S3), although the lack of a centralized -driver model and power-manageable drivers will prevent its -(successful) use on most systems. - -Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" -submenu, unified IA32 and IA64 options, added new "Boot using ACPI -tables" option, etc. - -Increased the default timeout for the EC driver from 1ms to 10ms -(1000 cycles of 10us) to try to address AE_TIME errors during EC -transactions. - - ---------------------------------------- -Summary of changes for this label: 11_02_01 - -1) ACPI CA Core Subsystem: - -ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access -(QWordAcc keyword). All ACPI 2.0 64-bit support is now -implemented. - -OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required -changes to support ACPI 2.0 Qword field access. Read/Write -PciConfiguration(), Read/Write Memory(), and Read/Write Port() now -accept an ACPI_INTEGER (64 bits) as the value parameter. Also, -the value parameter for the address space handler interface is now -an ACPI_INTEGER. OSL implementations of these interfaces must now -handle the case where the Width parameter is 64. - -Index Fields: Fixed a problem where unaligned bit assembly and -disassembly for IndexFields was not supported correctly. - -Index and Bank Fields: Nested Index and Bank Fields are now -supported. During field access, a check is performed to ensure -that the value written to an Index or Bank register is not out of -the range of the register. The Index (or Bank) register is -written before each access to the field data. Future support will -include allowing individual IndexFields to be wider than the -DataRegister width. - -Fields: Fixed a problem where the AML interpreter was incorrectly -attempting to write beyond the end of a Field/OpRegion. This was -a boundary case that occurred when a DWORD field was written to a -BYTE access OpRegion, forcing multiple writes and causing the -interpreter to write one datum too many. - -Fields: Fixed a problem with Field/OpRegion access where the -starting bit address of a field was incorrectly calculated if the -current access type was wider than a byte (WordAcc, DwordAcc, or -QwordAcc). - -Fields: Fixed a problem where forward references to individual -FieldUnits (individual Field names within a Field definition) were -not resolved during the AML table load. - -Fields: Fixed a problem where forward references from a Field -definition to the parent Operation Region definition were not -resolved during the AML table load. - -Fields: Duplicate FieldUnit names within a scope are now detected -during AML table load. - -Acpi Interfaces: Fixed a problem where the AcpiGetName() interface -returned an incorrect name for the root node. - -Code and Data Size: Code and Data optimizations have permitted new -feature development with an actual reduction in the library size. -Current core subsystem library sizes are shown below. These are -the code and data sizes for the acpica.lib produced by the -Microsoft Visual C++ 6.0 compiler, and these values do not include -any ACPI driver or OSPM code. The debug version of the code -includes the debug output trace mechanism and has a larger code -and data size. Note that these values will vary depending on the -efficiency of the compiler and the compiler options used during -generation. - - Previous Release (10_18_01): - Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total - Debug Version: 136.7K Code, 57.4K Data, 194.2K Total - - Current Release: - Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total - Debug Version: 134.5K Code, 55.4K Data, 189.9K Total - - 2) Linux: - -Improved /proc processor output (Pavel Machek) Re-added -MODULE_LICENSE("GPL") to all modules. - - 3) ASL Compiler version X2030: - -Duplicate FieldUnit names within a scope are now detected and -flagged as errors. - - 4) Documentation: - -Programmer Reference updated to reflect OSL and address space -handler interface changes described above. - ----------------------------------------- -Summary of changes for this label: 10_18_01 - -ACPI CA Core Subsystem: - -Fixed a problem with the internal object reference count mechanism -that occasionally caused premature object deletion. This resolves -all of the outstanding problem reports where an object is deleted -in the middle of an interpreter evaluation. Although this problem -only showed up in rather obscure cases, the solution to the -problem involved an adjustment of all reference counts involving -objects attached to namespace nodes. - -Fixed a problem with Field support in the interpreter where -writing to an aligned field whose length is an exact multiple (2 -or greater) of the field access granularity would cause an attempt -to write beyond the end of the field. - -The top level AML opcode execution functions within the -interpreter have been renamed with a more meaningful and -consistent naming convention. The modules exmonad.c and -exdyadic.c were eliminated. New modules are exoparg1.c, -exoparg2.c, exoparg3.c, and exoparg6.c. - -Support for the ACPI 2.0 "Mid" ASL operator has been implemented. - -Fixed a problem where the AML debugger was causing some internal -objects to not be deleted during subsystem termination. - -Fixed a problem with the external AcpiEvaluateObject interface -where the subsystem would fault if the named object to be -evaluated refered to a constant such as Zero, Ones, etc. - -Fixed a problem with IndexFields and BankFields where the -subsystem would fault if the index, data, or bank registers were -not defined in the same scope as the field itself. - -Added printf format string checking for compilers that support -this feature. Corrected more than 50 instances of issues with -format specifiers within invocations of ACPI_DEBUG_PRINT -throughout the core subsystem code. - -The ASL "Revision" operator now returns the ACPI support level -implemented in the core - the value "2" since the ACPI 2.0 support -is more than 50% implemented. - -Enhanced the output of the AML debugger "dump namespace" command -to output in a more human-readable form. - -Current core subsystem library code sizes are shown below. These - -are the code and data sizes for the acpica.lib produced by the -Microsoft Visual C++ 6.0 compiler, and these values do not include -any ACPI driver or OSPM code. The debug version of the code -includes the full debug trace mechanism -- leading to a much - -larger code and data size. Note that these values will vary -depending on the efficiency of the compiler and the compiler -options used during generation. - - Previous Label (09_20_01): - Non-Debug Version: 65K Code, 5K Data, 70K Total - Debug Version: 138K Code, 58K Data, 196K Total - - This Label: - - Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total - Debug Version: 136.7K Code, 57.4K Data, 194.2K Total - -Linux: - -Implemented a "Bad BIOS Blacklist" to track machines that have -known ASL/AML problems. - -Enhanced the /proc interface for the thermal zone driver and added -support for _HOT (the critical suspend trip point). The 'info' -file now includes threshold/policy information, and allows setting -of _SCP (cooling preference) and _TZP (polling frequency) values -to the 'info' file. Examples: "echo tzp=5 > info" sets the polling -frequency to 5 seconds, and "echo scp=1 > info" sets the cooling -preference to the passive/quiet mode (if supported by the ASL). - -Implemented a workaround for a gcc bug that resuted in an OOPs -when loading the control method battery driver. - - ---------------------------------------- -Summary of changes for this label: 09_20_01 - - ACPI CA Core Subsystem: - -The AcpiEnableEvent and AcpiDisableEvent interfaces have been -modified to allow individual GPE levels to be flagged as wake- -enabled (i.e., these GPEs are to remain enabled when the platform -sleeps.) - -The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now -support wake-enabled GPEs. This means that upon entering the -sleep state, all GPEs that are not wake-enabled are disabled. -When leaving the sleep state, these GPEs are reenabled. - -A local double-precision divide/modulo module has been added to -enhance portability to OS kernels where a 64-bit math library is -not available. The new module is "utmath.c". - -Several optimizations have been made to reduce the use of CPU -stack. Originally over 2K, the maximum stack usage is now below -2K at 1860 bytes (1.82k) - -Fixed a problem with the AcpiGetFirmwareTable interface where the -root table pointer was not mapped into a logical address properly. - -Fixed a problem where a NULL pointer was being dereferenced in the -interpreter code for the ASL Notify operator. - -Fixed a problem where the use of the ASL Revision operator -returned an error. This operator now returns the current version -of the ACPI CA core subsystem. - -Fixed a problem where objects passed as control method parameters -to AcpiEvaluateObject were always deleted at method termination. -However, these objects may end up being stored into the namespace -by the called method. The object reference count mechanism was -applied to these objects instead of a force delete. - -Fixed a problem where static strings or buffers (contained in the -AML code) that are declared as package elements within the ASL -code could cause a fault because the interpreter would attempt to -delete them. These objects are now marked with the "static -object" flag to prevent any attempt to delete them. - -Implemented an interpreter optimization to use operands directly -from the state object instead of extracting the operands to local -variables. This reduces stack use and code size, and improves -performance. - -The module exxface.c was eliminated as it was an unnecessary extra -layer of code. - -Current core subsystem library code sizes are shown below. These -are the code and data sizes for the acpica.lib produced by the -Microsoft Visual C++ 6.0 compiler, and these values do not include -any ACPI driver or OSPM code. The debug version of the code -includes the full debug trace mechanism -- leading to a much -larger code and data size. Note that these values will vary -depending on the efficiency of the compiler and the compiler -options used during generation. - - Non-Debug Version: 65K Code, 5K Data, 70K Total -(Previously 69K) Debug Version: 138K Code, 58K Data, 196K -Total (Previously 195K) - -Linux: - -Support for ACPI 2.0 64-bit integers has been added. All ACPI -Integer objects are now 64 bits wide - -All Acpi data types and structures are now in lower case. Only -Acpi macros are upper case for differentiation. - - Documentation: - -Changes to the external interfaces as described above. - - ---------------------------------------- -Summary of changes for this label: 08_31_01 - - ACPI CA Core Subsystem: - -A bug with interpreter implementation of the ASL Divide operator -was found and fixed. The implicit function return value (not the -explicit store operands) was returning the remainder instead of -the quotient. This was a longstanding bug and it fixes several -known outstanding issues on various platforms. - -The ACPI_DEBUG_PRINT and function trace entry/exit macros have -been further optimized for size. There are 700 invocations of the -DEBUG_PRINT macro alone, so each optimization reduces the size of -the debug version of the subsystem significantly. - -A stack trace mechanism has been implemented. The maximum stack -usage is about 2K on 32-bit platforms. The debugger command "stat -stack" will display the current maximum stack usage. - -All public symbols and global variables within the subsystem are -now prefixed with the string "Acpi". This keeps all of the -symbols grouped together in a kernel map, and avoids conflicts -with other kernel subsystems. - -Most of the internal fixed lookup tables have been moved into the -code segment via the const operator. - -Several enhancements have been made to the interpreter to both -reduce the code size and improve performance. - -Current core subsystem library code sizes are shown below. These -are the code and data sizes for the acpica.lib produced by the -Microsoft Visual C++ 6.0 compiler, and these values do not include -any ACPI driver or OSPM code. The debug version of the code -includes the full debug trace mechanism which contains over 700 -invocations of the DEBUG_PRINT macro, 500 function entry macro -invocations, and over 900 function exit macro invocations -- -leading to a much larger code and data size. Note that these -values will vary depending on the efficiency of the compiler and -the compiler options used during generation. - - Non-Debug Version: 64K Code, 5K Data, 69K Total -Debug Version: 137K Code, 58K Data, 195K Total - - Linux: - -Implemented wbinvd() macro, pending a kernel-wide definition. - -Fixed /proc/acpi/event to handle poll() and short reads. - - ASL Compiler, version X2026: - -Fixed a problem introduced in the previous label where the AML - -code emitted for package objects produced packages with zero -length. - - ---------------------------------------- -Summary of changes for this label: 08_16_01 - -ACPI CA Core Subsystem: - -The following ACPI 2.0 ASL operators have been implemented in the -AML interpreter (These are already supported by the Intel ASL -compiler): ToDecimalString, ToHexString, ToString, ToInteger, and -ToBuffer. Support for 64-bit AML constants is implemented in the -AML parser, debugger, and disassembler. - -The internal memory tracking mechanism (leak detection code) has -been upgraded to reduce the memory overhead (a separate tracking -block is no longer allocated for each memory allocation), and now -supports all of the internal object caches. - -The data structures and code for the internal object caches have -been coelesced and optimized so that there is a single cache and -memory list data structure and a single group of functions that -implement generic cache management. This has reduced the code -size in both the debug and release versions of the subsystem. - -The DEBUG_PRINT macro(s) have been optimized for size and replaced -by ACPI_DEBUG_PRINT. The syntax for this macro is slightly -different, because it generates a single call to an internal -function. This results in a savings of about 90 bytes per -invocation, resulting in an overall code and data savings of about -16% in the debug version of the subsystem. - - Linux: - -Fixed C3 disk corruption problems and re-enabled C3 on supporting -machines. - -Integrated low-level sleep code by Patrick Mochel. - -Further tweaked source code Linuxization. - -Other minor fixes. - - ASL Compiler: - -Support for ACPI 2.0 variable length packages is fixed/completed. - -Fixed a problem where the optional length parameter for the ACPI -2.0 ToString operator. - -Fixed multiple extraneous error messages when a syntax error is -detected within the declaration line of a control method. - - ---------------------------------------- -Summary of changes for this label: 07_17_01 - -ACPI CA Core Subsystem: - -Added a new interface named AcpiGetFirmwareTable to obtain any -ACPI table via the ACPI signature. The interface can be called at -any time during kernel initialization, even before the kernel -virtual memory manager is initialized and paging is enabled. This -allows kernel subsystems to obtain ACPI tables very early, even -before the ACPI CA subsystem is initialized. - -Fixed a problem where Fields defined with the AnyAcc attribute -could be resolved to the incorrect address under the following -conditions: 1) the field width is larger than 8 bits and 2) the -parent operation region is not defined on a DWORD boundary. - -Fixed a problem where the interpreter is not being locked during -namespace initialization (during execution of the _INI control -methods), causing an error when an attempt is made to release it -later. - -ACPI 2.0 support in the AML Interpreter has begun and will be -ongoing throughout the rest of this year. In this label, The Mod -operator is implemented. - -Added a new data type to contain full PCI addresses named -ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, -and Function values. - - Linux: - -Enhanced the Linux version of the source code to change most -capitalized ACPI type names to lowercase. For example, all -instances of ACPI_STATUS are changed to acpi_status. This will -result in a large diff, but the change is strictly cosmetic and -aligns the CA code closer to the Linux coding standard. - -OSL Interfaces: - -The interfaces to the PCI configuration space have been changed to -add the PCI Segment number and to split the single 32-bit combined -DeviceFunction field into two 16-bit fields. This was -accomplished by moving the four values that define an address in -PCI configuration space (segment, bus, device, and function) to -the new ACPI_PCI_ID structure. - -The changes to the PCI configuration space interfaces led to a -reexamination of the complete set of address space access -interfaces for PCI, I/O, and Memory. The previously existing 18 -interfaces have proven difficult to maintain (any small change -must be propagated across at least 6 interfaces) and do not easily -allow for future expansion to 64 bits if necessary. Also, on some -systems, it would not be appropriate to demultiplex the access -width (8, 16, 32,or 64) before calling the OSL if the -corresponding native OS interfaces contain a similar access width -parameter. For these reasons, the 18 address space interfaces -have been replaced by these 6 new ones: - -AcpiOsReadPciConfiguration -AcpiOsWritePciConfiguration -AcpiOsReadMemory -AcpiOsWriteMemory -AcpiOsReadPort -AcpiOsWritePort - -Added a new interface named AcpiOsGetRootPointer to allow the OSL -to perform the platform and/or OS-specific actions necessary to -obtain the ACPI RSDP table pointer. On IA-32 platforms, this -interface will simply call down to the CA core to perform the low- -memory search for the table. On IA-64, the RSDP is obtained from -EFI. Migrating this interface to the OSL allows the CA core to - -remain OS and platform independent. - -Added a new interface named AcpiOsSignal to provide a generic -"function code and pointer" interface for various miscellaneous -signals and notifications that must be made to the host OS. The -first such signals are intended to support the ASL Fatal and -Breakpoint operators. In the latter case, the AcpiOsBreakpoint -interface has been obsoleted. - -The definition of the AcpiFormatException interface has been -changed to simplify its use. The caller no longer must supply a -buffer to the call; A pointer to a const string is now returned -directly. This allows the call to be easily used in printf -statements, etc. since the caller does not have to manage a local -buffer. - - - ASL Compiler, Version X2025: - -The ACPI 2.0 Switch/Case/Default operators have been implemented -and are fully functional. They will work with all ACPI 1.0 -interpreters, since the operators are simply translated to If/Else -pairs. - -The ACPI 2.0 ElseIf operator is implemented and will also work -with 1.0 interpreters, for the same reason. - -Implemented support for ACPI 2.0 variable-length packages. These -packages have a separate opcode, and their size is determined by -the interpreter at run-time. - -Documentation The ACPI CA Programmer Reference has been updated to -reflect the new interfaces and changes to existing interfaces. - - ------------------------------------------ -Summary of changes for this label: 06_15_01 - - ACPI CA Core Subsystem: - -Fixed a problem where a DWORD-accessed field within a Buffer -object would get its byte address inadvertently rounded down to -the nearest DWORD. Buffers are always Byte-accessible. - - ASL Compiler, version X2024: - -Fixed a problem where the Switch() operator would either fault or -hang the compiler. Note however, that the AML code for this ACPI -2.0 operator is not yet implemented. - -Compiler uses the new AcpiOsGetTimer interface to obtain compile -timings. - -Implementation of the CreateField operator automatically converts -a reference to a named field within a resource descriptor from a -byte offset to a bit offset if required. - -Added some missing named fields from the resource descriptor -support. These are the names that are automatically created by the -compiler to reference fields within a descriptor. They are only -valid at compile time and are not passed through to the AML -interpreter. - -Resource descriptor named fields are now typed as Integers and -subject to compile-time typechecking when used in expressions. - - ------------------------------------------ -Summary of changes for this label: 05_18_01 - - ACPI CA Core Subsystem: - -Fixed a couple of problems in the Field support code where bits -from adjacent fields could be returned along with the proper field -bits. Restructured the field support code to improve performance, -readability and maintainability. - -New DEBUG_PRINTP macro automatically inserts the procedure name -into the output, saving hundreds of copies of procedure name -strings within the source, shrinking the memory footprint of the -debug version of the core subsystem. - - Source Code Structure: - -The source code directory tree was restructured to reflect the -current organization of the component architecture. Some files -and directories have been moved and/or renamed. - - Linux: - -Fixed leaking kacpidpc processes. - -Fixed queueing event data even when /proc/acpi/event is not -opened. - - ASL Compiler, version X2020: - -Memory allocation performance enhancement - over 24X compile time -improvement on large ASL files. Parse nodes and namestring -buffers are now allocated from a large internal compiler buffer. - -The temporary .SRC file is deleted unless the "-s" option is -specified - -The "-d" debug output option now sends all output to the .DBG file -instead of the console. - -"External" second parameter is now optional - -"ElseIf" syntax now properly allows the predicate - -Last operand to "Load" now recognized as a Target operand - -Debug object can now be used anywhere as a normal object. - -ResourceTemplate now returns an object of type BUFFER - -EISAID now returns an object of type INTEGER - -"Index" now works with a STRING operand - -"LoadTable" now accepts optional parameters - -"ToString" length parameter is now optional - -"Interrupt (ResourceType," parse error fixed. - -"Register" with a user-defined region space parse error fixed - -Escaped backslash at the end of a string ("\\") scan/parse error -fixed - -"Revision" is now an object of type INTEGER. - - - ------------------------------------------- -Summary of changes for this label: 05_02_01 - -Linux: - -/proc/acpi/event now blocks properly. - -Removed /proc/sys/acpi. You can still dump your DSDT from -/proc/acpi/dsdt. - - ACPI CA Core Subsystem: - -Fixed a problem introduced in the previous label where some of the -"small" resource descriptor types were not recognized. - -Improved error messages for the case where an ASL Field is outside -the range of the parent operation region. - - ASL Compiler, version X2018: - - -Added error detection for ASL Fields that extend beyond the length -of the parent operation region (only if the length of the region -is known at compile time.) This includes fields that have a -minimum access width that is smaller than the parent region, and -individual field units that are partially or entirely beyond the -extent of the parent. - - - ------------------------------------------- -Summary of changes for this label: 04_27_01 - - ACPI CA Core Subsystem: - -Fixed a problem where the namespace mutex could be released at the -wrong time during execution of AcpiRemoveAddressSpaceHandler. - -Added optional thread ID output for debug traces, to simplify -debugging of multiple threads. Added context switch notification -when the debug code realizes that a different thread is now -executing ACPI code. - -Some additional external data types have been prefixed with the -string "ACPI_" for consistency. This may effect existing code. -The data types affected are the external callback typedefs - e.g., - -WALK_CALLBACK becomes ACPI_WALK_CALLBACK. - - Linux: - -Fixed an issue with the OSL semaphore implementation where a -thread was waking up with an error from receiving a SIGCHLD -signal. - -Linux version of ACPI CA now uses the system C library for string -manipulation routines instead of a local implementation. - -Cleaned up comments and removed TBDs. - - ASL Compiler, version X2017: - -Enhanced error detection and reporting for all file I/O -operations. - - Documentation: - -Programmer Reference updated to version 1.06. - - - ------------------------------------------- -Summary of changes for this label: 04_13_01 - - ACPI CA Core Subsystem: - -Restructured support for BufferFields and RegionFields. -BankFields support is now fully operational. All known 32-bit -limitations on field sizes have been removed. Both BufferFields -and (Operation) RegionFields are now supported by the same field -management code. - -Resource support now supports QWORD address and IO resources. The -16/32/64 bit address structures and the Extended IRQ structure -have been changed to properly handle Source Resource strings. - -A ThreadId of -1 is now used to indicate a "mutex not acquired" -condition internally and must never be returned by AcpiOsThreadId. -This reserved value was changed from 0 since Unix systems allow a -thread ID of 0. - -Linux: - -Driver code reorganized to enhance portability - -Added a kernel configuration option to control ACPI_DEBUG - -Fixed the EC driver to honor _GLK. - -ASL Compiler, version X2016: - -Fixed support for the "FixedHw" keyword. Previously, the FixedHw -address space was set to 0, not 0x7f as it should be. - - ------------------------------------------ -Summary of changes for this label: 03_13_01 - - ACPI CA Core Subsystem: - -During ACPI initialization, the _SB_._INI method is now run if -present. - -Notify handler fix - notifies are deferred until the parent method -completes execution. This fixes the "mutex already acquired" -issue seen occasionally. - -Part of the "implicit conversion" rules in ACPI 2.0 have been -found to cause compatibility problems with existing ASL/AML. The -convert "result-to-target-type" implementation has been removed -for stores to method Args and Locals. Source operand conversion -is still fully implemented. Possible changes to ACPI 2.0 -specification pending. - -Fix to AcpiRsCalculatePciRoutingTableLength to return correct -length. - -Fix for compiler warnings for 64-bit compiles. - - Linux: - -/proc output aligned for easier parsing. - -Release-version compile problem fixed. - -New kernel configuration options documented in Configure.help. - -IBM 600E - Fixed Sleep button may generate "Invalid -context" message. - - OSPM: - -Power resource driver integrated with bus manager. - -Fixed kernel fault during active cooling for thermal zones. - -Source Code: - -The source code tree has been restructured. - - - ------------------------------------------- -Summary of changes for this label: 03_02_01 - - Linux OS Services Layer (OSL): - -Major revision of all Linux-specific code. - -Modularized all ACPI-specific drivers. - -Added new thermal zone and power resource drivers. - -Revamped /proc interface (new functionality is under /proc/acpi). - -New kernel configuration options. - - Linux known issues: - -New kernel configuration options not documented in Configure.help -yet. - - -Module dependencies not currently implemented. If used, they -should be loaded in this order: busmgr, power, ec, system, -processor, battery, ac_adapter, button, thermal. - -Modules will not load if CONFIG_MODVERSION is set. - -IBM 600E - entering S5 may reboot instead of shutting down. - -IBM 600E - Sleep button may generate "Invalid context" -message. - -Some systems may fail with "execution mutex already acquired" -message. - - ACPI CA Core Subsystem: - -Added a new OSL Interface, AcpiOsGetThreadId. This was required -for the deadlock detection code. Defined to return a non-zero, 32- -bit thread ID for the currently executing thread. May be a non- -zero constant integer on single-thread systems. - -Implemented deadlock detection for internal subsystem mutexes. We -may add conditional compilation for this code (debug only) later. - -ASL/AML Mutex object semantics are now fully supported. This -includes multiple acquires/releases by owner and support for the - -Mutex SyncLevel parameter. - -A new "Force Release" mechanism automatically frees all ASL -Mutexes that have been acquired but not released when a thread -exits the interpreter. This forces conformance to the ACPI spec -("All mutexes must be released when an invocation exits") and -prevents deadlocked ASL threads. This mechanism can be expanded -(later) to monitor other resource acquisitions if OEM ASL code -continues to misbehave (which it will). - -Several new ACPI exception codes have been added for the Mutex -support. - -Recursive method calls are now allowed and supported (the ACPI -spec does in fact allow recursive method calls.) The number of -recursive calls is subject to the restrictions imposed by the -SERIALIZED method keyword and SyncLevel (ACPI 2.0) method -parameter. - -Implemented support for the SyncLevel parameter for control -methods (ACPI 2.0 feature) - -Fixed a deadlock problem when multiple threads attempted to use -the interpreter. - -Fixed a problem where the string length of a String package -element was not always set in a package returned from -AcpiEvaluateObject. - -Fixed a problem where the length of a String package element was -not always included in the length of the overall package returned -from AcpiEvaluateObject. - -Added external interfaces (Acpi*) to the ACPI debug memory -manager. This manager keeps a list of all outstanding -allocations, and can therefore detect memory leaks and attempts to -free memory blocks more than once. Useful for code such as the -power manager, etc. May not be appropriate for device drivers. -Performance with the debug code enabled is slow. - -The ACPI Global Lock is now an optional hardware element. - - ASL Compiler Version X2015: - -Integrated changes to allow the compiler to be generated on -multiple platforms. - -Linux makefile added to generate the compiler on Linux - - Source Code: - -All platform-specific headers have been moved to their own -subdirectory, Include/Platform. - -New source file added, Interpreter/ammutex.c - -New header file, Include/acstruct.h - - Documentation: - -The programmer reference has been updated for the following new -interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree - - ------------------------------------------ -Summary of changes for this label: 02_08_01 - -Core ACPI CA Subsystem: Fixed a problem where an error was -incorrectly returned if the return resource buffer was larger than -the actual data (in the resource interfaces). - -References to named objects within packages are resolved to the - -full pathname string before packages are returned directly (via -the AcpiEvaluateObject interface) or indirectly via the resource -interfaces. - -Linux OS Services Layer (OSL): - -Improved /proc battery interface. - - -Added C-state debugging output and other miscellaneous fixes. - -ASL Compiler Version X2014: - -All defined method arguments can now be used as local variables, -including the ones that are not actually passed in as parameters. -The compiler tracks initialization of the arguments and issues an -exception if they are used without prior assignment (just like -locals). - -The -o option now specifies a filename prefix that is used for all -output files, including the AML output file. Otherwise, the -default behavior is as follows: 1) the AML goes to the file -specified in the DSDT. 2) all other output files use the input -source filename as the base. - - ------------------------------------------ -Summary of changes for this label: 01_25_01 - -Core ACPI CA Subsystem: Restructured the implementation of object -store support within the interpreter. This includes support for -the Store operator as well as any ASL operators that include a -target operand. - -Partially implemented support for Implicit Result-to-Target -conversion. This is when a result object is converted on the fly -to the type of an existing target object. Completion of this -support is pending further analysis of the ACPI specification -concerning this matter. - -CPU-specific code has been removed from the subsystem (hardware -directory). - -New Power Management Timer functions added - -Linux OS Services Layer (OSL): Moved system state transition code -to the core, fixed it, and modified Linux OSL accordingly. - -Fixed C2 and C3 latency calculations. - - -We no longer use the compilation date for the version message on -initialization, but retrieve the version from AcpiGetSystemInfo(). - -Incorporated for fix Sony VAIO machines. - -Documentation: The Programmer Reference has been updated and -reformatted. - - -ASL Compiler: Version X2013: Fixed a problem where the line -numbering and error reporting could get out of sync in the -presence of multiple include files. - - ------------------------------------------ -Summary of changes for this label: 01_15_01 - -Core ACPI CA Subsystem: - -Implemented support for type conversions in the execution of the -ASL Concatenate operator (The second operand is converted to -match the type of the first operand before concatenation.) - -Support for implicit source operand conversion is partially -implemented. The ASL source operand types Integer, Buffer, and -String are freely interchangeable for most ASL operators and are -converted by the interpreter on the fly as required. Implicit -Target operand conversion (where the result is converted to the -target type before storing) is not yet implemented. - -Support for 32-bit and 64-bit BCD integers is implemented. - -Problem fixed where a field read on an aligned field could cause a -read past the end of the field. - -New exception, AE_AML_NO_RETURN_VALUE, is returned when a method -does not return a value, but the caller expects one. (The ASL -compiler flags this as a warning.) - -ASL Compiler: - -Version X2011: -1. Static typechecking of all operands is implemented. This -prevents the use of invalid objects (such as using a Package where -an Integer is required) at compile time instead of at interpreter -run-time. -2. The ASL source line is printed with ALL errors and warnings. -3. Bug fix for source EOF without final linefeed. -4. Debug option is split into a parse trace and a namespace trace. -5. Namespace output option (-n) includes initial values for -integers and strings. -6. Parse-only option added for quick syntax checking. -7. Compiler checks for duplicate ACPI name declarations - -Version X2012: -1. Relaxed typechecking to allow interchangeability between -strings, integers, and buffers. These types are now converted by -the interpreter at runtime. -2. Compiler reports time taken by each internal subsystem in the -debug output file. - - - ------------------------------------------ -Summary of changes for this label: 12_14_00 - -ASL Compiler: - -This is the first official release of the compiler. Since the -compiler requires elements of the Core Subsystem, this label -synchronizes everything. - ------------------------------------------- -Summary of changes for this label: 12_08_00 - - -Fixed a problem where named references within the ASL definition -of both OperationRegions and CreateXXXFields did not work -properly. The symptom was an AE_AML_OPERAND_TYPE during -initialization of the region/field. This is similar (but not -related internally) to the problem that was fixed in the last -label. - -Implemented both 32-bit and 64-bit support for the BCD ASL -functions ToBCD and FromBCD. - -Updated all legal headers to include "2000" in the copyright -years. - - ------------------------------------------ -Summary of changes for this label: 12_01_00 - -Fixed a problem where method invocations within the ASL definition -of both OperationRegions and CreateXXXFields did not work -properly. The symptom was an AE_AML_OPERAND_TYPE during -initialization of the region/field: - - nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments -[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) -(0x3005) - -Fixed a problem where operators with more than one nested -subexpression would fail. The symptoms were varied, by mostly -AE_AML_OPERAND_TYPE errors. This was actually a rather serious -problem that has gone unnoticed until now. - - Subtract (Add (1,2), Multiply (3,4)) - -Fixed a problem where AcpiGetHandle didn't quite get fixed in the -previous build (The prefix part of a relative path was handled -incorrectly). - -Fixed a problem where Operation Region initialization failed if -the operation region name was a "namepath" instead of a simple -"nameseg". Symptom was an AE_NO_OPERAND error. - -Fixed a problem where an assignment to a local variable via the -indirect RefOf mechanism only worked for the first such -assignment. Subsequent assignments were ignored. - - ------------------------------------------ -Summary of changes for this label: 11_15_00 - -ACPI 2.0 table support with backwards support for ACPI 1.0 and the -0.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, -the AML interpreter does NOT have support for the new 2.0 ASL -grammar terms at this time. - -All ACPI hardware access is via the GAS structures in the ACPI 2.0 -FADT. - -All physical memory addresses across all platforms are now 64 bits -wide. Logical address width remains dependent on the platform -(i.e., "void *"). - -AcpiOsMapMemory interface changed to a 64-bit physical address. - -The AML interpreter integer size is now 64 bits, as per the ACPI -2.0 specification. - -For backwards compatibility with ACPI 1.0, ACPI tables with a -revision number less than 2 use 32-bit integers only. - -Fixed a problem where the evaluation of OpRegion operands did not -always resolve them to numbers properly. - ------------------------------------------- -Summary of changes for this label: 10_20_00 - -Fix for CBN_._STA issue. This fix will allow correct access to -CBN_ OpRegions when the _STA returns 0x8. - -Support to convert ACPI constants (Ones, Zeros, One) to actual -values before a package object is returned - -Fix for method call as predicate to if/while construct causing -incorrect if/while behavior - -Fix for Else block package lengths sometimes calculated wrong (if -block > 63 bytes) - -Fix for Processor object length field, was always zero - -Table load abort if FACP sanity check fails - -Fix for problem with Scope(name) if name already exists - -Warning emitted if a named object referenced cannot be found -(resolved) during method execution. - - - - - ------------------------------------------- -Summary of changes for this label: 9_29_00 - -New table initialization interfaces: AcpiInitializeSubsystem no -longer has any parameters AcpiFindRootPointer - Find the RSDP (if -necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- ->RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by -AcpiLoadTables - -Note: These interface changes require changes to all existing OSDs - -The PCI_Config default address space handler is always installed -at the root namespace object. - -------------------------------------------- -Summary of changes for this label: 09_15_00 - -The new initialization architecture is implemented. New -interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) -AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace - -(Namespace is automatically loaded when a table is loaded) - -The ACPI_OPERAND_OBJECT has been optimized to shrink its size from -52 bytes to 32 bytes. There is usually one of these for every -namespace object, so the memory savings is significant. - -Implemented just-in-time evaluation of the CreateField operators. - -Bug fixes for IA-64 support have been integrated. - -Additional code review comments have been implemented - -The so-called "third pass parse" has been replaced by a final walk -through the namespace to initialize all operation regions (address -spaces) and fields that have not yet been initialized during the -execution of the various _INI and REG methods. - -New file - namespace/nsinit.c - -------------------------------------------- -Summary of changes for this label: 09_01_00 - -Namespace manager data structures have been reworked to change the -primary object from a table to a single object. This has -resulted in dynamic memory savings of 3X within the namespace and -2X overall in the ACPI CA subsystem. - -Fixed problem where the call to AcpiEvFindPciRootBuses was -inadvertently left commented out. - -Reduced the warning count when generating the source with the GCC -compiler. - -Revision numbers added to each module header showing the -SourceSafe version of the file. Please refer to this version -number when giving us feedback or comments on individual modules. - -The main object types within the subsystem have been renamed to -clarify their purpose: - -ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT -ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT -ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE - -NOTE: no changes to the initialization sequence are included in -this label. - -------------------------------------------- -Summary of changes for this label: 08_23_00 - -Fixed problem where TerminateControlMethod was being called -multiple times per method - -Fixed debugger problem where single stepping caused a semaphore to -be oversignalled - -Improved performance through additional parse object caching - -added ACPI_EXTENDED_OP type - -------------------------------------------- -Summary of changes for this label: 08_10_00 - -Parser/Interpreter integration: Eliminated the creation of -complete parse trees for ACPI tables and control methods. -Instead, parse subtrees are created and then deleted as soon as -they are processed (Either entered into the namespace or executed -by the interpreter). This reduces the use of dynamic kernel -memory significantly. (about 10X) - -Exception codes broken into classes and renumbered. Be sure to -recompile all code that includes acexcep.h. Hopefully we won't -have to renumber the codes again now that they are split into -classes (environment, programmer, AML code, ACPI table, and -internal). - -Fixed some additional alignment issues in the Resource Manager -subcomponent - -Implemented semaphore tracking in the AcpiExec utility, and fixed -several places where mutexes/semaphores were being unlocked -without a corresponding lock operation. There are no known -semaphore or mutex "leaks" at this time. - -Fixed the case where an ASL Return operator is used to return an -unnamed package. - -------------------------------------------- -Summary of changes for this label: 07_28_00 - -Fixed a problem with the way addresses were calculated in -AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem -manifested itself when a Field was created with WordAccess or -DwordAccess, but the field unit defined within the Field was less - -than a Word or Dword. - -Fixed a problem in AmlDumpOperands() module's loop to pull -operands off of the operand stack to display information. The -problem manifested itself as a TLB error on 64-bit systems when -accessing an operand stack with two or more operands. - -Fixed a problem with the PCI configuration space handlers where -context was getting confused between accesses. This required a -change to the generic address space handler and address space -setup definitions. Handlers now get both a global handler context -(this is the one passed in by the user when executing -AcpiInstallAddressSpaceHandler() and a specific region context -that is unique to each region (For example, the _ADR, _SEG and -_BBN values associated with a specific region). The generic -function definitions have changed to the following: - -typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, -UINT32 Address, UINT32 BitWidth, UINT32 *Value, void -*HandlerContext, // This used to be void *Context void -*RegionContext); // This is an additional parameter - -typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE -RegionHandle, UINT32 Function, void *HandlerContext, void -**RegionContext); // This used to be **ReturnContext - -------------------------------------------- -Summary of changes for this label: 07_21_00 - -Major file consolidation and rename. All files within the -interpreter have been renamed as well as most header files. This -was done to prevent collisions with existing files in the host -OSs -- filenames such as "config.h" and "global.h" seem to be -quite common. The VC project files have been updated. All -makefiles will require modification. - -The parser/interpreter integration continues in Phase 5 with the -implementation of a complete 2-pass parse (the AML is parsed -twice) for each table; This avoids the construction of a huge -parse tree and therefore reduces the amount of dynamic memory -required by the subsystem. Greater use of the parse object cache -means that performance is unaffected. - -Many comments from the two code reviews have been rolled in. - -The 64-bit alignment support is complete. - -------------------------------------------- -Summary of changes for this label: 06_30_00 - -With a nod and a tip of the hat to the technology of yesteryear, -we've added support in the source code for 80 column output -devices. The code is now mostly constrained to 80 columns or -less to support environments and editors that 1) cannot display -or print more than 80 characters on a single line, and 2) cannot -disable line wrapping. - -A major restructuring of the namespace data structure has been -completed. The result is 1) cleaner and more -understandable/maintainable code, and 2) a significant reduction -in the dynamic memory requirement for each named ACPI object -(almost half). - -------------------------------------------- -Summary of changes for this label: 06_23_00 - -Linux support has been added. In order to obtain approval to get -the ACPI CA subsystem into the Linux kernel, we've had to make -quite a few changes to the base subsystem that will affect all -users (all the changes are generic and OS- independent). The -effects of these global changes have been somewhat far reaching. -Files have been merged and/or renamed and interfaces have been -renamed. The major changes are described below. - -Osd* interfaces renamed to AcpiOs* to eliminate namespace -pollution/confusion within our target kernels. All OSD -interfaces must be modified to match the new naming convention. - -Files merged across the subsystem. A number of the smaller source -and header files have been merged to reduce the file count and -increase the density of the existing files. There are too many -to list here. In general, makefiles that call out individual -files will require rebuilding. - -Interpreter files renamed. All interpreter files now have the -prefix am* instead of ie* and is*. - -Header files renamed: The acapi.h file is now acpixf.h. The -acpiosd.h file is now acpiosxf.h. We are removing references to -the acronym "API" since it is somewhat windowsy. The new name is -"external interface" or xface or xf in the filenames.j - - -All manifest constants have been forced to upper case (some were -mixed case.) Also, the string "ACPI_" has been prepended to many -(not all) of the constants, typedefs, and structs. - -The globals "DebugLevel" and "DebugLayer" have been renamed -"AcpiDbgLevel" and "AcpiDbgLayer" respectively. - -All other globals within the subsystem are now prefixed with -"AcpiGbl_" Internal procedures within the subsystem are now -prefixed with "Acpi" (with only a few exceptions). The original -two-letter abbreviation for the subcomponent remains after "Acpi" -- for example, CmCallocate became AcpiCmCallocate. - -Added a source code translation/conversion utility. Used to -generate the Linux source code, it can be modified to generate -other types of source as well. Can also be used to cleanup -existing source by removing extraneous spaces and blank lines. -Found in tools/acpisrc/* - -OsdUnMapMemory was renamed to OsdUnmapMemory and then -AcpiOsUnmapMemory. (UnMap became Unmap). - -A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. -When set to one, this indicates that the caller wants to use the - -semaphore as a mutex, not a counting semaphore. ACPI CA uses -both types. However, implementers of this call may want to use -different OS primitives depending on the type of semaphore -requested. For example, some operating systems provide separate - -"mutex" and "semaphore" interfaces - where the mutex interface is -much faster because it doesn't have all the overhead of a full -semaphore implementation. - -Fixed a deadlock problem where a method that accesses the PCI -address space can block forever if it is the first access to the -space. - -------------------------------------------- -Summary of changes for this label: 06_02_00 - -Support for environments that cannot handle unaligned data -accesses (e.g. firmware and OS environments devoid of alignment -handler technology namely SAL/EFI and the IA-64 Linux kernel) has -been added (via configurable macros) in these three areas: - -Transfer of data from the raw AML byte stream is done via byte -moves instead of word/dword/qword moves. - External objects are -aligned within the user buffer, including package elements (sub- -objects). - Conversion of name strings to UINT32 Acpi Names is now -done byte-wise. - -The Store operator was modified to mimic Microsoft's -implementation when storing to a Buffer Field. - -Added a check of the BM_STS bit before entering C3. - -The methods subdirectory has been obsoleted and removed. A new -file, cmeval.c subsumes the functionality. - -A 16-bit (DOS) version of AcpiExec has been developed. The -makefile is under the acpiexec directory. diff --git a/sys/contrib/dev/acpica-unix-20061109/common/adfile.c b/sys/contrib/dev/acpica-unix-20061109/common/adfile.c deleted file mode 100644 index 42ab3bf0db..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/common/adfile.c +++ /dev/null @@ -1,398 +0,0 @@ -/****************************************************************************** - * - * Module Name: adfile - Application-level disassembler file support routines - * $Revision: 1.2 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acapps.h" - -#include -#include - - -#define _COMPONENT ACPI_TOOLS - ACPI_MODULE_NAME ("adfile") - - -char FilenameBuf[20]; - -/****************************************************************************** - * - * FUNCTION: AfGenerateFilename - * - * PARAMETERS: Prefix - prefix string - * TableId - The table ID - * - * RETURN: Pointer to the completed string - * - * DESCRIPTION: Build an output filename from an ACPI table ID string - * - ******************************************************************************/ - -char * -AdGenerateFilename ( - char *Prefix, - char *TableId) -{ - ACPI_NATIVE_UINT i; - ACPI_NATIVE_UINT j; - - - for (i = 0; Prefix[i]; i++) - { - FilenameBuf[i] = Prefix[i]; - } - - FilenameBuf[i] = '_'; - i++; - - for (j = 0; j < 8 && (TableId[j] != ' ') && (TableId[j] != 0); i++, j++) - { - FilenameBuf[i] = TableId[j]; - } - - FilenameBuf[i] = 0; - strcat (FilenameBuf, ACPI_TABLE_FILE_SUFFIX); - return FilenameBuf; -} - - -/****************************************************************************** - * - * FUNCTION: AfWriteBuffer - * - * PARAMETERS: Filename - name of file - * Buffer - data to write - * Length - length of data - * - * RETURN: Actual number of bytes written - * - * DESCRIPTION: Open a file and write out a single buffer - * - ******************************************************************************/ - -ACPI_NATIVE_INT -AdWriteBuffer ( - char *Filename, - char *Buffer, - UINT32 Length) -{ - FILE *fp; - ACPI_SIZE Actual; - - - fp = fopen (Filename, "wb"); - if (!fp) - { - printf ("Couldn't open %s\n", Filename); - return (-1); - } - - Actual = fwrite (Buffer, (size_t) Length, 1, fp); - fclose (fp); - return ((ACPI_NATIVE_INT) Actual); -} - - -/****************************************************************************** - * - * FUNCTION: AfWriteTable - * - * PARAMETERS: Table - pointer to the ACPI table - * Length - length of the table - * TableName - the table signature - * OemTableID - from the table header - * - * RETURN: None - * - * DESCRIPTION: Dump the loaded tables to a file (or files) - * - ******************************************************************************/ - -void -AdWriteTable ( - ACPI_TABLE_HEADER *Table, - UINT32 Length, - char *TableName, - char *OemTableId) -{ - char *Filename; - - - Filename = AdGenerateFilename (TableName, OemTableId); - AdWriteBuffer (Filename, (char *) Table, Length); - - AcpiOsPrintf ("Table [%s] written to \"%s\"\n", TableName, Filename); -} - - -/******************************************************************************* - * - * FUNCTION: FlGenerateFilename - * - * PARAMETERS: InputFilename - Original ASL source filename - * Suffix - New extension. - * - * RETURN: New filename containing the original base + the new suffix - * - * DESCRIPTION: Generate a new filename from the ASL source filename and a new - * extension. Used to create the *.LST, *.TXT, etc. files. - * - ******************************************************************************/ - -char * -FlGenerateFilename ( - char *InputFilename, - char *Suffix) -{ - char *Position; - char *NewFilename; - - - /* - * Copy the original filename to a new buffer. Leave room for the worst case - * where we append the suffix, an added dot and the null terminator. - */ - NewFilename = ACPI_ALLOCATE_ZEROED ( - strlen (InputFilename) + strlen (Suffix) + 2); - strcpy (NewFilename, InputFilename); - - /* Try to find the last dot in the filename */ - - Position = strrchr (NewFilename, '.'); - if (Position) - { - /* Tack on the new suffix */ - - Position++; - *Position = 0; - strcat (Position, Suffix); - } - else - { - /* No dot, add one and then the suffix */ - - strcat (NewFilename, "."); - strcat (NewFilename, Suffix); - } - - return NewFilename; -} - - -/******************************************************************************* - * - * FUNCTION: FlStrdup - * - * DESCRIPTION: Local strdup function - * - ******************************************************************************/ - -static char * -FlStrdup ( - char *String) -{ - char *NewString; - - - NewString = ACPI_ALLOCATE (strlen (String) + 1); - if (!NewString) - { - return (NULL); - } - - strcpy (NewString, String); - return (NewString); -} - - -/******************************************************************************* - * - * FUNCTION: FlSplitInputPathname - * - * PARAMETERS: InputFilename - The user-specified ASL source file to be - * compiled - * OutDirectoryPath - Where the directory path prefix is - * returned - * OutFilename - Where the filename part is returned - * - * RETURN: Status - * - * DESCRIPTION: Split the input path into a directory and filename part - * 1) Directory part used to open include files - * 2) Filename part used to generate output filenames - * - ******************************************************************************/ - -ACPI_STATUS -FlSplitInputPathname ( - char *InputPath, - char **OutDirectoryPath, - char **OutFilename) -{ - char *Substring; - char *DirectoryPath; - char *Filename; - - - *OutDirectoryPath = NULL; - *OutFilename = NULL; - - if (!InputPath) - { - return (AE_OK); - } - - /* Get the path to the input filename's directory */ - - DirectoryPath = FlStrdup (InputPath); - if (!DirectoryPath) - { - return (AE_NO_MEMORY); - } - - Substring = strrchr (DirectoryPath, '\\'); - if (!Substring) - { - Substring = strrchr (DirectoryPath, '/'); - if (!Substring) - { - Substring = strrchr (DirectoryPath, ':'); - } - } - - if (!Substring) - { - DirectoryPath[0] = 0; - Filename = FlStrdup (InputPath); - } - else - { - Filename = FlStrdup (Substring + 1); - *(Substring+1) = 0; - } - - if (!Filename) - { - return (AE_NO_MEMORY); - } - - *OutDirectoryPath = DirectoryPath; - *OutFilename = Filename; - - return (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/common/adisasm.c b/sys/contrib/dev/acpica-unix-20061109/common/adisasm.c deleted file mode 100644 index e8805bda85..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/common/adisasm.c +++ /dev/null @@ -1,1132 +0,0 @@ -/****************************************************************************** - * - * Module Name: adisasm - Application-level disassembler routines - * $Revision: 1.103 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" -#include "acdebug.h" -#include "acdisasm.h" -#include "acdispat.h" -#include "acnamesp.h" -#include "actables.h" -#include "acapps.h" - -#include -#include - - -#define _COMPONENT ACPI_TOOLS - ACPI_MODULE_NAME ("adisasm") - -extern int AslCompilerdebug; - -ACPI_STATUS -LsDisplayNamespace ( - void); - -void -LsSetupNsList (void * Handle); - - -/* Local prototypes */ - -void -AdCreateTableHeader ( - char *Filename, - ACPI_TABLE_HEADER *Table); - -void -AdDisassemblerHeader ( - char *Filename); - -ACPI_PARSE_OBJECT *AcpiGbl_ParseOpRoot; - - -/* Stubs for ASL compiler */ - -#ifndef ACPI_ASL_COMPILER -BOOLEAN -AcpiDsIsResultUsed ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState) -{ - return TRUE; -} - -ACPI_STATUS -AcpiDsMethodError ( - ACPI_STATUS Status, - ACPI_WALK_STATE *WalkState) -{ - return (Status); -} - -#endif - -ACPI_STATUS -AcpiNsLoadTable ( - ACPI_NATIVE_UINT TableIndex, - ACPI_NAMESPACE_NODE *Node) -{ - return (AE_NOT_IMPLEMENTED); -} - -ACPI_STATUS -AcpiDsRestartControlMethod ( - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT *ReturnDesc) -{ - return (AE_OK); -} - -void -AcpiDsTerminateControlMethod ( - ACPI_OPERAND_OBJECT *MethodDesc, - ACPI_WALK_STATE *WalkState) -{ - return; -} - -ACPI_STATUS -AcpiDsCallControlMethod ( - ACPI_THREAD_STATE *Thread, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - return (AE_OK); -} - -ACPI_STATUS -AcpiDsMethodDataInitArgs ( - ACPI_OPERAND_OBJECT **Params, - UINT32 MaxParamCount, - ACPI_WALK_STATE *WalkState) -{ - return (AE_OK); -} - - -ACPI_TABLE_DESC LocalTables[1]; - - -/******************************************************************************* - * - * FUNCTION: AdInitialize - * - * PARAMETERS: None. - * - * RETURN: Status - * - * DESCRIPTION: CA initialization - * - ******************************************************************************/ - -ACPI_STATUS -AdInitialize ( - void) -{ - ACPI_STATUS Status; - - - /* ACPI CA subsystem initialization */ - - Status = AcpiOsInitialize (); - AcpiUtInitGlobals (); - - Status = AcpiUtMutexInitialize (); - if (ACPI_FAILURE (Status)) - { - return Status; - } - - Status = AcpiNsRootInitialize (); - if (ACPI_FAILURE (Status)) - { - return Status; - } - - /* Setup the Table Manager (cheat - there is no RSDT) */ - - AcpiGbl_RootTableList.Size = 1; - AcpiGbl_RootTableList.Count = 0; - AcpiGbl_RootTableList.Tables = LocalTables; - - return Status; -} - - -/******************************************************************************* - * - * FUNCTION: AdAddExternalsToNamespace - * - * PARAMETERS: - * - * RETURN: Status - * - * DESCRIPTION: - * - ******************************************************************************/ - -void -AdAddExternalsToNamespace ( - void) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - ACPI_EXTERNAL_LIST *External = AcpiGbl_ExternalList; - ACPI_OPERAND_OBJECT *MethodDesc; - - - while (External) - { - Status = AcpiNsLookup (NULL, External->InternalPath, External->Type, - ACPI_IMODE_LOAD_PASS1, ACPI_NS_EXTERNAL | ACPI_NS_DONT_OPEN_SCOPE, - NULL, &Node); - - if (External->Type == ACPI_TYPE_METHOD) - { - MethodDesc = AcpiUtCreateInternalObject (ACPI_TYPE_METHOD); - MethodDesc->Method.ParamCount = (UINT8) External->Value; - Node->Object = MethodDesc; - } - - External = External->Next; - } -} - - -/******************************************************************************* - * - * FUNCTION: AdMethodExternalCount - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Return the number of externals that have been generated - * - ******************************************************************************/ - -UINT32 -AdMethodExternalCount ( - void) -{ - ACPI_EXTERNAL_LIST *External = AcpiGbl_ExternalList; - UINT32 Count = 0; - - - while (External) - { - if (External->Type == ACPI_TYPE_METHOD) - { - Count++; - } - - External = External->Next; - } - - return (Count); -} - - -/****************************************************************************** - * - * FUNCTION: AdAmlDisassemble - * - * PARAMETERS: Filename - AML input filename - * OutToFile - TRUE if output should go to a file - * Prefix - Path prefix for output - * OutFilename - where the filename is returned - * GetAllTables - TRUE if all tables are desired - * - * RETURN: Status - * - * DESCRIPTION: Disassemble an entire ACPI table - * - *****************************************************************************/ - -extern char *Gbl_ExternalFilename; - -ACPI_STATUS -AdAmlDisassemble ( - BOOLEAN OutToFile, - char *Filename, - char *Prefix, - char **OutFilename, - BOOLEAN GetAllTables) -{ - ACPI_STATUS Status; - char *DisasmFilename = NULL; - FILE *File = NULL; - ACPI_TABLE_HEADER *Table; - ACPI_TABLE_HEADER *ExternalTable; - - - /* - * Input: AML Code from either a file, - * or via GetTables (memory or registry) - */ - if (Filename) - { - Status = AcpiDbGetTableFromFile (Filename, &Table); - if (ACPI_FAILURE (Status)) - { - return Status; - } - - if (Gbl_ExternalFilename) - { - Status = AcpiDbGetTableFromFile (Gbl_ExternalFilename, &ExternalTable); - if (ACPI_FAILURE (Status)) - { - return Status; - } - } - } - else - { - Status = AdGetLocalTables (Filename, GetAllTables); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not get ACPI tables, %s\n", - AcpiFormatException (Status)); - return Status; - } - - if (!AcpiGbl_DbOpt_disasm) - { - return AE_OK; - } - - /* Obtained the local tables, just disassemble the DSDT */ - - Status = AcpiGetTable (ACPI_SIG_DSDT, 0, &Table); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not get DSDT, %s\n", - AcpiFormatException (Status)); - return Status; - } - - AcpiOsPrintf ("\nDisassembly of DSDT\n"); - Prefix = AdGenerateFilename ("dsdt", Table->OemTableId); - } - - /* - * Output: ASL code. - * Redirect to a file if requested - */ - if (OutToFile) - { - /* Create/Open a disassembly output file */ - - DisasmFilename = FlGenerateFilename (Prefix, FILE_SUFFIX_DISASSEMBLY); - if (!OutFilename) - { - fprintf (stderr, "Could not generate output filename\n"); - Status = AE_ERROR; - goto Cleanup; - } - - File = fopen (DisasmFilename, "w+"); - if (!File) - { - fprintf (stderr, "Could not open output file %s\n", DisasmFilename); - Status = AE_ERROR; - goto Cleanup; - } - - AcpiOsRedirectOutput (File); - } - - *OutFilename = DisasmFilename; - - if (!AcpiUtIsAmlTable (Table)) - { - AdDisassemblerHeader (Filename); - AcpiOsPrintf (" * ACPI Data Table [%4.4s]\n *\n", - Table->Signature); - AcpiOsPrintf (" * Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue\n */\n\n"); - - AcpiDmDumpDataTable (Table); - fprintf (stderr, "Acpi Data Table [%4.4s] decoded, written to \"%s\"\n", - Table->Signature, DisasmFilename); - } - else - { - /* Always parse the tables, only option is what to display */ - - Status = AdParseTable (Table); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not parse ACPI tables, %s\n", - AcpiFormatException (Status)); - goto Cleanup; - } - - if (AslCompilerdebug) - { - AcpiOsPrintf ("/**** Before second load\n"); - - LsSetupNsList (File); - LsDisplayNamespace (); - AcpiOsPrintf ("*****/\n"); - } - - /* - * Load namespace from names created within control methods - */ - AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, AcpiGbl_RootNode); - - /* - * Cross reference the namespace here, in order to generate External() statements - */ - AcpiDmCrossReferenceNamespace (AcpiGbl_ParseOpRoot, AcpiGbl_RootNode); - - if (AslCompilerdebug) - { - AcpiDmDumpTree (AcpiGbl_ParseOpRoot); - } - - /* Find possible calls to external control methods */ - - AcpiDmFindOrphanMethods (AcpiGbl_ParseOpRoot); - - /* Convert fixed-offset references to resource descriptors to symbolic references */ - - AcpiDmConvertResourceIndexes (AcpiGbl_ParseOpRoot, AcpiGbl_RootNode); - - if (AslCompilerdebug) - { - AcpiOsPrintf ("/**** After second load and resource conversion\n"); - LsSetupNsList (File); - LsDisplayNamespace (); - AcpiOsPrintf ("*****/\n"); - } - - /* - * If we found any external control methods, we must reparse the entire - * tree with the new information (namely, the number of arguments per - * method) - */ - if (AdMethodExternalCount ()) - { - fprintf (stderr, - "\nFound %d external control methods, reparsing with new information\n", - AdMethodExternalCount()); - - /* - * Reparse, rebuild namespace. no need to xref namespace - */ - AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot); - AcpiNsDeleteNamespaceSubtree (AcpiGbl_RootNode); - - AcpiGbl_RootNode = NULL; - AcpiGbl_RootNodeStruct.Name.Integer = ACPI_ROOT_NAME; - AcpiGbl_RootNodeStruct.DescriptorType = ACPI_DESC_TYPE_NAMED; - AcpiGbl_RootNodeStruct.Type = ACPI_TYPE_DEVICE; - AcpiGbl_RootNodeStruct.Child = NULL; - AcpiGbl_RootNodeStruct.Peer = NULL; - AcpiGbl_RootNodeStruct.Object = NULL; - AcpiGbl_RootNodeStruct.Flags = ANOBJ_END_OF_PEER_LIST; - - Status = AcpiNsRootInitialize (); - AdAddExternalsToNamespace (); - - Status = AdParseTable (Table); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not parse ACPI tables, %s\n", - AcpiFormatException (Status)); - goto Cleanup; - } - - if (AslCompilerdebug) - { - AcpiDmDumpTree (AcpiGbl_ParseOpRoot); - } - } - - /* Optional displays */ - - if (AcpiGbl_DbOpt_disasm) - { - AdDisplayTables (Filename, Table); - fprintf (stderr, - "Disassembly completed, written to \"%s\"\n", - DisasmFilename); - } - } - -Cleanup: - if (OutToFile && File) - { - -#ifdef ASL_DISASM_DEBUG - LsSetupNsList (File); - LsDisplayNamespace (); -#endif - fclose (File); - AcpiOsRedirectOutput (stdout); - } - - AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot); - return Status; -} - - -/****************************************************************************** - * - * FUNCTION: AdDisassemblerHeader - * - * PARAMETERS: Filename - Input file for the table - * - * RETURN: None - * - * DESCRIPTION: Create the disassembler header, including ACPI CA signon with - * current time and date. - * - *****************************************************************************/ - -void -AdDisassemblerHeader ( - char *Filename) -{ - time_t Timer; - - time (&Timer); - - /* Header and input table info */ - - AcpiOsPrintf ("/*\n * Intel ACPI Component Architecture\n"); - AcpiOsPrintf (" * AML Disassembler version %8.8X\n", ACPI_CA_VERSION); - - AcpiOsPrintf (" *\n * Disassembly of %s, %s", Filename, ctime (&Timer)); - AcpiOsPrintf (" *\n"); -} - - -/****************************************************************************** - * - * FUNCTION: AdCreateTableHeader - * - * PARAMETERS: Filename - Input file for the table - * Table - Pointer to the raw table - * - * RETURN: None - * - * DESCRIPTION: Create the ASL table header, including ACPI CA signon with - * current time and date. - * - *****************************************************************************/ - -void -AdCreateTableHeader ( - char *Filename, - ACPI_TABLE_HEADER *Table) -{ - char *NewFilename; - - - AdDisassemblerHeader (Filename); - - AcpiOsPrintf (" *\n * Original Table Header:\n"); - AcpiOsPrintf (" * Signature \"%4.4s\"\n", Table->Signature); - AcpiOsPrintf (" * Length 0x%8.8X (%u)\n", Table->Length, Table->Length); - AcpiOsPrintf (" * Revision 0x%2.2X\n", Table->Revision); - AcpiOsPrintf (" * OEM ID \"%.6s\"\n", Table->OemId); - AcpiOsPrintf (" * OEM Table ID \"%.8s\"\n", Table->OemTableId); - AcpiOsPrintf (" * OEM Revision 0x%8.8X (%u)\n", Table->OemRevision, Table->OemRevision); - AcpiOsPrintf (" * Creator ID \"%.4s\"\n", Table->AslCompilerId); - AcpiOsPrintf (" * Creator Revision 0x%8.8X (%u)\n", Table->AslCompilerRevision, Table->AslCompilerRevision); - AcpiOsPrintf (" */\n"); - - /* Create AML output filename based on input filename */ - - if (Filename) - { - NewFilename = FlGenerateFilename (Filename, "aml"); - } - else - { - NewFilename = ACPI_ALLOCATE_ZEROED (9); - strncat (NewFilename, Table->Signature, 4); - strcat (NewFilename, ".aml"); - } - - /* Open the ASL definition block */ - - AcpiOsPrintf ( - "DefinitionBlock (\"%s\", \"%4.4s\", %hd, \"%.6s\", \"%.8s\", 0x%8.8X)\n", - NewFilename, Table->Signature, Table->Revision, - Table->OemId, Table->OemTableId, Table->OemRevision); -} - - -/****************************************************************************** - * - * FUNCTION: AdDisplayTables - * - * PARAMETERS: Filename - Input file for the table - * Table - Pointer to the raw table - * - * RETURN: Status - * - * DESCRIPTION: Display (disassemble) loaded tables and dump raw tables - * - *****************************************************************************/ - -ACPI_STATUS -AdDisplayTables ( - char *Filename, - ACPI_TABLE_HEADER *Table) -{ - - - if (!AcpiGbl_ParseOpRoot) - { - return AE_NOT_EXIST; - } - - if (!AcpiGbl_DbOpt_verbose) - { - AdCreateTableHeader (Filename, Table); - } - - AcpiDmDisassemble (NULL, AcpiGbl_ParseOpRoot, ACPI_UINT32_MAX); - - if (AcpiGbl_DbOpt_verbose) - { - AcpiOsPrintf ("\n\nTable Header:\n"); - AcpiUtDumpBuffer ((UINT8 *) Table, sizeof (ACPI_TABLE_HEADER), - DB_BYTE_DISPLAY, ACPI_UINT32_MAX); - - AcpiOsPrintf ("Table Body (Length 0x%X)\n", Table->Length); - AcpiUtDumpBuffer (((UINT8 *) Table + sizeof (ACPI_TABLE_HEADER)), Table->Length, - DB_BYTE_DISPLAY, ACPI_UINT32_MAX); - } - - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AdDeferredParse - * - * PARAMETERS: Op - Root Op of the deferred opcode - * Aml - Pointer to the raw AML - * AmlLength - Length of the AML - * - * RETURN: Status - * - * DESCRIPTION: Parse one deferred opcode - * (Methods, operation regions, etc.) - * - *****************************************************************************/ - -ACPI_STATUS -AdDeferredParse ( - ACPI_PARSE_OBJECT *Op, - UINT8 *Aml, - UINT32 AmlLength) -{ - ACPI_WALK_STATE *WalkState; - ACPI_STATUS Status; - ACPI_PARSE_OBJECT *SearchOp; - ACPI_PARSE_OBJECT *StartOp; - UINT32 BaseAmlOffset; - ACPI_PARSE_OBJECT *ExtraOp; - - - ACPI_FUNCTION_TRACE (AdDeferredParse); - - - fprintf (stderr, "."); - - if (!Aml || !AmlLength) - { - return_ACPI_STATUS (AE_OK); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Parsing %s [%4.4s]\n", - Op->Common.AmlOpName, (char *) &Op->Named.Name)); - - WalkState = AcpiDsCreateWalkState (0, Op, NULL, NULL); - if (!WalkState) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - Status = AcpiDsInitAmlWalk (WalkState, Op, NULL, Aml, - AmlLength, NULL, ACPI_IMODE_LOAD_PASS1); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Parse the method */ - - WalkState->ParseFlags &= ~ACPI_PARSE_DELETE_TREE; - WalkState->ParseFlags |= ACPI_PARSE_DISASSEMBLE; - Status = AcpiPsParseAml (WalkState); - - /* - * We need to update all of the Aml offsets, since the parser thought - * that the method began at offset zero. In reality, it began somewhere - * within the ACPI table, at the BaseAmlOffset. Walk the entire tree that - * was just created and update the AmlOffset in each Op - */ - BaseAmlOffset = (Op->Common.Value.Arg)->Common.AmlOffset + 1; - StartOp = (Op->Common.Value.Arg)->Common.Next; - SearchOp = StartOp; - - /* Walk the parse tree */ - - while (SearchOp) - { - SearchOp->Common.AmlOffset += BaseAmlOffset; - SearchOp = AcpiPsGetDepthNext (StartOp, SearchOp); - } - - /* - * Link the newly parsed subtree into the main parse tree - */ - switch (Op->Common.AmlOpcode) - { - case AML_BUFFER_OP: - case AML_PACKAGE_OP: - case AML_VAR_PACKAGE_OP: - - switch (Op->Common.AmlOpcode) - { - case AML_PACKAGE_OP: - ExtraOp = Op->Common.Value.Arg; - ExtraOp = ExtraOp->Common.Next; - Op->Common.Value.Arg = ExtraOp->Common.Value.Arg; - break; - - case AML_VAR_PACKAGE_OP: - case AML_BUFFER_OP: - default: - ExtraOp = Op->Common.Value.Arg; - Op->Common.Value.Arg = ExtraOp->Common.Value.Arg; - break; - } - - /* Must point all parents to the main tree */ - - StartOp = Op; - SearchOp = StartOp; - while (SearchOp) - { - if (SearchOp->Common.Parent == ExtraOp) - { - SearchOp->Common.Parent = Op; - } - SearchOp = AcpiPsGetDepthNext (StartOp, SearchOp); - } - break; - - default: - break; - } - - return_ACPI_STATUS (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AdParseDeferredOps - * - * PARAMETERS: Root - Root of the parse tree - * - * RETURN: Status - * - * DESCRIPTION: Parse the deferred opcodes (Methods, regions, etc.) - * - *****************************************************************************/ - -ACPI_STATUS -AdParseDeferredOps ( - ACPI_PARSE_OBJECT *Root) -{ - ACPI_PARSE_OBJECT *Op = Root; - ACPI_STATUS Status = AE_OK; - const ACPI_OPCODE_INFO *OpInfo; - - - ACPI_FUNCTION_NAME (AdParseDeferredOps); - fprintf (stderr, "Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)\n"); - - while (Op) - { - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - if (!(OpInfo->Flags & AML_DEFER)) - { - Op = AcpiPsGetDepthNext (Root, Op); - continue; - } - - switch (Op->Common.AmlOpcode) - { - case AML_METHOD_OP: - case AML_BUFFER_OP: - case AML_PACKAGE_OP: - case AML_VAR_PACKAGE_OP: - - Status = AdDeferredParse (Op, Op->Named.Data, Op->Named.Length); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - break; - - case AML_REGION_OP: - case AML_CREATE_QWORD_FIELD_OP: - case AML_CREATE_DWORD_FIELD_OP: - case AML_CREATE_WORD_FIELD_OP: - case AML_CREATE_BYTE_FIELD_OP: - case AML_CREATE_BIT_FIELD_OP: - case AML_CREATE_FIELD_OP: - - /* Nothing to do in these cases */ - - break; - - default: - ACPI_ERROR ((AE_INFO, "Unhandled deferred opcode [%s]", - Op->Common.AmlOpName)); - break; - } - - Op = AcpiPsGetDepthNext (Root, Op); - } - - fprintf (stderr, "\n"); - return Status; -} - - -/****************************************************************************** - * - * FUNCTION: AdGetLocalTables - * - * PARAMETERS: Filename - Not used - * GetAllTables - TRUE if all tables are desired - * - * RETURN: Status - * - * DESCRIPTION: Get the ACPI tables from either memory or a file - * - *****************************************************************************/ - -ACPI_STATUS -AdGetLocalTables ( - char *Filename, - BOOLEAN GetAllTables) -{ - ACPI_STATUS Status; - ACPI_TABLE_HEADER TableHeader; - ACPI_TABLE_HEADER *NewTable; - UINT32 NumTables; - UINT32 PointerSize; - ACPI_NATIVE_UINT TableIndex; - - - if (GetAllTables) - { - ACPI_MOVE_32_TO_32 (TableHeader.Signature, ACPI_SIG_RSDT); - AcpiOsTableOverride (&TableHeader, &NewTable); - if (!NewTable) - { - fprintf (stderr, "Could not obtain RSDT\n"); - return AE_NO_ACPI_TABLES; - } - - if (ACPI_COMPARE_NAME (NewTable->Signature, ACPI_SIG_RSDT)) - { - PointerSize = sizeof (UINT32); - } - else - { - PointerSize = sizeof (UINT64); - } - - /* - * Determine the number of tables pointed to by the RSDT/XSDT. - * This is defined by the ACPI Specification to be the number of - * pointers contained within the RSDT/XSDT. The size of the pointers - * is architecture-dependent. - */ - NumTables = (NewTable->Length - sizeof (ACPI_TABLE_HEADER)) / PointerSize; - AcpiOsPrintf ("There are %d tables defined in the %4.4s\n\n", - NumTables, NewTable->Signature); - - /* Get the FADT */ - - ACPI_MOVE_32_TO_32 (TableHeader.Signature, ACPI_SIG_FADT); - AcpiOsTableOverride (&TableHeader, &NewTable); - if (NewTable) - { - AdWriteTable (NewTable, NewTable->Length, - ACPI_SIG_FADT, NewTable->OemTableId); - } - AcpiOsPrintf ("\n"); - - /* Don't bother with FACS, it is usually all zeros */ - } - - /* Always get the DSDT */ - - ACPI_MOVE_32_TO_32 (TableHeader.Signature, ACPI_SIG_DSDT); - AcpiOsTableOverride (&TableHeader, &NewTable); - if (NewTable) - { - AdWriteTable (NewTable, NewTable->Length, - ACPI_SIG_DSDT, NewTable->OemTableId); - - /* Store DSDT in the Table Manager */ - - Status = AcpiTbStoreTable (0, NewTable, NewTable->Length, - 0, &TableIndex); - } - else - { - fprintf (stderr, "Could not obtain DSDT\n"); - return AE_NO_ACPI_TABLES; - } - -#if 0 - /* TBD: Future implementation */ - - AcpiOsPrintf ("\n"); - - /* Get all SSDTs */ - - ACPI_MOVE_32_TO_32 (TableHeader.Signature, ACPI_SIG_SSDT); - do - { - NewTable = NULL; - Status = AcpiOsTableOverride (&TableHeader, &NewTable); - - } while (NewTable); -#endif - - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AdParseTable - * - * PARAMETERS: Table - Pointer to the raw table - * - * RETURN: Status - * - * DESCRIPTION: Parse the DSDT. - * - *****************************************************************************/ - -ACPI_STATUS -AdParseTable ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status = AE_OK; - ACPI_WALK_STATE *WalkState; - UINT8 *AmlStart; - UINT32 AmlLength; - ACPI_NATIVE_UINT TableIndex; - - - if (!Table) - { - return AE_NOT_EXIST; - } - - /* Pass 1: Parse everything except control method bodies */ - - fprintf (stderr, "Pass 1 parse of [%4.4s]\n", (char *) Table->Signature); - - AmlLength = Table->Length - sizeof (ACPI_TABLE_HEADER); - AmlStart = ((UINT8 *) Table + sizeof (ACPI_TABLE_HEADER)); - - /* Create the root object */ - - AcpiGbl_ParseOpRoot = AcpiPsCreateScopeOp (); - if (!AcpiGbl_ParseOpRoot) - { - return AE_NO_MEMORY; - } - - /* Create and initialize a new walk state */ - - WalkState = AcpiDsCreateWalkState (0, - AcpiGbl_ParseOpRoot, NULL, NULL); - if (!WalkState) - { - return (AE_NO_MEMORY); - } - - Status = AcpiDsInitAmlWalk (WalkState, AcpiGbl_ParseOpRoot, - NULL, AmlStart, AmlLength, NULL, ACPI_IMODE_LOAD_PASS1); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - WalkState->ParseFlags &= ~ACPI_PARSE_DELETE_TREE; - WalkState->ParseFlags |= ACPI_PARSE_DISASSEMBLE; - - Status = AcpiPsParseAml (WalkState); - if (ACPI_FAILURE (Status)) - { - return Status; - } - - /* Pass 2 */ - - Status = AcpiTbStoreTable ((ACPI_NATIVE_UINT) Table, Table, - Table->Length, ACPI_TABLE_ORIGIN_ALLOCATED, &TableIndex); - if (ACPI_FAILURE (Status)) - { - return Status; - } - - fprintf (stderr, "Pass 2 parse of [%4.4s]\n", (char *) Table->Signature); - - Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS2, 0); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* Pass 3: Parse control methods and link their parse trees into the main parse tree */ - - Status = AdParseDeferredOps (AcpiGbl_ParseOpRoot); - - /* Process Resource Templates */ - - AcpiDmFindResources (AcpiGbl_ParseOpRoot); - - fprintf (stderr, "Parsing completed\n"); - return AE_OK; -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/common/adwalk.c b/sys/contrib/dev/acpica-unix-20061109/common/adwalk.c deleted file mode 100644 index 6fd47d1f69..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/common/adwalk.c +++ /dev/null @@ -1,1001 +0,0 @@ -/****************************************************************************** - * - * Module Name: adwalk - Application-level disassembler parse tree walk routines - * $Revision: 1.5 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" -#include "acdebug.h" -#include "acdisasm.h" -#include "acdispat.h" -#include "acnamesp.h" -#include "acapps.h" - - -#define _COMPONENT ACPI_TOOLS - ACPI_MODULE_NAME ("adwalk") - -/* - * aslmap - opcode mappings and reserved method names - */ -ACPI_OBJECT_TYPE -AslMapNamedOpcodeToDataType ( - UINT16 Opcode); - -/* Local prototypes */ - -static ACPI_STATUS -AcpiDmFindOrphanDescending ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -static ACPI_STATUS -AcpiDmDumpDescending ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -static ACPI_STATUS -AcpiDmXrefDescendingOp ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -static ACPI_STATUS -AcpiDmCommonAscendingOp ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -static ACPI_STATUS -AcpiDmLoadDescendingOp ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -static UINT32 -AcpiDmInspectPossibleArgs ( - UINT32 CurrentOpArgCount, - UINT32 TargetCount, - ACPI_PARSE_OBJECT *Op); - -static ACPI_STATUS -AcpiDmResourceDescendingOp ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpTree - * - * PARAMETERS: Origin - Starting object - * - * RETURN: None - * - * DESCRIPTION: Parse tree walk to format and output the nodes - * - ******************************************************************************/ - -void -AcpiDmDumpTree ( - ACPI_PARSE_OBJECT *Origin) -{ - ACPI_OP_WALK_INFO Info; - - - if (!Origin) - { - return; - } - - AcpiOsPrintf ("/*\nAML Parse Tree\n\n"); - Info.Flags = 0; - Info.Count = 0; - Info.Level = 0; - Info.WalkState = NULL; - AcpiDmWalkParseTree (Origin, AcpiDmDumpDescending, NULL, &Info); - AcpiOsPrintf ("*/\n\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmFindOrphanMethods - * - * PARAMETERS: Origin - Starting object - * - * RETURN: None - * - * DESCRIPTION: Parse tree walk to find "orphaned" method invocations -- methods - * that are not resolved in the namespace - * - ******************************************************************************/ - -void -AcpiDmFindOrphanMethods ( - ACPI_PARSE_OBJECT *Origin) -{ - ACPI_OP_WALK_INFO Info; - - - if (!Origin) - { - return; - } - - Info.Flags = 0; - Info.Level = 0; - Info.WalkState = NULL; - AcpiDmWalkParseTree (Origin, AcpiDmFindOrphanDescending, NULL, &Info); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmFinishNamespaceLoad - * - * PARAMETERS: ParseTreeRoot - Root of the parse tree - * NamespaceRoot - Root of the internal namespace - * - * RETURN: None - * - * DESCRIPTION: Load all namespace items that are created within control - * methods. Used before namespace cross reference - * - ******************************************************************************/ - -void -AcpiDmFinishNamespaceLoad ( - ACPI_PARSE_OBJECT *ParseTreeRoot, - ACPI_NAMESPACE_NODE *NamespaceRoot) -{ - ACPI_STATUS Status; - ACPI_OP_WALK_INFO Info; - ACPI_WALK_STATE *WalkState; - - - if (!ParseTreeRoot) - { - return; - } - - /* Create and initialize a new walk state */ - - WalkState = AcpiDsCreateWalkState (0, ParseTreeRoot, NULL, NULL); - if (!WalkState) - { - return; - } - - Status = AcpiDsScopeStackPush (NamespaceRoot, NamespaceRoot->Type, WalkState); - if (ACPI_FAILURE (Status)) - { - return; - } - - Info.Flags = 0; - Info.Level = 0; - Info.WalkState = WalkState; - AcpiDmWalkParseTree (ParseTreeRoot, AcpiDmLoadDescendingOp, - AcpiDmCommonAscendingOp, &Info); - ACPI_FREE (WalkState); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmCrossReferenceNamespace - * - * PARAMETERS: ParseTreeRoot - Root of the parse tree - * NamespaceRoot - Root of the internal namespace - * - * RETURN: None - * - * DESCRIPTION: Cross reference the namespace to create externals - * - ******************************************************************************/ - -void -AcpiDmCrossReferenceNamespace ( - ACPI_PARSE_OBJECT *ParseTreeRoot, - ACPI_NAMESPACE_NODE *NamespaceRoot) -{ - ACPI_STATUS Status; - ACPI_OP_WALK_INFO Info; - ACPI_WALK_STATE *WalkState; - - - if (!ParseTreeRoot) - { - return; - } - - /* Create and initialize a new walk state */ - - WalkState = AcpiDsCreateWalkState (0, ParseTreeRoot, NULL, NULL); - if (!WalkState) - { - return; - } - - Status = AcpiDsScopeStackPush (NamespaceRoot, NamespaceRoot->Type, WalkState); - if (ACPI_FAILURE (Status)) - { - return; - } - - Info.Flags = 0; - Info.Level = 0; - Info.WalkState = WalkState; - AcpiDmWalkParseTree (ParseTreeRoot, AcpiDmXrefDescendingOp, - AcpiDmCommonAscendingOp, &Info); - ACPI_FREE (WalkState); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmConvertResourceIndexes - * - * PARAMETERS: ParseTreeRoot - Root of the parse tree - * NamespaceRoot - Root of the internal namespace - * - * RETURN: None - * - * DESCRIPTION: Convert fixed-offset references to resource descriptors to - * symbolic references. Should only be called after namespace has - * been cross referenced. - * - ******************************************************************************/ - -void -AcpiDmConvertResourceIndexes ( - ACPI_PARSE_OBJECT *ParseTreeRoot, - ACPI_NAMESPACE_NODE *NamespaceRoot) -{ - ACPI_STATUS Status; - ACPI_OP_WALK_INFO Info; - ACPI_WALK_STATE *WalkState; - - - if (!ParseTreeRoot) - { - return; - } - - /* Create and initialize a new walk state */ - - WalkState = AcpiDsCreateWalkState (0, ParseTreeRoot, NULL, NULL); - if (!WalkState) - { - return; - } - - Status = AcpiDsScopeStackPush (NamespaceRoot, NamespaceRoot->Type, WalkState); - if (ACPI_FAILURE (Status)) - { - return; - } - - Info.Flags = 0; - Info.Level = 0; - Info.WalkState = WalkState; - AcpiDmWalkParseTree (ParseTreeRoot, AcpiDmResourceDescendingOp, - AcpiDmCommonAscendingOp, &Info); - ACPI_FREE (WalkState); - return; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpDescending - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Format and print contents of one parse Op. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDmDumpDescending ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - ACPI_OP_WALK_INFO *Info = Context; - const ACPI_OPCODE_INFO *OpInfo; - char *Path; - - - if (!Op) - { - return (AE_OK); - } - - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - Info->Count++; - - /* Most of the information (count, level, name) here */ - - AcpiOsPrintf ("% 5d [%2.2d] ", Info->Count, Level); - AcpiDmIndent (Level); - AcpiOsPrintf ("%-28s", AcpiPsGetOpcodeName (Op->Common.AmlOpcode)); - - /* Extra info is helpful */ - - switch (Op->Common.AmlOpcode) - { - case AML_BYTE_OP: - case AML_WORD_OP: - case AML_DWORD_OP: - AcpiOsPrintf ("%X", (UINT32) Op->Common.Value.Integer); - break; - - case AML_INT_NAMEPATH_OP: - if (Op->Common.Value.String) - { - AcpiNsExternalizeName (ACPI_UINT32_MAX, Op->Common.Value.String, - NULL, &Path); - AcpiOsPrintf ("%s %p", Path, Op->Common.Node); - ACPI_FREE (Path); - } - else - { - AcpiOsPrintf ("[NULL]"); - } - break; - - case AML_NAME_OP: - case AML_METHOD_OP: - case AML_DEVICE_OP: - case AML_INT_NAMEDFIELD_OP: - AcpiOsPrintf ("%4.4s", &Op->Named.Name); - break; - } - - AcpiOsPrintf ("\n"); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmFindOrphanDescending - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Check namepath Ops for orphaned method invocations - * - * Note: Experimental. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDmFindOrphanDescending ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - const ACPI_OPCODE_INFO *OpInfo; - ACPI_PARSE_OBJECT *ChildOp; - ACPI_PARSE_OBJECT *NextOp; - ACPI_PARSE_OBJECT *ParentOp; - UINT32 ArgCount; - - - if (!Op) - { - return (AE_OK); - } - - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - - switch (Op->Common.AmlOpcode) - { -#ifdef ACPI_UNDER_DEVELOPMENT - case AML_ADD_OP: - ChildOp = Op->Common.Value.Arg; - if ((ChildOp->Common.AmlOpcode == AML_INT_NAMEPATH_OP) && - !ChildOp->Common.Node) - { - AcpiNsExternalizeName (ACPI_UINT32_MAX, ChildOp->Common.Value.String, - NULL, &Path); - AcpiOsPrintf ("/* %-16s A-NAMEPATH: %s */\n", Op->Common.AmlOpName, Path); - ACPI_FREE (Path); - - NextOp = Op->Common.Next; - if (!NextOp) - { - /* This NamePath has no args, assume it is an integer */ - - AcpiDmAddToExternalList (ChildOp->Common.Value.String, ACPI_TYPE_INTEGER, 0); - return (AE_OK); - } - - ArgCount = AcpiDmInspectPossibleArgs (3, 1, NextOp); - AcpiOsPrintf ("/* A-CHILDREN: %d Actual %d */\n", ArgCount, AcpiDmCountChildren (Op)); - - if (ArgCount < 1) - { - /* One Arg means this is just a Store(Name,Target) */ - - AcpiDmAddToExternalList (ChildOp->Common.Value.String, ACPI_TYPE_INTEGER, 0); - return (AE_OK); - } - - AcpiDmAddToExternalList (ChildOp->Common.Value.String, ACPI_TYPE_METHOD, ArgCount); - } - break; -#endif - - case AML_STORE_OP: - - ChildOp = Op->Common.Value.Arg; - if ((ChildOp->Common.AmlOpcode == AML_INT_NAMEPATH_OP) && - !ChildOp->Common.Node) - { - NextOp = Op->Common.Next; - if (!NextOp) - { - /* This NamePath has no args, assume it is an integer */ - - AcpiDmAddToExternalList (ChildOp->Common.Value.String, ACPI_TYPE_INTEGER, 0); - return (AE_OK); - } - - ArgCount = AcpiDmInspectPossibleArgs (2, 1, NextOp); - if (ArgCount <= 1) - { - /* One Arg means this is just a Store(Name,Target) */ - - AcpiDmAddToExternalList (ChildOp->Common.Value.String, ACPI_TYPE_INTEGER, 0); - return (AE_OK); - } - - AcpiDmAddToExternalList (ChildOp->Common.Value.String, ACPI_TYPE_METHOD, ArgCount); - } - break; - - case AML_INT_NAMEPATH_OP: - - /* Must examine parent to see if this namepath is an argument */ - - ParentOp = Op->Common.Parent; - OpInfo = AcpiPsGetOpcodeInfo (ParentOp->Common.AmlOpcode); - - if ((OpInfo->Class != AML_CLASS_EXECUTE) && - (OpInfo->Class != AML_CLASS_CREATE) && - (ParentOp->Common.AmlOpcode != AML_INT_METHODCALL_OP) && - !Op->Common.Node) - { - ArgCount = AcpiDmInspectPossibleArgs (0, 0, Op->Common.Next); - - /* - * Check if namepath is a predicate for if/while or lone parameter to - * a return. - */ - if (ArgCount == 0) - { - if (((ParentOp->Common.AmlOpcode == AML_IF_OP) || - (ParentOp->Common.AmlOpcode == AML_WHILE_OP) || - (ParentOp->Common.AmlOpcode == AML_RETURN_OP)) && - - /* And namepath is the first argument */ - (ParentOp->Common.Value.Arg == Op)) - { - AcpiDmAddToExternalList (Op->Common.Value.String, ACPI_TYPE_INTEGER, 0); - break; - } - } - - /* - * This is a standalone namestring (not a parameter to another - * operator) - it *must* be a method invocation, nothing else is - * grammatically possible. - */ - AcpiDmAddToExternalList (Op->Common.Value.String, ACPI_TYPE_METHOD, ArgCount); - - } - break; - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmLoadDescendingOp - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Descending handler for namespace control method object load - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDmLoadDescendingOp ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - ACPI_OP_WALK_INFO *Info = Context; - const ACPI_OPCODE_INFO *OpInfo; - ACPI_WALK_STATE *WalkState; - ACPI_OBJECT_TYPE ObjectType; - ACPI_STATUS Status; - char *Path = NULL; - ACPI_PARSE_OBJECT *NextOp; - ACPI_NAMESPACE_NODE *Node; - - - WalkState = Info->WalkState; - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - ObjectType = OpInfo->ObjectType; - ObjectType = AslMapNamedOpcodeToDataType (Op->Asl.AmlOpcode); - - /* Only interested in operators that create new names */ - - if (!(OpInfo->Flags & AML_NAMED) && - !(OpInfo->Flags & AML_CREATE)) - { - goto Exit; - } - - /* Get the NamePath from the appropriate place */ - - if (OpInfo->Flags & AML_NAMED) - { - /* For all named operators, get the new name */ - - Path = (char *) Op->Named.Path; - } - else if (OpInfo->Flags & AML_CREATE) - { - /* New name is the last child */ - - NextOp = Op->Common.Value.Arg; - - while (NextOp->Common.Next) - { - NextOp = NextOp->Common.Next; - } - Path = NextOp->Common.Value.String; - } - - if (!Path) - { - goto Exit; - } - - /* Insert the name into the namespace */ - - Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, - ACPI_IMODE_LOAD_PASS2, ACPI_NS_DONT_OPEN_SCOPE, - WalkState, &Node); - - Op->Common.Node = Node; - - -Exit: - - if (AcpiNsOpensScope (ObjectType)) - { - if (Op->Common.Node) - { - Status = AcpiDsScopeStackPush (Op->Common.Node, ObjectType, WalkState); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - } - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmXrefDescendingOp - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Descending handler for namespace cross reference - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDmXrefDescendingOp ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - ACPI_OP_WALK_INFO *Info = Context; - const ACPI_OPCODE_INFO *OpInfo; - ACPI_WALK_STATE *WalkState; - ACPI_OBJECT_TYPE ObjectType; - ACPI_STATUS Status; - char *Path = NULL; - ACPI_PARSE_OBJECT *NextOp; - ACPI_NAMESPACE_NODE *Node; - - - WalkState = Info->WalkState; - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - ObjectType = OpInfo->ObjectType; - ObjectType = AslMapNamedOpcodeToDataType (Op->Asl.AmlOpcode); - - if ((!(OpInfo->Flags & AML_NAMED)) && - (!(OpInfo->Flags & AML_CREATE)) && - (Op->Common.AmlOpcode != AML_INT_NAMEPATH_OP)) - { - goto Exit; - } - - /* Get the NamePath from the appropriate place */ - - if (OpInfo->Flags & AML_NAMED) - { - if ((Op->Common.AmlOpcode == AML_ALIAS_OP) || - (Op->Common.AmlOpcode == AML_SCOPE_OP)) - { - /* - * Only these two operators refer to an existing name, - * first argument - */ - Path = (char *) Op->Named.Path; - } - } - else if (OpInfo->Flags & AML_CREATE) - { - /* Referenced Buffer Name is the first child */ - - NextOp = Op->Common.Value.Arg; - if (NextOp->Common.AmlOpcode == AML_INT_NAMEPATH_OP) - { - Path = NextOp->Common.Value.String; - } - } - else - { - Path = Op->Common.Value.String; - } - - if (!Path) - { - goto Exit; - } - - /* - * Lookup the name in the namespace. Name must exist at this point, or it - * is an invalid reference. - * - * The namespace is also used as a lookup table for references to resource - * descriptors and the fields within them. - */ - Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ACPI_TYPE_ANY, - ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, - WalkState, &Node); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_NOT_FOUND) - { - AcpiDmAddToExternalList (Path, (UINT8) ObjectType, 0); - - /* - * We could install this into the namespace, but we catch duplicate - * externals when they are added to the list. - */ -#if 0 - Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ACPI_TYPE_ANY, - ACPI_IMODE_LOAD_PASS1, ACPI_NS_DONT_OPEN_SCOPE, - WalkState, &Node); -#endif - } - } - else - { - Op->Common.Node = Node; - } - - -Exit: - /* Open new scope if necessary */ - - if (AcpiNsOpensScope (ObjectType)) - { - if (Op->Common.Node) - { - Status = AcpiDsScopeStackPush (Op->Common.Node, ObjectType, WalkState); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - } - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmResourceDescendingOp - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: None - * - * DESCRIPTION: Process one parse op during symbolic resource index conversion. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDmResourceDescendingOp ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - ACPI_OP_WALK_INFO *Info = Context; - const ACPI_OPCODE_INFO *OpInfo; - ACPI_WALK_STATE *WalkState; - ACPI_OBJECT_TYPE ObjectType; - ACPI_STATUS Status; - - - WalkState = Info->WalkState; - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - - /* Open new scope if necessary */ - - ObjectType = OpInfo->ObjectType; - if (AcpiNsOpensScope (ObjectType)) - { - if (Op->Common.Node) - { - - Status = AcpiDsScopeStackPush (Op->Common.Node, ObjectType, WalkState); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - } - } - - /* - * Check if this operator contains a reference to a resource descriptor. - * If so, convert the reference into a symbolic reference. - */ - AcpiDmCheckResourceReference (Op, WalkState); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmCommonAscendingOp - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: None - * - * DESCRIPTION: Ascending handler for combined parse/namespace walks. Closes - * scope if necessary. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDmCommonAscendingOp ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - ACPI_OP_WALK_INFO *Info = Context; - const ACPI_OPCODE_INFO *OpInfo; - ACPI_OBJECT_TYPE ObjectType; - - - /* Close scope if necessary */ - - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - ObjectType = OpInfo->ObjectType; - ObjectType = AslMapNamedOpcodeToDataType (Op->Asl.AmlOpcode); - - if (AcpiNsOpensScope (ObjectType)) - { - (void) AcpiDsScopeStackPop (Info->WalkState); - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmInspectPossibleArgs - * - * PARAMETERS: CurrentOpArgCount - Which arg of the current op was the - * possible method invocation found - * TargetCount - Number of targets (0,1,2) for this op - * Op - Parse op - * - * RETURN: Status - * - * DESCRIPTION: Examine following args and next ops for possible arguments - * for an unrecognized method invocation. - * - ******************************************************************************/ - -static UINT32 -AcpiDmInspectPossibleArgs ( - UINT32 CurrentOpArgCount, - UINT32 TargetCount, - ACPI_PARSE_OBJECT *Op) -{ - const ACPI_OPCODE_INFO *OpInfo; - UINT32 i; - UINT32 Last = 0; - UINT32 Lookahead; - - - Lookahead = (ACPI_METHOD_NUM_ARGS + TargetCount) - CurrentOpArgCount; - - /* Lookahead for the maximum number of possible arguments */ - - for (i = 0; i < Lookahead; i++) - { - if (!Op) - { - break; - } - - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - - /* - * Any one of these operators is "very probably" not a method arg - */ - if ((Op->Common.AmlOpcode == AML_STORE_OP) || - (Op->Common.AmlOpcode == AML_NOTIFY_OP)) - { - break; - } - - if ((OpInfo->Class != AML_CLASS_EXECUTE) && - (OpInfo->Class != AML_CLASS_CONTROL)) - { - Last = i+1; - } - - Op = Op->Common.Next; - } - - return (Last); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/common/dmrestag.c b/sys/contrib/dev/acpica-unix-20061109/common/dmrestag.c deleted file mode 100644 index 3f26a93ad8..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/common/dmrestag.c +++ /dev/null @@ -1,990 +0,0 @@ -/****************************************************************************** - * - * Module Name: dmrestag - Add tags to resource descriptors (Application-level) - * $Revision: 1.10 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acparser.h" -#include "acdisasm.h" -#include "acnamesp.h" -#include "amlcode.h" - -/* This module used for application-level code only */ - -#define _COMPONENT ACPI_CA_DISASSEMBLER - ACPI_MODULE_NAME ("dmrestag") - -/* Local prototypes */ - -static void -AcpiDmUpdateResourceName ( - ACPI_NAMESPACE_NODE *ResourceNode); - -static char * -AcpiDmSearchTagList ( - UINT32 BitIndex, - ACPI_RESOURCE_TAG *TagList); - -static char * -AcpiDmGetResourceTag ( - UINT32 BitIndex, - AML_RESOURCE *Resource, - UINT8 ResourceIndex); - -static char * -AcpiGetTagPathname ( - ACPI_NAMESPACE_NODE *BufferNode, - ACPI_NAMESPACE_NODE *ResourceNode, - UINT32 BitIndex); - -static ACPI_NAMESPACE_NODE * -AcpiDmGetResourceNode ( - ACPI_NAMESPACE_NODE *BufferNode, - UINT32 BitIndex); - -static ACPI_STATUS -AcpiDmAddResourceToNamespace ( - UINT8 *Aml, - UINT32 Length, - UINT32 Offset, - UINT8 ResourceIndex, - void *Context); - -static void -AcpiDmAddResourcesToNamespace ( - ACPI_NAMESPACE_NODE *BufferNode, - ACPI_PARSE_OBJECT *Op); - - -/****************************************************************************** - * - * Resource Tag tables - * - * These are the predefined tags that refer to elements of a resource - * descriptor. Each name and offset is defined in the ACPI specification. - * - * Each table entry contains the bit offset of the field and the associated - * name. - * - ******************************************************************************/ - -static ACPI_RESOURCE_TAG AcpiDmIrqTags[] = -{ - {( 1 * 8), ACPI_RESTAG_INTERRUPT}, - {( 3 * 8) + 0, ACPI_RESTAG_INTERRUPTTYPE}, - {( 3 * 8) + 3, ACPI_RESTAG_INTERRUPTLEVEL}, - {( 3 * 8) + 4, ACPI_RESTAG_INTERRUPTSHARE}, - {0, NULL} -}; - -static ACPI_RESOURCE_TAG AcpiDmDmaTags[] = -{ - {( 1 * 8), ACPI_RESTAG_DMA}, - {( 2 * 8) + 0, ACPI_RESTAG_XFERTYPE}, - {( 2 * 8) + 2, ACPI_RESTAG_BUSMASTER}, - {( 2 * 8) + 5, ACPI_RESTAG_DMATYPE}, - {0, NULL} -}; - -static ACPI_RESOURCE_TAG AcpiDmIoTags[] = -{ - {( 1 * 8) + 0, ACPI_RESTAG_DECODE}, - {( 2 * 8), ACPI_RESTAG_MINADDR}, - {( 4 * 8), ACPI_RESTAG_MAXADDR}, - {( 6 * 8), ACPI_RESTAG_ALIGNMENT}, - {( 7 * 8), ACPI_RESTAG_LENGTH}, - {0, NULL} -}; - -static ACPI_RESOURCE_TAG AcpiDmFixedIoTags[] = -{ - {( 1 * 8), ACPI_RESTAG_BASEADDRESS}, - {( 3 * 8), ACPI_RESTAG_LENGTH}, - {0, NULL} -}; - -static ACPI_RESOURCE_TAG AcpiDmMemory24Tags[] = -{ - {( 3 * 8) + 0, ACPI_RESTAG_READWRITETYPE}, - {( 4 * 8), ACPI_RESTAG_MINADDR}, - {( 6 * 8), ACPI_RESTAG_MAXADDR}, - {( 8 * 8), ACPI_RESTAG_ALIGNMENT}, - {(10 * 8), ACPI_RESTAG_LENGTH}, - {0, NULL} -}; - -static ACPI_RESOURCE_TAG AcpiDmRegisterTags[] = -{ - {( 3 * 8), ACPI_RESTAG_ADDRESSSPACE}, - {( 4 * 8), ACPI_RESTAG_REGISTERBITWIDTH}, - {( 5 * 8), ACPI_RESTAG_REGISTERBITOFFSET}, - {( 6 * 8), ACPI_RESTAG_ACCESSSIZE}, - {( 7 * 8), ACPI_RESTAG_ADDRESS}, - {0, NULL} -}; - -static ACPI_RESOURCE_TAG AcpiDmMemory32Tags[] = -{ - {( 3 * 8) + 0, ACPI_RESTAG_READWRITETYPE}, - {( 4 * 8), ACPI_RESTAG_MINADDR}, - {( 8 * 8), ACPI_RESTAG_MAXADDR}, - {(12 * 8), ACPI_RESTAG_ALIGNMENT}, - {(16 * 8), ACPI_RESTAG_LENGTH}, - {0, NULL} -}; - -static ACPI_RESOURCE_TAG AcpiDmFixedMemory32Tags[] = -{ - {( 3 * 8) + 0, ACPI_RESTAG_READWRITETYPE}, - {( 4 * 8), ACPI_RESTAG_BASEADDRESS}, - {( 8 * 8), ACPI_RESTAG_LENGTH}, - {0, NULL} -}; - -static ACPI_RESOURCE_TAG AcpiDmInterruptTags[] = -{ - {( 3 * 8) + 1, ACPI_RESTAG_INTERRUPTTYPE}, - {( 3 * 8) + 2, ACPI_RESTAG_INTERRUPTLEVEL}, - {( 3 * 8) + 3, ACPI_RESTAG_INTERRUPTSHARE}, - {( 5 * 8), ACPI_RESTAG_INTERRUPT}, - {0, NULL} -}; - -static ACPI_RESOURCE_TAG AcpiDmAddress16Tags[] = -{ - {( 4 * 8) + 1, ACPI_RESTAG_DECODE}, - {( 4 * 8) + 2, ACPI_RESTAG_MINTYPE}, - {( 4 * 8) + 3, ACPI_RESTAG_MAXTYPE}, - {( 6 * 8), ACPI_RESTAG_GRANULARITY}, - {( 8 * 8), ACPI_RESTAG_MINADDR}, - {(10 * 8), ACPI_RESTAG_MAXADDR}, - {(12 * 8), ACPI_RESTAG_TRANSLATION}, - {(14 * 8), ACPI_RESTAG_LENGTH}, - {0, NULL} -}; - -static ACPI_RESOURCE_TAG AcpiDmAddress32Tags[] = -{ - {( 4 * 8) + 1, ACPI_RESTAG_DECODE}, - {( 4 * 8) + 2, ACPI_RESTAG_MINTYPE}, - {( 4 * 8) + 3, ACPI_RESTAG_MAXTYPE}, - {( 6 * 8), ACPI_RESTAG_GRANULARITY}, - {(10 * 8), ACPI_RESTAG_MINADDR}, - {(14 * 8), ACPI_RESTAG_MAXADDR}, - {(18 * 8), ACPI_RESTAG_TRANSLATION}, - {(22 * 8), ACPI_RESTAG_LENGTH}, - {0, NULL} -}; - -static ACPI_RESOURCE_TAG AcpiDmAddress64Tags[] = -{ - {( 4 * 8) + 1, ACPI_RESTAG_DECODE}, - {( 4 * 8) + 2, ACPI_RESTAG_MINTYPE}, - {( 4 * 8) + 3, ACPI_RESTAG_MAXTYPE}, - {( 6 * 8), ACPI_RESTAG_GRANULARITY}, - {(14 * 8), ACPI_RESTAG_MINADDR}, - {(22 * 8), ACPI_RESTAG_MAXADDR}, - {(30 * 8), ACPI_RESTAG_TRANSLATION}, - {(38 * 8), ACPI_RESTAG_LENGTH}, - {0, NULL} -}; - -static ACPI_RESOURCE_TAG AcpiDmExtendedAddressTags[] = -{ - {( 4 * 8) + 1, ACPI_RESTAG_DECODE}, - {( 4 * 8) + 2, ACPI_RESTAG_MINTYPE}, - {( 4 * 8) + 3, ACPI_RESTAG_MAXTYPE}, - {( 8 * 8), ACPI_RESTAG_GRANULARITY}, - {(16 * 8), ACPI_RESTAG_MINADDR}, - {(24 * 8), ACPI_RESTAG_MAXADDR}, - {(32 * 8), ACPI_RESTAG_TRANSLATION}, - {(40 * 8), ACPI_RESTAG_LENGTH}, - {(48 * 8), ACPI_RESTAG_TYPESPECIFICATTRIBUTES}, - {0, NULL} -}; - -/* Special-case tables for the type-specific flags */ - -static ACPI_RESOURCE_TAG AcpiDmMemoryFlagTags[] = -{ - {( 5 * 8) + 0, ACPI_RESTAG_READWRITETYPE}, - {( 5 * 8) + 1, ACPI_RESTAG_MEMTYPE}, - {( 5 * 8) + 3, ACPI_RESTAG_MEMATTRIBUTES}, - {( 5 * 8) + 5, ACPI_RESTAG_TYPE}, - {0, NULL} -}; - -static ACPI_RESOURCE_TAG AcpiDmIoFlagTags[] = -{ - {( 5 * 8) + 0, ACPI_RESTAG_RANGETYPE}, - {( 5 * 8) + 4, ACPI_RESTAG_TYPE}, - {( 5 * 8) + 5, ACPI_RESTAG_TRANSTYPE}, - {0, NULL} -}; - - -/* Dispatch table used to obtain the correct tag table for a descriptor */ - -static ACPI_RESOURCE_TAG *AcpiGbl_ResourceTags [] = -{ - /* Small descriptors */ - - NULL, /* 0x00, Reserved */ - NULL, /* 0x01, Reserved */ - NULL, /* 0x02, Reserved */ - NULL, /* 0x03, Reserved */ - AcpiDmIrqTags, /* 0x04, ACPI_RESOURCE_NAME_IRQ_FORMAT */ - AcpiDmDmaTags, /* 0x05, ACPI_RESOURCE_NAME_DMA_FORMAT */ - NULL, /* 0x06, ACPI_RESOURCE_NAME_START_DEPENDENT */ - NULL, /* 0x07, ACPI_RESOURCE_NAME_END_DEPENDENT */ - AcpiDmIoTags, /* 0x08, ACPI_RESOURCE_NAME_IO_PORT */ - AcpiDmFixedIoTags, /* 0x09, ACPI_RESOURCE_NAME_FIXED_IO_PORT */ - NULL, /* 0x0A, Reserved */ - NULL, /* 0x0B, Reserved */ - NULL, /* 0x0C, Reserved */ - NULL, /* 0x0D, Reserved */ - NULL, /* 0x0E, ACPI_RESOURCE_NAME_SMALL_VENDOR */ - NULL, /* 0x0F, ACPI_RESOURCE_NAME_END_TAG (not used) */ - - /* Large descriptors */ - - NULL, /* 0x00, Reserved */ - AcpiDmMemory24Tags, /* 0x01, ACPI_RESOURCE_NAME_MEMORY_24 */ - AcpiDmRegisterTags, /* 0x02, ACPI_RESOURCE_NAME_GENERIC_REGISTER */ - NULL, /* 0x03, Reserved */ - NULL, /* 0x04, ACPI_RESOURCE_NAME_LARGE_VENDOR */ - AcpiDmMemory32Tags, /* 0x05, ACPI_RESOURCE_NAME_MEMORY_32 */ - AcpiDmFixedMemory32Tags, /* 0x06, ACPI_RESOURCE_NAME_FIXED_MEMORY_32 */ - AcpiDmAddress32Tags, /* 0x07, ACPI_RESOURCE_NAME_DWORD_ADDRESS_SPACE */ - AcpiDmAddress16Tags, /* 0x08, ACPI_RESOURCE_NAME_WORD_ADDRESS_SPACE */ - AcpiDmInterruptTags, /* 0x09, ACPI_RESOURCE_NAME_EXTENDED_XRUPT */ - AcpiDmAddress64Tags, /* 0x0A, ACPI_RESOURCE_NAME_QWORD_ADDRESS_SPACE */ - AcpiDmExtendedAddressTags /* 0x0B, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS_SPACE */ -}; - - -/* - * Globals used to generate unique resource descriptor names. We use names that - * start with underscore and a prefix letter that is not used by other ACPI - * reserved names. To this, we append hex 0x00 through 0xFF. These 5 prefixes - * allow for 5*256 = 1280 unique names, probably sufficient for any single ASL - * file. If this becomes too small, we can use alpha+numerals for a total - * of 5*36*36 = 6480. - */ -#define ACPI_NUM_RES_PREFIX 5 - -static UINT32 AcpiGbl_NextResourceId = 0; -static UINT8 AcpiGbl_NextPrefix = 0; -static UINT8 AcpiGbl_Prefix[ACPI_NUM_RES_PREFIX] = - {'Y','Z','J','K','X'}; - - -/******************************************************************************* - * - * FUNCTION: AcpiDmCheckResourceReference - * - * PARAMETERS: Op - Parse Op for the AML opcode - * WalkState - Current walk state (with valid scope) - * - * RETURN: None - * - * DESCRIPTION: Convert a reference to a resource descriptor to a symbolic - * reference if possible - * - * NOTE: Bit index is used to transparently handle both resource bit - * fields and byte fields. - * - ******************************************************************************/ - -void -AcpiDmCheckResourceReference ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_PARSE_OBJECT *BufferNameOp; - ACPI_PARSE_OBJECT *IndexOp; - ACPI_NAMESPACE_NODE *BufferNode; - ACPI_NAMESPACE_NODE *ResourceNode; - const ACPI_OPCODE_INFO *OpInfo; - char *Pathname; - UINT32 BitIndex; - - - /* We are only interested in the CreateXxxxField opcodes */ - - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - if (OpInfo->Type != AML_TYPE_CREATE_FIELD) - { - return; - } - - /* Get the buffer term operand */ - - BufferNameOp = AcpiPsGetDepthNext (NULL, Op); - - /* Must be a named buffer, not an arg or local or method call */ - - if (BufferNameOp->Common.AmlOpcode != AML_INT_NAMEPATH_OP) - { - return; - } - - /* Get the Index term, must be an integer constant to convert */ - - IndexOp = BufferNameOp->Common.Next; - OpInfo = AcpiPsGetOpcodeInfo (IndexOp->Common.AmlOpcode); - if (OpInfo->ObjectType != ACPI_TYPE_INTEGER) - { - return; - } - - /* Get the bit offset of the descriptor within the buffer */ - - if ((Op->Common.AmlOpcode == AML_CREATE_BIT_FIELD_OP) || - (Op->Common.AmlOpcode == AML_CREATE_FIELD_OP)) - { - /* Index operand is a bit offset */ - - BitIndex = (UINT32) IndexOp->Common.Value.Integer; - } - else - { - /* Index operand is a byte offset, convert to bits */ - - BitIndex = (UINT32) ACPI_MUL_8 (IndexOp->Common.Value.Integer); - } - - /* Lookup the buffer in the namespace */ - - Status = AcpiNsLookup (WalkState->ScopeInfo, - BufferNameOp->Common.Value.String, ACPI_TYPE_BUFFER, - ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, - &BufferNode); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Validate object type, we must have a buffer */ - - if (BufferNode->Type != ACPI_TYPE_BUFFER) - { - return; - } - - /* Find the resource descriptor node corresponding to the index */ - - ResourceNode = AcpiDmGetResourceNode (BufferNode, BitIndex); - if (!ResourceNode) - { - return; - } - - /* Translate the Index to a resource tag pathname */ - - Pathname = AcpiGetTagPathname (BufferNode, ResourceNode, BitIndex); - if (Pathname) - { - /* Complete the conversion of the Index to a symbol */ - - IndexOp->Common.AmlOpcode = AML_INT_NAMEPATH_OP; - IndexOp->Common.Value.String = Pathname; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmGetResourceNode - * - * PARAMETERS: BufferNode - Node for the parent buffer - * BitIndex - Index into the resource descriptor - * - * RETURN: Namespace node for the resource descriptor. NULL if not found - * - * DESCRIPTION: Find a resource descriptor that corresponds to the bit index - * - ******************************************************************************/ - -static ACPI_NAMESPACE_NODE * -AcpiDmGetResourceNode ( - ACPI_NAMESPACE_NODE *BufferNode, - UINT32 BitIndex) -{ - ACPI_NAMESPACE_NODE *Node; - UINT32 ByteIndex = ACPI_DIV_8 (BitIndex); - - - /* - * Child list contains an entry for each resource descriptor. Find - * the descriptor that corresponds to the Index. - * - * If there are no children, this is not a resource template - */ - Node = BufferNode->Child; - while (Node) - { - /* - * Check if the Index falls within this resource. - * - * Value contains the resource offset, Object contains the resource - * length (both in bytes) - */ - if ((ByteIndex >= Node->Value) && - (ByteIndex < (Node->Value + Node->Length))) - { - return (Node); - } - - /* List is circular, this flag marks the end */ - - if (Node->Flags & ANOBJ_END_OF_PEER_LIST) - { - return (NULL); - } - - Node = Node->Peer; - } - - return (NULL); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiGetTagPathname - * - * PARAMETERS: BufferNode - Node for the parent buffer - * ResourceNode - Node for a resource descriptor - * BitIndex - Index into the resource descriptor - * - * RETURN: Full pathname for a resource tag. NULL if no match. - * Path is returned in AML (packed) format. - * - * DESCRIPTION: Convert a BitIndex into a symbolic resource tag (full pathname) - * - ******************************************************************************/ - -static char * -AcpiGetTagPathname ( - ACPI_NAMESPACE_NODE *BufferNode, - ACPI_NAMESPACE_NODE *ResourceNode, - UINT32 BitIndex) -{ - ACPI_STATUS Status; - UINT32 ResourceBitIndex; - UINT8 ResourceTableIndex; - ACPI_SIZE RequiredSize; - char *Pathname; - AML_RESOURCE *Aml; - ACPI_PARSE_OBJECT *Op; - char *InternalPath; - char *Tag; - - - /* Get the Op that contains the actual buffer data */ - - Op = BufferNode->Op->Common.Value.Arg; - Op = Op->Common.Next; - if (!Op) - { - return (NULL); - } - - /* Get the individual resource descriptor and validate it */ - - Aml = ACPI_CAST_PTR (AML_RESOURCE, - &Op->Named.Data[ResourceNode->Value]); - - Status = AcpiUtValidateResource (Aml, &ResourceTableIndex); - if (ACPI_FAILURE (Status)) - { - return (NULL); - } - - /* Get offset into this descriptor (from offset into entire buffer) */ - - ResourceBitIndex = BitIndex - ACPI_MUL_8 (ResourceNode->Value); - - /* Get the tag associated with this resource descriptor and offset */ - - Tag = AcpiDmGetResourceTag (ResourceBitIndex, Aml, ResourceTableIndex); - if (!Tag) - { - return (NULL); - } - - /* - * Now that we know that we have a reference that can be converted to a - * symbol, change the name of the resource to a unique name. - */ - AcpiDmUpdateResourceName (ResourceNode); - - /* Get the full pathname to the parent buffer */ - - RequiredSize = AcpiNsGetPathnameLength (BufferNode); - Pathname = ACPI_ALLOCATE_ZEROED (RequiredSize + ACPI_PATH_SEGMENT_LENGTH); - if (!Pathname) - { - return (NULL); - } - - AcpiNsBuildExternalPath (BufferNode, RequiredSize, Pathname); - - /* - * Create the full path to the resource and tag by: remove the buffer name, - * append the resource descriptor name, append a dot, append the tag name. - * - * TBD: Always using the full path is a bit brute force, the path can be - * often be optimized with carats (if the original buffer namepath is a - * single nameseg). This doesn't really matter, because these paths do not - * end up in the final compiled AML, it's just an appearance issue for the - * disassembled code. - */ - Pathname[ACPI_STRLEN (Pathname) - ACPI_NAME_SIZE] = 0; - ACPI_STRNCAT (Pathname, ResourceNode->Name.Ascii, ACPI_NAME_SIZE); - ACPI_STRCAT (Pathname, "."); - ACPI_STRNCAT (Pathname, Tag, ACPI_NAME_SIZE); - - /* Internalize the namepath to AML format */ - - AcpiNsInternalizeName (Pathname, &InternalPath); - ACPI_FREE (Pathname); - return (InternalPath); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmUpdateResourceName - * - * PARAMETERS: ResourceNode - Node for a resource descriptor - * - * RETURN: Stores new name in the ResourceNode - * - * DESCRIPTION: Create a new, unique name for a resource descriptor. Used by - * both the disassembly of the descriptor itself and any symbolic - * references to the descriptor. Ignored if a unique name has - * already been assigned to the resource. - * - * NOTE: Single threaded, suitable for applications only! - * - ******************************************************************************/ - -static void -AcpiDmUpdateResourceName ( - ACPI_NAMESPACE_NODE *ResourceNode) -{ - char Name[ACPI_NAME_SIZE]; - - - /* Ignore if a unique name has already been assigned */ - - if (ResourceNode->Name.Integer != ACPI_DEFAULT_RESNAME) - { - return; - } - - /* Generate a new ACPI name for the descriptor */ - - Name[0] = '_'; - Name[1] = AcpiGbl_Prefix[AcpiGbl_NextPrefix]; - Name[2] = AcpiUtHexToAsciiChar (AcpiGbl_NextResourceId, 4); - Name[3] = AcpiUtHexToAsciiChar (AcpiGbl_NextResourceId, 0); - - /* Update globals for next name */ - - AcpiGbl_NextResourceId++; - if (AcpiGbl_NextResourceId >= 256) - { - AcpiGbl_NextResourceId = 0; - AcpiGbl_NextPrefix++; - if (AcpiGbl_NextPrefix > ACPI_NUM_RES_PREFIX) - { - AcpiGbl_NextPrefix = 0; - } - } - - /* Change the resource descriptor name */ - - ResourceNode->Name.Integer = *(UINT32 *) Name; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmGetResourceTag - * - * PARAMETERS: BitIndex - Index into the resource descriptor - * Resource - Pointer to the raw resource data - * ResourceIndex - Index correspoinding to the resource type - * - * RETURN: Pointer to the resource tag (ACPI_NAME). NULL if no match. - * - * DESCRIPTION: Convert a BitIndex into a symbolic resource tag. - * - ******************************************************************************/ - -static char * -AcpiDmGetResourceTag ( - UINT32 BitIndex, - AML_RESOURCE *Resource, - UINT8 ResourceIndex) -{ - ACPI_RESOURCE_TAG *TagList; - char *Tag = NULL; - - - /* Get the tag list for this resource descriptor type */ - - TagList = AcpiGbl_ResourceTags[ResourceIndex]; - if (!TagList) - { - /* There are no tags for this resource type */ - - return (NULL); - } - - /* - * Handle the type-specific flags field for the address descriptors. - * Kindof brute force, but just blindly search for an index match. - */ - switch (Resource->DescriptorType) - { - case ACPI_RESOURCE_NAME_ADDRESS16: - case ACPI_RESOURCE_NAME_ADDRESS32: - case ACPI_RESOURCE_NAME_ADDRESS64: - case ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64: - - if (Resource->Address.ResourceType == ACPI_ADDRESS_TYPE_MEMORY_RANGE) - { - Tag = AcpiDmSearchTagList (BitIndex, AcpiDmMemoryFlagTags); - } - else if (Resource->Address.ResourceType == ACPI_ADDRESS_TYPE_IO_RANGE) - { - Tag = AcpiDmSearchTagList (BitIndex, AcpiDmIoFlagTags); - } - - /* If we found a match, all done. Else, drop to normal search below */ - - if (Tag) - { - return (Tag); - } - break; - - default: - break; - } - - /* Search the tag list for this descriptor type */ - - Tag = AcpiDmSearchTagList (BitIndex, TagList); - return (Tag); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmSearchTagList - * - * PARAMETERS: BitIndex - Index into the resource descriptor - * TagList - List to search - * - * RETURN: Pointer to a tag (ACPI_NAME). NULL if no match found. - * - * DESCRIPTION: Search a tag list for a match to the input BitIndex. Matches - * a fixed offset to a symbolic resource tag name. - * - ******************************************************************************/ - -static char * -AcpiDmSearchTagList ( - UINT32 BitIndex, - ACPI_RESOURCE_TAG *TagList) -{ - - /* - * Walk the null-terminated tag list to find a matching bit offset. - * We are looking for an exact match. - */ - for ( ; TagList->Tag; TagList++) - { - if (BitIndex == TagList->BitIndex) - { - return (TagList->Tag); - } - } - - /* A matching offset was not found */ - - return (NULL); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmFindResources - * - * PARAMETERS: Root - Root of the parse tree - * - * RETURN: None - * - * DESCRIPTION: Add all ResourceTemplate declarations to the namespace. Each - * resource descriptor in each template is given a node -- used - * for later conversion of resource references to symbolic refs. - * - ******************************************************************************/ - -void -AcpiDmFindResources ( - ACPI_PARSE_OBJECT *Root) -{ - ACPI_PARSE_OBJECT *Op = Root; - ACPI_PARSE_OBJECT *Parent; - - - /* Walk the entire parse tree */ - - while (Op) - { - /* We are interested in Buffer() declarations */ - - if (Op->Common.AmlOpcode == AML_BUFFER_OP) - { - /* And only declarations of the form Name (XXXX, Buffer()... ) */ - - Parent = Op->Common.Parent; - if (Parent->Common.AmlOpcode == AML_NAME_OP) - { - /* - * If the buffer is a resource template, add the individual - * resource descriptors to the namespace, as children of the - * buffer node. - */ - if (ACPI_SUCCESS (AcpiDmIsResourceTemplate (Op))) - { - Op->Common.DisasmOpcode = ACPI_DASM_RESOURCE; - AcpiDmAddResourcesToNamespace (Parent->Common.Node, Op); - } - } - } - - Op = AcpiPsGetDepthNext (Root, Op); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmAddResourcesToNamespace - * - * PARAMETERS: BufferNode - Node for the parent buffer - * Op - Parse op for the buffer - * - * RETURN: None - * - * DESCRIPTION: Add an entire resource template to the namespace. Each - * resource descriptor is added as a namespace node. - * - ******************************************************************************/ - -static void -AcpiDmAddResourcesToNamespace ( - ACPI_NAMESPACE_NODE *BufferNode, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *NextOp; - - - /* Get to the ByteData list */ - - NextOp = Op->Common.Value.Arg; - NextOp = NextOp->Common.Next; - if (!NextOp) - { - return; - } - - /* Set Node and Op to point to each other */ - - BufferNode->Op = Op; - Op->Common.Node = BufferNode; - - /* - * Insert each resource into the namespace - * NextOp contains the Aml pointer and the Aml length - */ - AcpiUtWalkAmlResources ((UINT8 *) NextOp->Named.Data, - (ACPI_SIZE) NextOp->Common.Value.Integer, - AcpiDmAddResourceToNamespace, BufferNode); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmAddResourceToNamespace - * - * PARAMETERS: ACPI_WALK_AML_CALLBACK - * BufferNode - Node for the parent buffer - * - * RETURN: Status - * - * DESCRIPTION: Add one resource descriptor to the namespace as a child of the - * parent buffer. The same name is used for each descriptor. This - * is changed later to a unique name if the resource is actually - * referenced by an AML operator. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDmAddResourceToNamespace ( - UINT8 *Aml, - UINT32 Length, - UINT32 Offset, - UINT8 ResourceIndex, - void *Context) -{ - ACPI_STATUS Status; - ACPI_GENERIC_STATE ScopeInfo; - ACPI_NAMESPACE_NODE *Node; - - - /* TBD: Don't need to add descriptors that have no tags defined? */ - - /* Add the resource to the namespace, as child of the buffer */ - - ScopeInfo.Scope.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Context); - Status = AcpiNsLookup (&ScopeInfo, "_TMP", ACPI_TYPE_LOCAL_RESOURCE, - ACPI_IMODE_LOAD_PASS2, - ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | ACPI_NS_PREFIX_IS_SCOPE, - NULL, &Node); - if (ACPI_FAILURE (Status)) - { - return (AE_OK); - } - - /* Set the name to the default, changed later if resource is referenced */ - - Node->Name.Integer = ACPI_DEFAULT_RESNAME; - - /* Save the offset of the descriptor (within the original buffer) */ - - Node->Value = Offset; - Node->Length = Length; - return (AE_OK); -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/common/dmtable.c b/sys/contrib/dev/acpica-unix-20061109/common/dmtable.c deleted file mode 100644 index b3455a6824..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/common/dmtable.c +++ /dev/null @@ -1,734 +0,0 @@ -/****************************************************************************** - * - * Module Name: dmtable - Support for ACPI tables that contain no AML code - * $Revision: 1.11 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "acdisasm.h" -#include "actables.h" - -/* This module used for application-level code only */ - -#define _COMPONENT ACPI_CA_DISASSEMBLER - ACPI_MODULE_NAME ("dmtable") - -/* Local Prototypes */ - -static ACPI_DMTABLE_DATA * -AcpiDmGetTableData ( - char *Signature); - -static void -AcpiDmCheckAscii ( - UINT8 *Target, - UINT32 Count); - - -/* These tables map a subtable type to a description string */ - -static const char *AcpiDmDmarSubnames[] = -{ - "Hardware Unit Definition", - "Reserved Memory Region", - "Unknown SubTable Type" /* Reserved */ -}; - -static const char *AcpiDmMadtSubnames[] = -{ - "Processor Local APIC", /* ACPI_MADT_TYPE_LOCAL_APIC */ - "I/O APIC", /* ACPI_MADT_TYPE_IO_APIC */ - "Interrupt Source Override", /* ACPI_MADT_TYPE_INTERRUPT_OVERRIDE */ - "NMI Source", /* ACPI_MADT_TYPE_NMI_SOURCE */ - "Local APIC NMI", /* ACPI_MADT_TYPE_LOCAL_APIC_NMI */ - "Local APIC Address Override", /* ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE */ - "I/O SAPIC", /* ACPI_MADT_TYPE_IO_SAPIC */ - "Local SAPIC", /* ACPI_MADT_TYPE_LOCAL_SAPIC */ - "Platform Interrupt Sources", /* ACPI_MADT_TYPE_INTERRUPT_SOURCE */ - "Unknown SubTable Type" /* Reserved */ -}; - -static const char *AcpiDmSratSubnames[] = -{ - "Processor Local APIC/SAPIC Affinity", - "Memory Affinity", - "Unknown SubTable Type" /* Reserved */ -}; - - -/******************************************************************************* - * - * ACPI Table Data, indexed by signature. - * - * Simple tables have only a TableInfo structure, complex tables have a handler. - * This table must be NULL terminated. RSDP and FACS are special-cased - * elsewhere. - * - ******************************************************************************/ - -static ACPI_DMTABLE_DATA AcpiDmTableData[] = -{ - {ACPI_SIG_ASF, NULL, AcpiDmDumpAsf, "Alert Standard Format table"}, - {ACPI_SIG_BOOT, AcpiDmTableInfoBoot, NULL, "Simple Boot Flag Table"}, - {ACPI_SIG_CPEP, NULL, AcpiDmDumpCpep, "Corrected Platform Error Polling table"}, - {ACPI_SIG_DBGP, AcpiDmTableInfoDbgp, NULL, "Debug Port table"}, - {ACPI_SIG_DMAR, NULL, AcpiDmDumpDmar, "DMA Remapping table"}, - {ACPI_SIG_ECDT, AcpiDmTableInfoEcdt, NULL, "Embedded Controller Boot Resources Table"}, - {ACPI_SIG_FADT, NULL, AcpiDmDumpFadt, "Fixed ACPI Description Table"}, - {ACPI_SIG_HPET, AcpiDmTableInfoHpet, NULL, "High Precision Event Timer table"}, - {ACPI_SIG_MADT, NULL, AcpiDmDumpMadt, "Multiple APIC Description Table"}, - {ACPI_SIG_MCFG, NULL, AcpiDmDumpMcfg, "Memory Mapped Configuration table"}, - {ACPI_SIG_RSDT, NULL, AcpiDmDumpRsdt, "Root System Description Table"}, - {ACPI_SIG_SBST, AcpiDmTableInfoSbst, NULL, "Smart Battery Specification Table"}, - {ACPI_SIG_SLIT, NULL, AcpiDmDumpSlit, "System Locality Information Table"}, - {ACPI_SIG_SPCR, AcpiDmTableInfoSpcr, NULL, "Serial Port Console Redirection table"}, - {ACPI_SIG_SPMI, AcpiDmTableInfoSpmi, NULL, "Server Platform Management Interface table"}, - {ACPI_SIG_SRAT, NULL, AcpiDmDumpSrat, "System Resource Affinity Table"}, - {ACPI_SIG_TCPA, AcpiDmTableInfoTcpa, NULL, "Trusted Computing Platform Alliance table"}, - {ACPI_SIG_WDRT, AcpiDmTableInfoWdrt, NULL, "Watchdog Resource Table"}, - {ACPI_SIG_XSDT, NULL, AcpiDmDumpXsdt, "Extended System Description Table"}, - {NULL, NULL, NULL, NULL} -}; - - -/******************************************************************************* - * - * FUNCTION: AcpiTbGenerateChecksum - * - * PARAMETERS: Table - Pointer to a valid ACPI table (with a - * standard ACPI header) - * - * RETURN: 8 bit checksum of buffer - * - * DESCRIPTION: Computes an 8 bit checksum of the table. - * - ******************************************************************************/ - -UINT8 -AcpiTbGenerateChecksum ( - ACPI_TABLE_HEADER *Table) -{ - UINT8 Checksum; - - - /* Sum the entire table as-is */ - - Checksum = AcpiTbChecksum ((UINT8 *) Table, Table->Length); - - /* Subtract off the existing checksum value in the table */ - - Checksum = (UINT8) (Checksum - Table->Checksum); - - /* Compute the final checksum */ - - Checksum = (UINT8) (0 - Checksum); - return (Checksum); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmGetTableData - * - * PARAMETERS: Signature - ACPI signature (4 chars) to match - * - * RETURN: Pointer to a valid ACPI_DMTABLE_DATA. Null if no match found. - * - * DESCRIPTION: Find a match in the global table of supported ACPI tables - * - ******************************************************************************/ - -static ACPI_DMTABLE_DATA * -AcpiDmGetTableData ( - char *Signature) -{ - ACPI_DMTABLE_DATA *TableData; - - - for (TableData = AcpiDmTableData; TableData->Signature; TableData++) - { - if (ACPI_COMPARE_NAME (Signature, TableData->Signature)) - { - return (TableData); - } - } - - return (NULL); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpDataTable - * - * PARAMETERS: Table - An ACPI table - * - * RETURN: None. - * - * DESCRIPTION: Format the contents of an ACPI data table (any table other - * than an SSDT or DSDT that does not contain executable AML code) - * - ******************************************************************************/ - -void -AcpiDmDumpDataTable ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_DMTABLE_DATA *TableData; - UINT32 Length; - - - /* Ignore tables that contain AML */ - - if (AcpiUtIsAmlTable (Table)) - { - return; - } - - /* - * Handle tables that don't use the common ACPI table header structure. - * Currently, these are the FACS and RSDP. - */ - if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_FACS)) - { - Length = Table->Length; - AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoFacs); - } - else if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_RSDP)) - { - Length = AcpiDmDumpRsdp (Table); - } - else - { - /* - * All other tables must use the common ACPI table header, dump it now - */ - Length = Table->Length; - AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoHeader); - AcpiOsPrintf ("\n"); - - /* Match signature and dispatch appropriately */ - - TableData = AcpiDmGetTableData (Table->Signature); - if (!TableData) - { - if (!ACPI_STRNCMP (Table->Signature, "OEM", 3)) - { - AcpiOsPrintf ("\n**** OEM-defined ACPI table [%4.4s], unknown contents\n\n", - Table->Signature); - } - else - { - AcpiOsPrintf ("\n**** Unknown ACPI table type [%4.4s]\n\n", - Table->Signature); - } - } - else if (TableData->TableHandler) - { - /* Complex table, has a handler */ - - TableData->TableHandler (Table); - } - else if (TableData->TableInfo) - { - /* Simple table, just walk the info table */ - - AcpiDmDumpTable (Length, 0, Table, 0, TableData->TableInfo); - } - } - - /* Always dump the raw table data */ - - AcpiOsPrintf ("\nRaw Table Data\n\n"); - AcpiUtDumpBuffer2 (ACPI_CAST_PTR (UINT8, Table), Length, DB_BYTE_DISPLAY); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmLineHeader - * - * PARAMETERS: Offset - Current byte offset, from table start - * ByteLength - Length of the field in bytes, 0 for flags - * Name - Name of this field - * Value - Optional value, displayed on left of ':' - * - * RETURN: None - * - * DESCRIPTION: Utility routines for formatting output lines. Displays the - * current table offset in hex and decimal, the field length, - * and the field name. - * - ******************************************************************************/ - -void -AcpiDmLineHeader ( - UINT32 Offset, - UINT32 ByteLength, - char *Name) -{ - - if (ByteLength) - { - AcpiOsPrintf ("[%3.3Xh %3.3d% 3d] %28s : ", - Offset, Offset, ByteLength, Name); - } - else - { - AcpiOsPrintf ("%42s : ", - Name); - } -} - -void -AcpiDmLineHeader2 ( - UINT32 Offset, - UINT32 ByteLength, - char *Name, - UINT32 Value) -{ - - if (ByteLength) - { - AcpiOsPrintf ("[%3.3Xh %3.3d% 3d] %24s % 3d : ", - Offset, Offset, ByteLength, Name, Value); - } - else - { - AcpiOsPrintf ("[%3.3Xh %3.3d ] %24s % 3d : ", - Offset, Offset, Name, Value); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpTable - * - * PARAMETERS: TableLength - Length of the entire ACPI table - * TableOffset - Starting offset within the table for this - * sub-descriptor (0 if main table) - * Table - The ACPI table - * SubtableLength - Lenghth of this sub-descriptor - * Info - Info table for this ACPI table - * - * RETURN: None - * - * DESCRIPTION: Display ACPI table contents by walking the Info table. - * - ******************************************************************************/ - -void -AcpiDmDumpTable ( - UINT32 TableLength, - UINT32 TableOffset, - void *Table, - UINT32 SubtableLength, - ACPI_DMTABLE_INFO *Info) -{ - UINT8 *Target; - UINT32 CurrentOffset; - UINT32 ByteLength; - UINT8 Temp8; - UINT16 Temp16; - ACPI_DMTABLE_DATA *TableData; - - - if (!Info) - { - AcpiOsPrintf ("Display not implemented\n"); - return; - } - - /* Walk entire Info table; Null name terminates */ - - for (; Info->Name; Info++) - { - /* - * Target points to the field within the ACPI Table. CurrentOffset is - * the offset of the field from the start of the main table. - */ - Target = ACPI_ADD_PTR (UINT8, Table, Info->Offset); - CurrentOffset = TableOffset + Info->Offset; - - /* Check for beyond EOT or beyond subtable end */ - - if ((CurrentOffset >= TableLength) || - (SubtableLength && (Info->Offset >= SubtableLength))) - { - return; - } - - /* Generate the byte length for this field */ - - switch (Info->Opcode) - { - case ACPI_DMT_UINT8: - case ACPI_DMT_CHKSUM: - case ACPI_DMT_SPACEID: - case ACPI_DMT_MADT: - case ACPI_DMT_SRAT: - ByteLength = 1; - break; - case ACPI_DMT_UINT16: - case ACPI_DMT_DMAR: - ByteLength = 2; - break; - case ACPI_DMT_UINT24: - ByteLength = 3; - break; - case ACPI_DMT_UINT32: - case ACPI_DMT_NAME4: - case ACPI_DMT_SIG: - ByteLength = 4; - break; - case ACPI_DMT_NAME6: - ByteLength = 6; - break; - case ACPI_DMT_UINT56: - ByteLength = 7; - break; - case ACPI_DMT_UINT64: - case ACPI_DMT_NAME8: - ByteLength = 8; - break; - case ACPI_DMT_STRING: - ByteLength = ACPI_STRLEN (ACPI_CAST_PTR (char, Target)) + 1; - break; - case ACPI_DMT_GAS: - AcpiOsPrintf ("\n"); - ByteLength = sizeof (ACPI_GENERIC_ADDRESS); - break; - default: - ByteLength = 0; - break; - } - - /* Start a new line and decode the opcode */ - - AcpiDmLineHeader (CurrentOffset, ByteLength, Info->Name); - - switch (Info->Opcode) - { - /* Single-bit Flag fields. Note: Opcode is the bit position */ - - case ACPI_DMT_FLAG0: - case ACPI_DMT_FLAG1: - case ACPI_DMT_FLAG2: - case ACPI_DMT_FLAG3: - case ACPI_DMT_FLAG4: - case ACPI_DMT_FLAG5: - case ACPI_DMT_FLAG6: - case ACPI_DMT_FLAG7: - - AcpiOsPrintf ("%1.1X\n", (*Target >> Info->Opcode) & 0x01); - break; - - /* 2-bit Flag fields */ - - case ACPI_DMT_FLAGS0: - - AcpiOsPrintf ("%1.1X\n", *Target & 0x03); - break; - - case ACPI_DMT_FLAGS2: - - AcpiOsPrintf ("%1.1X\n", (*Target >> 2) & 0x03); - break; - - /* Standard Data Types */ - - case ACPI_DMT_UINT8: - - AcpiOsPrintf ("%2.2X\n", *Target); - break; - - case ACPI_DMT_UINT16: - - AcpiOsPrintf ("%4.4X\n", ACPI_GET16 (Target)); - break; - - case ACPI_DMT_UINT24: - - AcpiOsPrintf ("%2.2X%2.2X%2.2X\n", - *Target, *(Target + 1), *(Target + 2)); - break; - - case ACPI_DMT_UINT32: - - AcpiOsPrintf ("%8.8X\n", ACPI_GET32 (Target)); - break; - - case ACPI_DMT_UINT56: - - AcpiOsPrintf ("%6.6X%8.8X\n", - ACPI_HIDWORD (ACPI_GET64 (Target)) & 0x00FFFFFF, - ACPI_LODWORD (ACPI_GET64 (Target))); - break; - - case ACPI_DMT_UINT64: - - AcpiOsPrintf ("%8.8X%8.8X\n", - ACPI_FORMAT_UINT64 (ACPI_GET64 (Target))); - break; - - case ACPI_DMT_STRING: - - AcpiOsPrintf ("%s\n", ACPI_CAST_PTR (char, Target)); - break; - - /* Fixed length ASCII name fields */ - - case ACPI_DMT_SIG: - - AcpiDmCheckAscii (Target, 4); - AcpiOsPrintf ("\"%4.4s\" ", Target); - TableData = AcpiDmGetTableData (ACPI_CAST_PTR (char, Target)); - if (TableData) - { - AcpiOsPrintf ("/* %s */", TableData->Name); - } - AcpiOsPrintf ("\n"); - break; - - case ACPI_DMT_NAME4: - - AcpiDmCheckAscii (Target, 4); - AcpiOsPrintf ("\"%4.4s\"\n", Target); - break; - - case ACPI_DMT_NAME6: - - AcpiDmCheckAscii (Target, 6); - AcpiOsPrintf ("\"%6.6s\"\n", Target); - break; - - case ACPI_DMT_NAME8: - - AcpiDmCheckAscii (Target, 8); - AcpiOsPrintf ("\"%8.8s\"\n", Target); - break; - - /* Special Data Types */ - - case ACPI_DMT_CHKSUM: - - /* Checksum, display and validate */ - - AcpiOsPrintf ("%2.2X", *Target); - Temp8 = AcpiTbGenerateChecksum (Table); - if (Temp8 != ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum) - { - AcpiOsPrintf ( - " /* Incorrect checksum, should be %2.2X */", Temp8); - } - AcpiOsPrintf ("\n"); - break; - - case ACPI_DMT_SPACEID: - - /* Address Space ID */ - - AcpiOsPrintf ("%2.2X (%s)\n", *Target, AcpiUtGetRegionName (*Target)); - break; - - case ACPI_DMT_GAS: - - /* Generic Address Structure */ - - AcpiOsPrintf ("\n"); - AcpiDmDumpTable (ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Length, - CurrentOffset, Target, 0, AcpiDmTableInfoGas); - break; - - case ACPI_DMT_DMAR: - - /* DMAR subtable types */ - - Temp16 = *Target; - if (Temp16 > ACPI_DMAR_TYPE_RESERVED) - { - Temp16 = ACPI_DMAR_TYPE_RESERVED; - } - - AcpiOsPrintf ("%4.4X <%s>\n", *Target, AcpiDmDmarSubnames[Temp16]); - break; - - case ACPI_DMT_MADT: - - /* MADT subtable types */ - - Temp8 = *Target; - if (Temp8 > ACPI_MADT_TYPE_RESERVED) - { - Temp8 = ACPI_MADT_TYPE_RESERVED; - } - - AcpiOsPrintf ("%2.2X <%s>\n", *Target, AcpiDmMadtSubnames[Temp8]); - break; - - case ACPI_DMT_SRAT: - - /* SRAT subtable types */ - - Temp8 = *Target; - if (Temp8 > ACPI_SRAT_TYPE_RESERVED) - { - Temp8 = ACPI_SRAT_TYPE_RESERVED; - } - - AcpiOsPrintf ("%2.2X <%s>\n", *Target, AcpiDmSratSubnames[Temp8]); - break; - - case ACPI_DMT_EXIT: - return; - - default: - ACPI_ERROR ((AE_INFO, - "**** Invalid table opcode [%X] ****\n", Info->Opcode)); - return; - } - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmCheckAscii - * - * PARAMETERS: Name - Ascii string - * Count - Number of characters to check - * - * RETURN: None - * - * DESCRIPTION: Ensure that the requested number of characters are printable - * Ascii characters. Sets non-printable and null chars to . - * - ******************************************************************************/ - -static void -AcpiDmCheckAscii ( - UINT8 *Name, - UINT32 Count) -{ - UINT32 i; - - - for (i = 0; i < Count; i++) - { - if (!Name[i] || !isprint (Name[i])) - { - Name[i] = ' '; - } - } -} diff --git a/sys/contrib/dev/acpica-unix-20061109/common/dmtbdump.c b/sys/contrib/dev/acpica-unix-20061109/common/dmtbdump.c deleted file mode 100644 index c0e0d62b0a..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/common/dmtbdump.c +++ /dev/null @@ -1,798 +0,0 @@ -/****************************************************************************** - * - * Module Name: dmtbdump - Dump ACPI data tables that contain no AML code - * $Revision: 1.14 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "acdisasm.h" -#include "actables.h" - -/* This module used for application-level code only */ - -#define _COMPONENT ACPI_CA_DISASSEMBLER - ACPI_MODULE_NAME ("dmtbdump") - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpRsdp - * - * PARAMETERS: Table - A RSDP - * - * RETURN: Length of the table (there is no length field, use revision) - * - * DESCRIPTION: Format the contents of a RSDP - * - ******************************************************************************/ - -UINT32 -AcpiDmDumpRsdp ( - ACPI_TABLE_HEADER *Table) -{ - UINT32 Length = ACPI_RSDP_REV0_SIZE; - - - /* Dump the common ACPI 1.0 portion */ - - AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoRsdp1); - - /* ACPI 2.0+ contains more data and has a Length field */ - - if (ACPI_CAST_PTR (ACPI_TABLE_RSDP, Table)->Revision > 0) - { - Length = ACPI_CAST_PTR (ACPI_TABLE_RSDP, Table)->Length; - AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoRsdp2); - } - - return (Length); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpRsdt - * - * PARAMETERS: Table - A RSDT - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a RSDT - * - ******************************************************************************/ - -void -AcpiDmDumpRsdt ( - ACPI_TABLE_HEADER *Table) -{ - UINT32 *Array; - UINT32 Entries; - UINT32 Offset; - UINT32 i; - - - /* Point to start of table pointer array */ - - Array = ACPI_CAST_PTR (ACPI_TABLE_RSDT, Table)->TableOffsetEntry; - Offset = sizeof (ACPI_TABLE_HEADER); - - /* RSDT uses 32-bit pointers */ - - Entries = (Table->Length - sizeof (ACPI_TABLE_HEADER)) / sizeof (UINT32); - - for (i = 0; i < Entries; i++) - { - AcpiDmLineHeader2 (Offset, sizeof (UINT32), "ACPI Table Address", i); - AcpiOsPrintf ("%8.8X\n", Array[i]); - Offset += sizeof (UINT32); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpXsdt - * - * PARAMETERS: Table - A XSDT - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a XSDT - * - ******************************************************************************/ - -void -AcpiDmDumpXsdt ( - ACPI_TABLE_HEADER *Table) -{ - UINT64 *Array; - UINT32 Entries; - UINT32 Offset; - UINT32 i; - - - /* Point to start of table pointer array */ - - Array = ACPI_CAST_PTR (ACPI_TABLE_XSDT, Table)->TableOffsetEntry; - Offset = sizeof (ACPI_TABLE_HEADER); - - /* XSDT uses 64-bit pointers */ - - Entries = (Table->Length - sizeof (ACPI_TABLE_HEADER)) / sizeof (UINT64); - - for (i = 0; i < Entries; i++) - { - AcpiDmLineHeader2 (Offset, sizeof (UINT64), "ACPI Table Address", i); - AcpiOsPrintf ("%8.8X%8.8X\n", ACPI_FORMAT_UINT64 (Array[i])); - Offset += sizeof (UINT64); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpFadt - * - * PARAMETERS: Table - A FADT - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a FADT - * - ******************************************************************************/ - -void -AcpiDmDumpFadt ( - ACPI_TABLE_HEADER *Table) -{ - - /* Common ACPI 1.0 portion of FADT */ - - AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt1); - - /* Check for ACPI 2.0+ extended data (cannot depend on Revision field) */ - - if (Table->Length >= sizeof (ACPI_TABLE_FADT)) - { - AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt2); - } - - /* Validate various fields in the FADT, including length */ - - AcpiTbCreateLocalFadt (Table, Table->Length); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpAsf - * - * PARAMETERS: Table - A ASF table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a ASF table - * - ******************************************************************************/ - -void -AcpiDmDumpAsf ( - ACPI_TABLE_HEADER *Table) -{ - UINT32 Offset = sizeof (ACPI_TABLE_HEADER); - ACPI_ASF_INFO *SubTable; - ACPI_DMTABLE_INFO *InfoTable; - ACPI_DMTABLE_INFO *DataInfoTable = NULL; - UINT8 *DataTable = NULL; - ACPI_NATIVE_UINT DataCount = 0; - ACPI_NATIVE_UINT DataLength = 0; - ACPI_NATIVE_UINT DataOffset = 0; - ACPI_NATIVE_UINT i; - - - /* No main table, only sub-tables */ - - SubTable = ACPI_ADD_PTR (ACPI_ASF_INFO, Table, Offset); - while (Offset < Table->Length) - { - /* Common sub-table header */ - - AcpiDmDumpTable (Table->Length, Offset, SubTable, 0, AcpiDmTableInfoAsfHdr); - - switch (SubTable->Header.Type & 0x7F) /* Mask off top bit */ - { - case ACPI_ASF_TYPE_INFO: - InfoTable = AcpiDmTableInfoAsf0; - break; - - case ACPI_ASF_TYPE_ALERT: - InfoTable = AcpiDmTableInfoAsf1; - DataInfoTable = AcpiDmTableInfoAsf1a; - DataTable = ACPI_ADD_PTR (UINT8, SubTable, sizeof (ACPI_ASF_ALERT)); - DataCount = ((ACPI_ASF_ALERT *) SubTable)->Alerts; - DataLength = ((ACPI_ASF_ALERT *) SubTable)->DataLength; - DataOffset = Offset + sizeof (ACPI_ASF_ALERT); - break; - - case ACPI_ASF_TYPE_CONTROL: - InfoTable = AcpiDmTableInfoAsf2; - DataInfoTable = AcpiDmTableInfoAsf2a; - DataTable = ACPI_ADD_PTR (UINT8, SubTable, sizeof (ACPI_ASF_REMOTE)); - DataCount = ((ACPI_ASF_REMOTE *) SubTable)->Controls; - DataLength = ((ACPI_ASF_REMOTE *) SubTable)->DataLength; - DataOffset = Offset + sizeof (ACPI_ASF_REMOTE); - break; - - case ACPI_ASF_TYPE_BOOT: - InfoTable = AcpiDmTableInfoAsf3; - break; - - case ACPI_ASF_TYPE_ADDRESS: - InfoTable = AcpiDmTableInfoAsf4; - DataTable = ACPI_ADD_PTR (UINT8, SubTable, sizeof (ACPI_ASF_ADDRESS)); - DataLength = ((ACPI_ASF_ADDRESS *) SubTable)->Devices; - DataOffset = Offset + sizeof (ACPI_ASF_ADDRESS); - break; - - default: - AcpiOsPrintf ("\n**** Unknown ASF sub-table type %X\n", SubTable->Header.Type); - return; - } - - AcpiDmDumpTable (Table->Length, Offset, SubTable, SubTable->Header.Length, InfoTable); - - - /* Dump variable-length extra data */ - - switch (SubTable->Header.Type & 0x7F) /* Mask off top bit */ - { - case ACPI_ASF_TYPE_ALERT: - case ACPI_ASF_TYPE_CONTROL: - - for (i = 0; i < DataCount; i++) - { - AcpiOsPrintf ("\n"); - AcpiDmDumpTable (Table->Length, DataOffset, DataTable, DataLength, DataInfoTable); - - DataTable = ACPI_ADD_PTR (UINT8, DataTable, DataLength); - DataOffset += DataLength; - } - break; - - case ACPI_ASF_TYPE_ADDRESS: - - for (i = 0; i < DataLength; i++) - { - if (!(i % 16)) - { - AcpiDmLineHeader (DataOffset, 1, "Addresses"); - } - - AcpiOsPrintf ("%2.2X ", *DataTable); - DataTable++; - DataOffset++; - } - - AcpiOsPrintf ("\n"); - break; - } - - AcpiOsPrintf ("\n"); - - /* Point to next sub-table */ - - Offset += SubTable->Header.Length; - SubTable = ACPI_ADD_PTR (ACPI_ASF_INFO, SubTable, SubTable->Header.Length); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpCpep - * - * PARAMETERS: Table - A CPEP table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a CPEP. This table type consists - * of an open-ended number of subtables. - * - ******************************************************************************/ - -void -AcpiDmDumpCpep ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_CPEP_POLLING *SubTable; - UINT32 Length = Table->Length; - UINT32 Offset = sizeof (ACPI_TABLE_CPEP); - - - /* Main table */ - - AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoCpep); - - /* Sub-tables */ - - SubTable = ACPI_ADD_PTR (ACPI_CPEP_POLLING, Table, Offset); - while (Offset < Table->Length) - { - AcpiOsPrintf ("\n"); - AcpiDmDumpTable (Length, Offset, SubTable, SubTable->Length, AcpiDmTableInfoCpep0); - - /* Point to next sub-table */ - - Offset += SubTable->Length; - SubTable = ACPI_ADD_PTR (ACPI_CPEP_POLLING, SubTable, SubTable->Length); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpDmar - * - * PARAMETERS: Table - A DMAR table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a DMAR. This table type consists - * of an open-ended number of subtables. - * - ******************************************************************************/ - -void -AcpiDmDumpDmar ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_DMAR_HEADER *SubTable; - UINT32 Length = Table->Length; - UINT32 Offset = sizeof (ACPI_TABLE_DMAR); - ACPI_DMTABLE_INFO *InfoTable; - ACPI_DMAR_DEVICE_SCOPE *ScopeTable; - UINT32 ScopeOffset; - UINT8 *PciPath; - UINT32 PathOffset; - - - /* Main table */ - - AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoDmar); - - /* Sub-tables */ - - SubTable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, Table, Offset); - while (Offset < Table->Length) - { - /* Common sub-table header */ - - AcpiOsPrintf ("\n"); - AcpiDmDumpTable (Length, Offset, SubTable, 0, AcpiDmTableInfoDmarHdr); - - switch (SubTable->Type) - { - case ACPI_DMAR_TYPE_HARDWARE_UNIT: - InfoTable = AcpiDmTableInfoDmar0; - ScopeOffset = sizeof (ACPI_DMAR_HARDWARE_UNIT); - break; - case ACPI_DMAR_TYPE_RESERVED_MEMORY: - InfoTable = AcpiDmTableInfoDmar1; - ScopeOffset = sizeof (ACPI_DMAR_RESERVED_MEMORY); - break; - default: - AcpiOsPrintf ("\n**** Unknown DMAR sub-table type %X\n\n", SubTable->Type); - return; - } - - AcpiDmDumpTable (Length, Offset, SubTable, SubTable->Length, InfoTable); - - /* - * Currently, a common flag indicates whether there are any - * device scope entries present at the end of the subtable. - */ - if ((SubTable->Flags & ACPI_DMAR_INCLUDE_ALL) == 0) - { - /* Dump the device scope entries */ - - ScopeTable = ACPI_ADD_PTR (ACPI_DMAR_DEVICE_SCOPE, SubTable, ScopeOffset); - while (ScopeOffset < SubTable->Length) - { - AcpiOsPrintf ("\n"); - AcpiDmDumpTable (Length, Offset + ScopeOffset, ScopeTable, - ScopeTable->Length, AcpiDmTableInfoDmarScope); - - /* Dump the PCI Path entries for this device scope */ - - PathOffset = sizeof (ACPI_DMAR_DEVICE_SCOPE); /* Path entries start at this offset */ - - PciPath = ACPI_ADD_PTR (UINT8, ScopeTable, - sizeof (ACPI_DMAR_DEVICE_SCOPE)); - - while (PathOffset < ScopeTable->Length) - { - AcpiDmLineHeader ((PathOffset + ScopeOffset + Offset), 2, "PCI Path"); - AcpiOsPrintf ("[%2.2X, %2.2X]\n", PciPath[0], PciPath[1]); - - /* Point to next PCI Path entry */ - - PathOffset += 2; - PciPath += 2; - } - - /* Point to next device scope entry */ - - ScopeOffset += ScopeTable->Length; - ScopeTable = ACPI_ADD_PTR (ACPI_DMAR_DEVICE_SCOPE, - ScopeTable, ScopeTable->Length); - } - } - - /* Point to next sub-table */ - - Offset += SubTable->Length; - SubTable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, SubTable, SubTable->Length); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpMadt - * - * PARAMETERS: Table - A MADT table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a MADT. This table type consists - * of an open-ended number of subtables. - * - ******************************************************************************/ - -void -AcpiDmDumpMadt ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_SUBTABLE_HEADER *SubTable; - UINT32 Length = Table->Length; - UINT32 Offset = sizeof (ACPI_TABLE_MADT); - ACPI_DMTABLE_INFO *InfoTable; - - - /* Main table */ - - AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoMadt); - - /* Sub-tables */ - - SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset); - while (Offset < Table->Length) - { - /* Common sub-table header */ - - AcpiOsPrintf ("\n"); - AcpiDmDumpTable (Length, Offset, SubTable, 0, AcpiDmTableInfoMadtHdr); - - switch (SubTable->Type) - { - case ACPI_MADT_TYPE_LOCAL_APIC: - InfoTable = AcpiDmTableInfoMadt0; - break; - case ACPI_MADT_TYPE_IO_APIC: - InfoTable = AcpiDmTableInfoMadt1; - break; - case ACPI_MADT_TYPE_INTERRUPT_OVERRIDE: - InfoTable = AcpiDmTableInfoMadt2; - break; - case ACPI_MADT_TYPE_NMI_SOURCE: - InfoTable = AcpiDmTableInfoMadt3; - break; - case ACPI_MADT_TYPE_LOCAL_APIC_NMI: - InfoTable = AcpiDmTableInfoMadt4; - break; - case ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE: - InfoTable = AcpiDmTableInfoMadt5; - break; - case ACPI_MADT_TYPE_IO_SAPIC: - InfoTable = AcpiDmTableInfoMadt6; - break; - case ACPI_MADT_TYPE_LOCAL_SAPIC: - InfoTable = AcpiDmTableInfoMadt7; - break; - case ACPI_MADT_TYPE_INTERRUPT_SOURCE: - InfoTable = AcpiDmTableInfoMadt8; - break; - default: - AcpiOsPrintf ("\n**** Unknown MADT sub-table type %X\n\n", SubTable->Type); - return; - } - - AcpiDmDumpTable (Length, Offset, SubTable, SubTable->Length, InfoTable); - - /* Point to next sub-table */ - - Offset += SubTable->Length; - SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, SubTable, SubTable->Length); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpMcfg - * - * PARAMETERS: Table - A MCFG Table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a MCFG table - * - ******************************************************************************/ - -void -AcpiDmDumpMcfg ( - ACPI_TABLE_HEADER *Table) -{ - UINT32 Offset = sizeof (ACPI_TABLE_MCFG); - ACPI_MCFG_ALLOCATION *SubTable; - - - /* Main table */ - - AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMcfg); - - /* Sub-tables */ - - SubTable = ACPI_ADD_PTR (ACPI_MCFG_ALLOCATION, Table, Offset); - while (Offset < Table->Length) - { - if (Offset + sizeof (ACPI_MCFG_ALLOCATION) > Table->Length) - { - AcpiOsPrintf ("Warning: there are %d invalid trailing bytes\n", - sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Table->Length)); - return; - } - - AcpiOsPrintf ("\n"); - AcpiDmDumpTable (Table->Length, Offset, SubTable, 0, AcpiDmTableInfoMcfg0); - - /* Point to next sub-table (each subtable is of fixed length) */ - - Offset += sizeof (ACPI_MCFG_ALLOCATION); - SubTable = ACPI_ADD_PTR (ACPI_MCFG_ALLOCATION, SubTable, - sizeof (ACPI_MCFG_ALLOCATION)); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpSlit - * - * PARAMETERS: Table - An SLIT - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a SLIT - * - ******************************************************************************/ - -void -AcpiDmDumpSlit ( - ACPI_TABLE_HEADER *Table) -{ - UINT32 Offset; - UINT8 *Row; - UINT32 Localities; - UINT32 i; - UINT32 j; - - - /* Main table */ - - AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoSlit); - - /* Display the Locality NxN Matrix */ - - Localities = (UINT32) ACPI_CAST_PTR (ACPI_TABLE_SLIT, Table)->LocalityCount; - Offset = ACPI_OFFSET (ACPI_TABLE_SLIT, Entry[0]); - Row = (UINT8 *) ACPI_CAST_PTR (ACPI_TABLE_SLIT, Table)->Entry; - - for (i = 0; i < Localities; i++) - { - /* Display one row of the matrix */ - - AcpiDmLineHeader2 (Offset, Localities, "Locality", i); - for (j = 0; j < Localities; j++) - { - /* Check for beyond EOT */ - - if (Offset >= Table->Length) - { - AcpiOsPrintf ("\n**** Not enough room in table for all localities\n"); - return; - } - - AcpiOsPrintf ("%2.2X ", Row[j]); - Offset++; - - /* Display up to 16 bytes per output row */ - - if (j && (((j+1) % 16) == 0) && ((j+1) < Localities)) - { - AcpiOsPrintf ("\n"); - AcpiDmLineHeader (Offset, 0, ""); - } - } - - /* Point to next row */ - - AcpiOsPrintf ("\n"); - Row += Localities; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpSrat - * - * PARAMETERS: Table - A SRAT table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a SRAT - * - ******************************************************************************/ - -void -AcpiDmDumpSrat ( - ACPI_TABLE_HEADER *Table) -{ - UINT32 Offset = sizeof (ACPI_TABLE_SRAT); - ACPI_SUBTABLE_HEADER *SubTable; - ACPI_DMTABLE_INFO *InfoTable; - - - /* Main table */ - - AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoSrat); - - /* Sub-tables */ - - SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset); - while (Offset < Table->Length) - { - switch (SubTable->Type) - { - case ACPI_SRAT_TYPE_CPU_AFFINITY: - InfoTable = AcpiDmTableInfoSrat0; - break; - case ACPI_SRAT_TYPE_MEMORY_AFFINITY: - InfoTable = AcpiDmTableInfoSrat1; - break; - default: - AcpiOsPrintf ("\n**** Unknown SRAT sub-table type %X\n", SubTable->Type); - return; - } - - AcpiOsPrintf ("\n"); - AcpiDmDumpTable (Table->Length, Offset, SubTable, SubTable->Length, InfoTable); - - /* Point to next sub-table */ - - Offset += SubTable->Length; - SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, SubTable, SubTable->Length); - } -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/common/dmtbinfo.c b/sys/contrib/dev/acpica-unix-20061109/common/dmtbinfo.c deleted file mode 100644 index c58b2bf5b2..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/common/dmtbinfo.c +++ /dev/null @@ -1,967 +0,0 @@ -/****************************************************************************** - * - * Module Name: dmtbinfo - Table info for non-AML tables - * $Revision: 1.12 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "acdisasm.h" - -/* This module used for application-level code only */ - -#define _COMPONENT ACPI_CA_DISASSEMBLER - ACPI_MODULE_NAME ("dmtbinfo") - -/* - * Macros used to generate offsets to specific table fields - */ -#define ACPI_FACS_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_FACS,f) -#define ACPI_GAS_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_GENERIC_ADDRESS,f) -#define ACPI_HDR_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_HEADER,f) -#define ACPI_RSDP_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_RSDP,f) -#define ACPI_BOOT_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_BOOT,f) -#define ACPI_CPEP_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_CPEP,f) -#define ACPI_DBGP_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_DBGP,f) -#define ACPI_DMAR_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_DMAR,f) -#define ACPI_ECDT_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_ECDT,f) -#define ACPI_HPET_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_HPET,f) -#define ACPI_MADT_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_MADT,f) -#define ACPI_MCFG_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_MCFG,f) -#define ACPI_SBST_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_SBST,f) -#define ACPI_SLIT_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_SLIT,f) -#define ACPI_SPCR_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_SPCR,f) -#define ACPI_SPMI_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_SPMI,f) -#define ACPI_SRAT_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_SRAT,f) -#define ACPI_TCPA_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_TCPA,f) -#define ACPI_WDRT_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_WDRT,f) - -/* Sub-tables */ - -#define ACPI_ASF0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_ASF_INFO,f) -#define ACPI_ASF1_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_ASF_ALERT,f) -#define ACPI_ASF1a_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_ASF_ALERT_DATA,f) -#define ACPI_ASF2_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_ASF_REMOTE,f) -#define ACPI_ASF2a_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_ASF_CONTROL_DATA,f) -#define ACPI_ASF3_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_ASF_RMCP,f) -#define ACPI_ASF4_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_ASF_ADDRESS,f) -#define ACPI_CPEP0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_CPEP_POLLING,f) -#define ACPI_DMARS_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_DMAR_DEVICE_SCOPE,f) -#define ACPI_DMAR0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_DMAR_HARDWARE_UNIT,f) -#define ACPI_DMAR1_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_DMAR_RESERVED_MEMORY,f) -#define ACPI_MADT0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MADT_LOCAL_APIC,f) -#define ACPI_MADT1_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MADT_IO_APIC,f) -#define ACPI_MADT2_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MADT_INTERRUPT_OVERRIDE,f) -#define ACPI_MADT3_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MADT_NMI_SOURCE,f) -#define ACPI_MADT4_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MADT_LOCAL_APIC_NMI,f) -#define ACPI_MADT5_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MADT_LOCAL_APIC_OVERRIDE,f) -#define ACPI_MADT6_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MADT_IO_SAPIC,f) -#define ACPI_MADT7_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MADT_LOCAL_SAPIC,f) -#define ACPI_MADT8_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MADT_INTERRUPT_SOURCE,f) -#define ACPI_MADTH_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_SUBTABLE_HEADER,f) -#define ACPI_MCFG0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_MCFG_ALLOCATION,f) -#define ACPI_SRAT0_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_SRAT_CPU_AFFINITY,f) -#define ACPI_SRAT1_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_SRAT_MEM_AFFINITY,f) - -/* - * Simplify access to flag fields by breaking them up into bytes - */ -#define ACPI_FLAG_OFFSET(d,f,o) (UINT8) (ACPI_OFFSET (d,f) + o) - -/* Flags */ - -#define ACPI_FADT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_FADT,f,o) -#define ACPI_FACS_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_FACS,f,o) -#define ACPI_HPET_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_HPET,f,o) -#define ACPI_SRAT0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_SRAT_CPU_AFFINITY,f,o) -#define ACPI_SRAT1_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_SRAT_MEM_AFFINITY,f,o) -#define ACPI_MADT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_MADT,f,o) -#define ACPI_MADT0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_APIC,f,o) -#define ACPI_MADT2_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_INTERRUPT_OVERRIDE,f,o) -#define ACPI_MADT3_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_NMI_SOURCE,f,o) -#define ACPI_MADT4_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_APIC_NMI,f,o) -#define ACPI_MADT7_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_SAPIC,f,o) -#define ACPI_MADT8_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_INTERRUPT_SOURCE,f,o) - - -/* - * ACPI Table Information, used to dump formatted ACPI tables - * - * Each entry is of the form: - */ - -/******************************************************************************* - * - * Common ACPI table header - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoHeader[] = -{ - {ACPI_DMT_SIG, ACPI_HDR_OFFSET (Signature[0]), "Signature"}, - {ACPI_DMT_UINT32, ACPI_HDR_OFFSET (Length), "Table Length"}, - {ACPI_DMT_UINT8, ACPI_HDR_OFFSET (Revision), "Revision"}, - {ACPI_DMT_CHKSUM, ACPI_HDR_OFFSET (Checksum), "Checksum"}, - {ACPI_DMT_NAME6, ACPI_HDR_OFFSET (OemId[0]), "Oem ID"}, - {ACPI_DMT_NAME8, ACPI_HDR_OFFSET (OemTableId[0]), "Oem Table ID"}, - {ACPI_DMT_UINT32, ACPI_HDR_OFFSET (OemRevision), "Oem Revision"}, - {ACPI_DMT_NAME4, ACPI_HDR_OFFSET (AslCompilerId[0]), "Asl Compiler ID"}, - {ACPI_DMT_UINT32, ACPI_HDR_OFFSET (AslCompilerRevision), "Asl Compiler Revision"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - - -/******************************************************************************* - * - * GAS - Generic Address Structure - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoGas[] = -{ - {ACPI_DMT_SPACEID, ACPI_GAS_OFFSET (SpaceId), "Space ID"}, - {ACPI_DMT_UINT8, ACPI_GAS_OFFSET (BitWidth), "Bit Width"}, - {ACPI_DMT_UINT8, ACPI_GAS_OFFSET (BitOffset), "Bit Offset"}, - {ACPI_DMT_UINT8, ACPI_GAS_OFFSET (AccessWidth), "Access Width"}, - {ACPI_DMT_UINT64, ACPI_GAS_OFFSET (Address), "Address"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - - -/******************************************************************************* - * - * RSDP - Root System Description Pointer (Signature is "RSD PTR ") - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp1[] = -{ - {ACPI_DMT_NAME8, ACPI_RSDP_OFFSET (Signature[0]), "Signature"}, - {ACPI_DMT_UINT8, ACPI_RSDP_OFFSET (Checksum), "Checksum"}, - {ACPI_DMT_NAME6, ACPI_RSDP_OFFSET (OemId[0]), "Oem ID"}, - {ACPI_DMT_UINT8, ACPI_RSDP_OFFSET (Revision), "Revision"}, - {ACPI_DMT_UINT32, ACPI_RSDP_OFFSET (RsdtPhysicalAddress), "RSDT Address"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -/* ACPI 2.0+ Extensions */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp2[] = -{ - {ACPI_DMT_UINT32, ACPI_RSDP_OFFSET (Length), "Length"}, - {ACPI_DMT_UINT64, ACPI_RSDP_OFFSET (XsdtPhysicalAddress), "XSDT Address"}, - {ACPI_DMT_UINT8, ACPI_RSDP_OFFSET (ExtendedChecksum), "Extended Checksum"}, - {ACPI_DMT_UINT24, ACPI_RSDP_OFFSET (Reserved[0]), "Reserved"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - - -/******************************************************************************* - * - * FACS - Firmware ACPI Control Structure - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoFacs[] = -{ - {ACPI_DMT_NAME4, ACPI_FACS_OFFSET (Signature[0]), "Signature"}, - {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (Length), "Length"}, - {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (HardwareSignature), "Hardware Signature"}, - {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (FirmwareWakingVector), "Firmware Waking Vector(32)"}, - {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (GlobalLock), "Global Lock"}, - {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (Flags), "Flags (decoded below)"}, - {ACPI_DMT_FLAG0, ACPI_FACS_FLAG_OFFSET (Flags,0), "S4BIOS Support Present"}, - {ACPI_DMT_UINT64, ACPI_FACS_OFFSET (XFirmwareWakingVector), "Firmware Waking Vector(64)"}, - {ACPI_DMT_UINT8, ACPI_FACS_OFFSET (Version), "Version"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - - -/******************************************************************************* - * - * FADT - Fixed ACPI Description Table (Signature is FACP) - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoFadt1[] = -{ - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Facs), "FACS Address"}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Dsdt), "DSDT Address"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Model), "Model"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (PreferredProfile), "PM Profile"}, - {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (SciInterrupt), "SCI Interrupt"}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (SmiCommand), "SMI Command Port"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (AcpiEnable), "ACPI Enable Value"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (AcpiDisable), "ACPI Disable Value"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (S4BiosRequest), "S4BIOS Command"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (PstateControl), "P-State Control"}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm1aEventBlock), "PM1A Event Block Address"}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm1bEventBlock), "PM1B Event Block Address"}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm1aControlBlock), "PM1A Control Block Address"}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm1bControlBlock), "PM1B Control Block Address"}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm2ControlBlock), "PM2 Control Block Address"}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (PmTimerBlock), "PM Timer Block Address"}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Gpe0Block), "GPE0 Block Address"}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Gpe1Block), "GPE1 Block Address"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Pm1EventLength), "PM1 Event Block Length"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Pm1ControlLength), "PM1 Control Block Length"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Pm2ControlLength), "PM2 Control Block Length"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (PmTimerLength), "PM Timer Block Length"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Gpe0BlockLength), "GPE0 Block Length"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Gpe1BlockLength), "GPE1 Block Length"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Gpe1Base), "GPE1 Base Offset"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (CstControl), "_CST Support"}, - {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (C2Latency), "C2 Latency"}, - {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (C3Latency), "C3 Latency"}, - {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (FlushSize), "CPU Cache Size"}, - {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (FlushStride), "Cache Flush Stride"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (DutyOffset), "Duty Cycle Offset"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (DutyWidth), "Duty Cycle Width"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (DayAlarm), "RTC Day Alarm Index"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (MonthAlarm), "RTC Month Alarm Index"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Century), "RTC Century Index"}, - {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (BootFlags), "Boot Architecture Flags"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Reserved), "Reserved"}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Flags), "Flags (decoded below)"}, - - /* Flags byte 0 */ - - {ACPI_DMT_FLAG0, ACPI_FADT_FLAG_OFFSET (Flags,0), "WBINVD is operational"}, - {ACPI_DMT_FLAG1, ACPI_FADT_FLAG_OFFSET (Flags,0), "WBINVD does not invalidate"}, - {ACPI_DMT_FLAG2, ACPI_FADT_FLAG_OFFSET (Flags,0), "All CPUs support C1"}, - {ACPI_DMT_FLAG3, ACPI_FADT_FLAG_OFFSET (Flags,0), "C2 works on MP system"}, - {ACPI_DMT_FLAG4, ACPI_FADT_FLAG_OFFSET (Flags,0), "Power button is generic"}, - {ACPI_DMT_FLAG5, ACPI_FADT_FLAG_OFFSET (Flags,0), "Sleep button is generic"}, - {ACPI_DMT_FLAG6, ACPI_FADT_FLAG_OFFSET (Flags,0), "RTC wakeup not fixed"}, - {ACPI_DMT_FLAG7, ACPI_FADT_FLAG_OFFSET (Flags,0), "RTC wakeup/S4 not possible"}, - - /* Flags byte 1 */ - - {ACPI_DMT_FLAG0, ACPI_FADT_FLAG_OFFSET (Flags,1), "32-bit PM Timer"}, - {ACPI_DMT_FLAG1, ACPI_FADT_FLAG_OFFSET (Flags,1), "Docking Supported"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -/* ACPI 2.0+ Extensions */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoFadt2[] = -{ - {ACPI_DMT_FLAG2, ACPI_FADT_FLAG_OFFSET (Flags,1), "Reset Register Supported"}, - {ACPI_DMT_FLAG3, ACPI_FADT_FLAG_OFFSET (Flags,1), "Sealed Case"}, - {ACPI_DMT_FLAG4, ACPI_FADT_FLAG_OFFSET (Flags,1), "Headless - No Video"}, - {ACPI_DMT_FLAG5, ACPI_FADT_FLAG_OFFSET (Flags,1), "Native instr after SLP_TYP"}, - {ACPI_DMT_FLAG6, ACPI_FADT_FLAG_OFFSET (Flags,1), "PCIEXP_WAK Supported"}, - {ACPI_DMT_FLAG7, ACPI_FADT_FLAG_OFFSET (Flags,1), "Use Platform Timer"}, - - /* Flags byte 2 */ - - {ACPI_DMT_FLAG0, ACPI_FADT_FLAG_OFFSET (Flags,2), "RTC_STS valid after S4"}, - {ACPI_DMT_FLAG1, ACPI_FADT_FLAG_OFFSET (Flags,2), "Remote Power-on capable"}, - {ACPI_DMT_FLAG2, ACPI_FADT_FLAG_OFFSET (Flags,2), "APIC Cluster Model"}, - {ACPI_DMT_FLAG3, ACPI_FADT_FLAG_OFFSET (Flags,2), "APIC Physical Dest Mode"}, - - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (ResetRegister), "Reset Register"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (ResetValue), "Value to cause reset"}, - {ACPI_DMT_UINT24, ACPI_FADT_OFFSET (Reserved4[0]), "Reserved"}, - {ACPI_DMT_UINT64, ACPI_FADT_OFFSET (XFacs), "FACS Address"}, - {ACPI_DMT_UINT64, ACPI_FADT_OFFSET (XDsdt), "DSDT Address"}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm1aEventBlock), "PM1A Event Block"}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm1bEventBlock), "PM1B Event Block"}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm1aControlBlock), "PM1A Control Block"}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm1bControlBlock), "PM1B Control Block"}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm2ControlBlock), "PM2 Control Block"}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPmTimerBlock), "PM Timer Block"}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XGpe0Block), "GPE0 Block"}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XGpe1Block), "GPE1 Block"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - - -/* - * Remaining tables are not consumed directly by the ACPICA subsystem - */ - -/******************************************************************************* - * - * ASF - Alert Standard Format table (Signature "ASF!") - * - ******************************************************************************/ - -/* Common sub-table header (one per sub-table) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoAsfHdr[] = -{ - {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (Header.Type), "Sub-Table Type"}, - {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (Header.Reserved), "Reserved"}, - {ACPI_DMT_UINT16, ACPI_ASF0_OFFSET (Header.Length), "Length"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -/* 0: ASF Information */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoAsf0[] = -{ - {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (MinResetValue), "Minimum Reset Value"}, - {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (MinResetValue), "Minimum Polling Interval"}, - {ACPI_DMT_UINT16, ACPI_ASF0_OFFSET (SystemId), "System ID"}, - {ACPI_DMT_UINT32, ACPI_ASF0_OFFSET (SystemId), "Manufacturer ID"}, - {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (Flags), "Flags"}, - {ACPI_DMT_UINT24, ACPI_ASF0_OFFSET (Reserved2[0]), "Reserved"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -/* 1: ASF Alerts */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoAsf1[] = -{ - {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (AssertMask), "AssertMask"}, - {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (DeassertMask), "DeassertMask"}, - {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (Alerts), "Alert Count"}, - {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (DataLength), "Alert Data Length"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -/* 1a: ASF Alert data */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoAsf1a[] = -{ - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Address), "Address"}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Command), "Command"}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Mask), "Mask"}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Value), "Value"}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (SensorType), "SensorType"}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Type), "Type"}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Offset), "Offset"}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (SourceType), "SourceType"}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Severity), "Severity"}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (SensorNumber), "SensorNumber"}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Entity), "Entity"}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Instance), "Instance"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -/* 2: ASF Remote Control */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoAsf2[] = -{ - {ACPI_DMT_UINT8, ACPI_ASF2_OFFSET (Controls), "Control Count"}, - {ACPI_DMT_UINT8, ACPI_ASF2_OFFSET (DataLength), "Control Data Length"}, - {ACPI_DMT_UINT16, ACPI_ASF2_OFFSET (Reserved2), "Reserved"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -/* 2a: ASF Control data */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoAsf2a[] = -{ - {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Function), "Function"}, - {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Address), "Address"}, - {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Command), "Command"}, - {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Value), "Value"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -/* 3: ASF RMCP Boot Options */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoAsf3[] = -{ - {ACPI_DMT_UINT56, ACPI_ASF3_OFFSET (Capabilities[0]), "Capabilites"}, - {ACPI_DMT_UINT8, ACPI_ASF3_OFFSET (CompletionCode), "Completion Code"}, - {ACPI_DMT_UINT32, ACPI_ASF3_OFFSET (EnterpriseId), "Enterprise ID"}, - {ACPI_DMT_UINT8, ACPI_ASF3_OFFSET (Command), "Command"}, - {ACPI_DMT_UINT16, ACPI_ASF3_OFFSET (Parameter), "Parameter"}, - {ACPI_DMT_UINT16, ACPI_ASF3_OFFSET (BootOptions), "Boot Options"}, - {ACPI_DMT_UINT16, ACPI_ASF3_OFFSET (OemParameters), "Oem Parameters"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -/* 4: ASF Address */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoAsf4[] = -{ - {ACPI_DMT_UINT8, ACPI_ASF4_OFFSET (EpromAddress), "Eprom Address"}, - {ACPI_DMT_UINT8, ACPI_ASF4_OFFSET (Devices), "Device Count"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - - -/******************************************************************************* - * - * BOOT - Simple Boot Flag Table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoBoot[] = -{ - {ACPI_DMT_UINT8, ACPI_BOOT_OFFSET (CmosIndex), "Boot Register Index"}, - {ACPI_DMT_UINT24, ACPI_BOOT_OFFSET (Reserved[0]), "Reserved"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - - -/******************************************************************************* - * - * CPEP - Corrected Platform Error Polling table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoCpep[] = -{ - {ACPI_DMT_UINT64, ACPI_CPEP_OFFSET (Reserved), "Reserved"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoCpep0[] = -{ - {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Type), "Sub-Table Type"}, - {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Length), "Length"}, - {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Id), "Processor ID"}, - {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Eid), "Processor EID"}, - {ACPI_DMT_UINT32, ACPI_CPEP0_OFFSET (Interval), "Polling Interval"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - - -/******************************************************************************* - * - * DBGP - Debug Port - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoDbgp[] = -{ - {ACPI_DMT_UINT8, ACPI_DBGP_OFFSET (Type), "Interface Type"}, - {ACPI_DMT_UINT24, ACPI_DBGP_OFFSET (Reserved[0]), "Reserved"}, - {ACPI_DMT_GAS, ACPI_DBGP_OFFSET (DebugPort), "Debug Port Register"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - - -/******************************************************************************* - * - * DMAR - DMA Remapping table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoDmar[] = -{ - {ACPI_DMT_UINT8, ACPI_DMAR_OFFSET (Width), "Host Address Width"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -/* Common sub-table header (one per sub-table) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoDmarHdr[] = -{ - {ACPI_DMT_DMAR, ACPI_DMAR0_OFFSET (Header.Type), "Sub-Table Type"}, - {ACPI_DMT_UINT16, ACPI_DMAR0_OFFSET (Header.Length), "Length"}, - {ACPI_DMT_UINT8, ACPI_DMAR0_OFFSET (Header.Flags), "Flags"}, - {ACPI_DMT_UINT24, ACPI_DMAR0_OFFSET (Header.Reserved[0]), "Reserved"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -/* Common device scope entry */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoDmarScope[] = -{ - {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (EntryType), "Device Scope Entry Type"}, - {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (Length), "Entry Length"}, - {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (Segment), "PCI Segment Number"}, - {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (Bus), "PCI Bus Number"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -/* DMAR sub-tables */ - -/* 0: Hardware Unit Definition */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoDmar0[] = -{ - {ACPI_DMT_UINT64, ACPI_DMAR0_OFFSET (Address), "Register Base Address"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -/* 1: Reserved Memory Defininition */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoDmar1[] = -{ - {ACPI_DMT_UINT64, ACPI_DMAR1_OFFSET (Address), "Base Address"}, - {ACPI_DMT_UINT64, ACPI_DMAR1_OFFSET (EndAddress), "End Address (limit)"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - - -/******************************************************************************* - * - * ECDT - Embedded Controller Boot Resources Table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoEcdt[] = -{ - {ACPI_DMT_GAS, ACPI_ECDT_OFFSET (Control), "Command/Status Register"}, - {ACPI_DMT_GAS, ACPI_ECDT_OFFSET (Data), "Data Register"}, - {ACPI_DMT_UINT32, ACPI_ECDT_OFFSET (Uid), "UID"}, - {ACPI_DMT_UINT8, ACPI_ECDT_OFFSET (Gpe), "GPE Number"}, - {ACPI_DMT_STRING, ACPI_ECDT_OFFSET (Id[0]), "Namepath"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - - -/******************************************************************************* - * - * HPET - High Precision Event Timer table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoHpet[] = -{ - {ACPI_DMT_UINT32, ACPI_HPET_OFFSET (Id), "Hardware Block ID"}, - {ACPI_DMT_GAS, ACPI_HPET_OFFSET (Address), "Timer Block Register"}, - {ACPI_DMT_UINT8, ACPI_HPET_OFFSET (Sequence), "Sequence Number"}, - {ACPI_DMT_UINT16, ACPI_HPET_OFFSET (MinimumTick), "Minimum Clock Ticks"}, - {ACPI_DMT_UINT8, ACPI_HPET_OFFSET (Flags), "Flags (decoded below)"}, - {ACPI_DMT_FLAG0, ACPI_HPET_FLAG_OFFSET (Flags,0), "Page Protect"}, - {ACPI_DMT_FLAG1, ACPI_HPET_FLAG_OFFSET (Flags,0), "4K Page Protect"}, - {ACPI_DMT_FLAG2, ACPI_HPET_FLAG_OFFSET (Flags,0), "64K Page Protect"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - - -/******************************************************************************* - * - * MADT - Multiple APIC Description Table and subtables - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt[] = -{ - {ACPI_DMT_UINT32, ACPI_MADT_OFFSET (Address), "Local Apic Address"}, - {ACPI_DMT_UINT32, ACPI_MADT_OFFSET (Flags), "Flags (decoded below)"}, - {ACPI_DMT_FLAG0, ACPI_MADT_FLAG_OFFSET (Flags,0), "PC-AT Compatibility"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -/* Common sub-table header (one per sub-table) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadtHdr[] = -{ - {ACPI_DMT_MADT, ACPI_MADTH_OFFSET (Type), "Sub-Table Type"}, - {ACPI_DMT_UINT8, ACPI_MADTH_OFFSET (Length), "Length"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -/* MADT sub-tables */ - -/* 0: processor APIC */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt0[] = -{ - {ACPI_DMT_UINT8, ACPI_MADT0_OFFSET (ProcessorId), "Processor ID"}, - {ACPI_DMT_UINT8, ACPI_MADT0_OFFSET (Id), "Local Apic ID"}, - {ACPI_DMT_UINT32, ACPI_MADT0_OFFSET (LapicFlags), "Flags (decoded below)"}, - {ACPI_DMT_FLAG0, ACPI_MADT0_FLAG_OFFSET (LapicFlags,0), "Processor Enabled"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -/* 1: IO APIC */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt1[] = -{ - {ACPI_DMT_UINT8, ACPI_MADT1_OFFSET (Id), "I/O Apic ID"}, - {ACPI_DMT_UINT8, ACPI_MADT1_OFFSET (Reserved), "Reserved"}, - {ACPI_DMT_UINT32, ACPI_MADT1_OFFSET (Address), "Address"}, - {ACPI_DMT_UINT32, ACPI_MADT1_OFFSET (GlobalIrqBase), "Interrupt"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -/* 2: Interrupt Override */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt2[] = -{ - {ACPI_DMT_UINT8, ACPI_MADT2_OFFSET (Bus), "Bus"}, - {ACPI_DMT_UINT8, ACPI_MADT2_OFFSET (SourceIrq), "Source"}, - {ACPI_DMT_UINT32, ACPI_MADT2_OFFSET (GlobalIrq), "Interrupt"}, - {ACPI_DMT_UINT16, ACPI_MADT2_OFFSET (IntiFlags), "Flags (decoded below)"}, - {ACPI_DMT_FLAGS0, ACPI_MADT2_FLAG_OFFSET (IntiFlags,0), "Polarity"}, - {ACPI_DMT_FLAGS2, ACPI_MADT2_FLAG_OFFSET (IntiFlags,0), "Trigger Mode"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -/* 3: NMI Sources */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt3[] = -{ - {ACPI_DMT_UINT16, ACPI_MADT3_OFFSET (IntiFlags), "Flags (decoded below)"}, - {ACPI_DMT_FLAGS0, ACPI_MADT3_FLAG_OFFSET (IntiFlags,0), "Polarity"}, - {ACPI_DMT_FLAGS2, ACPI_MADT3_FLAG_OFFSET (IntiFlags,0), "Trigger Mode"}, - {ACPI_DMT_UINT32, ACPI_MADT3_OFFSET (GlobalIrq), "Interrupt"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -/* 4: Local APIC NMI */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt4[] = -{ - {ACPI_DMT_UINT8, ACPI_MADT4_OFFSET (ProcessorId), "Processor ID"}, - {ACPI_DMT_UINT16, ACPI_MADT4_OFFSET (IntiFlags), "Flags (decoded below)"}, - {ACPI_DMT_FLAGS0, ACPI_MADT4_FLAG_OFFSET (IntiFlags,0), "Polarity"}, - {ACPI_DMT_FLAGS2, ACPI_MADT4_FLAG_OFFSET (IntiFlags,0), "Trigger Mode"}, - {ACPI_DMT_UINT8, ACPI_MADT4_OFFSET (Lint), "Interrupt Input LINT"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -/* 5: Address Override */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt5[] = -{ - {ACPI_DMT_UINT16, ACPI_MADT5_OFFSET (Reserved), "Reserved"}, - {ACPI_DMT_UINT64, ACPI_MADT5_OFFSET (Address), "APIC Address"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -/* 6: I/O Sapic */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt6[] = -{ - {ACPI_DMT_UINT8, ACPI_MADT6_OFFSET (Id), "I/O Sapic ID"}, - {ACPI_DMT_UINT8, ACPI_MADT6_OFFSET (Reserved), "Reserved"}, - {ACPI_DMT_UINT32, ACPI_MADT6_OFFSET (GlobalIrqBase), "Interrupt Base"}, - {ACPI_DMT_UINT64, ACPI_MADT6_OFFSET (Address), "Address"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -/* 7: Local Sapic */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt7[] = -{ - {ACPI_DMT_UINT8, ACPI_MADT7_OFFSET (ProcessorId), "Processor ID"}, - {ACPI_DMT_UINT8, ACPI_MADT7_OFFSET (Id), "Local Sapic ID"}, - {ACPI_DMT_UINT8, ACPI_MADT7_OFFSET (Eid), "Local Sapic EID"}, - {ACPI_DMT_UINT24, ACPI_MADT7_OFFSET (Reserved[0]), "Reserved"}, - {ACPI_DMT_UINT32, ACPI_MADT7_OFFSET (LapicFlags), "Flags (decoded below)"}, - {ACPI_DMT_FLAG0, ACPI_MADT7_FLAG_OFFSET (LapicFlags,0), "Processor Enabled"}, - {ACPI_DMT_UINT32, ACPI_MADT7_OFFSET (Uid), "Processor UID"}, - {ACPI_DMT_STRING, ACPI_MADT7_OFFSET (UidString[0]), "Processor UID String"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -/* 8: Platform Interrupt Source */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt8[] = -{ - {ACPI_DMT_UINT16, ACPI_MADT8_OFFSET (IntiFlags), "Flags (decoded below)"}, - {ACPI_DMT_FLAGS0, ACPI_MADT8_FLAG_OFFSET (IntiFlags,0), "Polarity"}, - {ACPI_DMT_FLAGS2, ACPI_MADT8_FLAG_OFFSET (IntiFlags,0), "Trigger Mode"}, - {ACPI_DMT_UINT8, ACPI_MADT8_OFFSET (Type), "InterruptType"}, - {ACPI_DMT_UINT8, ACPI_MADT8_OFFSET (Id), "Processor ID"}, - {ACPI_DMT_UINT8, ACPI_MADT8_OFFSET (Eid), "Processor EID"}, - {ACPI_DMT_UINT8, ACPI_MADT8_OFFSET (IoSapicVector), "I/O Sapic Vector"}, - {ACPI_DMT_UINT32, ACPI_MADT8_OFFSET (GlobalIrq), "Interrupt"}, - {ACPI_DMT_UINT32, ACPI_MADT8_OFFSET (Flags), "Flags (decoded below)"}, - {ACPI_DMT_FLAG0, ACPI_MADT8_OFFSET (Flags), "CPEI Override"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - - -/******************************************************************************* - * - * MCFG - PCI Memory Mapped Configuration table and sub-table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMcfg[] = -{ - {ACPI_DMT_UINT64, ACPI_MCFG_OFFSET (Reserved[0]), "Reserved"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoMcfg0[] = -{ - {ACPI_DMT_UINT64, ACPI_MCFG0_OFFSET (Address), "Base Address"}, - {ACPI_DMT_UINT16, ACPI_MCFG0_OFFSET (PciSegment), "Segment Group Number"}, - {ACPI_DMT_UINT8, ACPI_MCFG0_OFFSET (StartBusNumber), "Start Bus Number"}, - {ACPI_DMT_UINT8, ACPI_MCFG0_OFFSET (EndBusNumber), "End Bus Number"}, - {ACPI_DMT_UINT32, ACPI_MCFG0_OFFSET (Reserved), "Reserved"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - - -/******************************************************************************* - * - * SBST - Smart Battery Specification Table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoSbst[] = -{ - {ACPI_DMT_UINT32, ACPI_SBST_OFFSET (WarningLevel), "Warning Level"}, - {ACPI_DMT_UINT32, ACPI_SBST_OFFSET (LowLevel), "Low Level"}, - {ACPI_DMT_UINT32, ACPI_SBST_OFFSET (CriticalLevel), "Critical Level"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - - -/******************************************************************************* - * - * SLIT - System Locality Information Table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoSlit[] = -{ - {ACPI_DMT_UINT64, ACPI_SLIT_OFFSET (LocalityCount), "Localities"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - - -/******************************************************************************* - * - * SPCR - Serial Port Console Redirection table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoSpcr[] = -{ - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (InterfaceType), "Interface Type"}, - {ACPI_DMT_UINT24, ACPI_SPCR_OFFSET (Reserved[0]), "Reserved"}, - {ACPI_DMT_GAS, ACPI_SPCR_OFFSET (SerialPort), "Serial Port Register"}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (InterruptType), "Interrupt Type"}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PcInterrupt), "PCAT-compatible IRQ"}, - {ACPI_DMT_UINT32, ACPI_SPCR_OFFSET (Interrupt), "Interrupt"}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (BaudRate), "Baud Rate"}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (Parity), "Parity"}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (StopBits), "Stop Bits"}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (FlowControl), "Flow Control"}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (TerminalType), "Terminal Type"}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (Reserved2), "Reserved"}, - {ACPI_DMT_UINT16, ACPI_SPCR_OFFSET (PciDeviceId), "PCI Device ID"}, - {ACPI_DMT_UINT16, ACPI_SPCR_OFFSET (PciVendorId), "PCI Vendor ID"}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciBus), "PCI Bus"}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciDevice), "PCI Device"}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciFunction), "PCI Function"}, - {ACPI_DMT_UINT32, ACPI_SPCR_OFFSET (PciFlags), "PCI Flags"}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciSegment), "PCI Segment"}, - {ACPI_DMT_UINT32, ACPI_SPCR_OFFSET (Reserved2), "Reserved"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - - -/******************************************************************************* - * - * SPMI - Server Platform Management Interface table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoSpmi[] = -{ - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (Reserved), "Reserved"}, - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (InterfaceType), "Interface Type"}, - {ACPI_DMT_UINT16, ACPI_SPMI_OFFSET (SpecRevision), "IPMI Spec Version"}, - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (InterruptType), "Interrupt Type"}, - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (GpeNumber), "GPE Number"}, - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (Reserved1), "Reserved"}, - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciDeviceFlag), "PCI Device Flag"}, - {ACPI_DMT_UINT32, ACPI_SPMI_OFFSET (Interrupt), "Interrupt"}, - {ACPI_DMT_GAS, ACPI_SPMI_OFFSET (IpmiRegister), "IPMI Register"}, - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciSegment), "PCI Segment"}, - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciBus), "PCI Bus"}, - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciDevice), "PCI Device"}, - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciFunction), "PCI Function"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - - -/******************************************************************************* - * - * SRAT - System Resource Affinity Table and sub-tables - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoSrat[] = -{ - {ACPI_DMT_UINT32, ACPI_SRAT_OFFSET (TableRevision), "Table Revision"}, - {ACPI_DMT_UINT64, ACPI_SRAT_OFFSET (Reserved), "Reserved"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoSrat0[] = -{ - {ACPI_DMT_SRAT, ACPI_SRAT0_OFFSET (Header.Type), "Sub-Table Type"}, - {ACPI_DMT_UINT8, ACPI_SRAT0_OFFSET (Header.Length), "Length"}, - {ACPI_DMT_UINT8, ACPI_SRAT0_OFFSET (ProximityDomainLo), "Proximity Domain Low(8)"}, - {ACPI_DMT_UINT8, ACPI_SRAT0_OFFSET (ApicId), "Apic ID"}, - {ACPI_DMT_UINT32, ACPI_SRAT0_OFFSET (Flags), "Flags (decoded below)"}, - {ACPI_DMT_FLAG0, ACPI_SRAT0_FLAG_OFFSET (Flags,0), "Enabled"}, - {ACPI_DMT_UINT8, ACPI_SRAT0_OFFSET (LocalSapicEid), "Local Sapic EID"}, - {ACPI_DMT_UINT24, ACPI_SRAT0_OFFSET (ProximityDomainHi[0]), "Proximity Domain High(24)"}, - {ACPI_DMT_UINT32, ACPI_SRAT0_OFFSET (Reserved), "Reserved"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoSrat1[] = -{ - {ACPI_DMT_SRAT, ACPI_SRAT1_OFFSET (Header.Type), "Sub-Table Type"}, - {ACPI_DMT_UINT8, ACPI_SRAT1_OFFSET (Header.Length), "Length"}, - {ACPI_DMT_UINT32, ACPI_SRAT1_OFFSET (ProximityDomain), "Proximity Domain"}, - {ACPI_DMT_UINT16, ACPI_SRAT1_OFFSET (Reserved), "Reserved"}, - {ACPI_DMT_UINT64, ACPI_SRAT1_OFFSET (BaseAddress), "Base Address"}, - {ACPI_DMT_UINT64, ACPI_SRAT1_OFFSET (Length), "Address Length"}, - {ACPI_DMT_UINT32, ACPI_SRAT1_OFFSET (MemoryType), "Memory Type"}, - {ACPI_DMT_UINT32, ACPI_SRAT1_OFFSET (Flags), "Flags (decoded below)"}, - {ACPI_DMT_FLAG0, ACPI_SRAT1_FLAG_OFFSET (Flags,0), "Enabled"}, - {ACPI_DMT_FLAG1, ACPI_SRAT1_FLAG_OFFSET (Flags,0), "Hot Pluggable"}, - {ACPI_DMT_FLAG2, ACPI_SRAT1_FLAG_OFFSET (Flags,0), "Non-Volatile"}, - {ACPI_DMT_UINT64, ACPI_SRAT1_OFFSET (Reserved1), "Reserved"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - - -/******************************************************************************* - * - * TCPA - Trusted Computing Platform Alliance table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoTcpa[] = -{ - {ACPI_DMT_UINT16, ACPI_TCPA_OFFSET (Reserved), "Reserved"}, - {ACPI_DMT_UINT32, ACPI_TCPA_OFFSET (MaxLogLength), "Max Event Log Length"}, - {ACPI_DMT_UINT64, ACPI_TCPA_OFFSET (LogAddress), "Event Log Address"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - - -/******************************************************************************* - * - * WDRT - Watchdog Resource Table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoWdrt[] = -{ - {ACPI_DMT_UINT32, ACPI_WDRT_OFFSET (HeaderLength), "Header Length"}, - {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (PciSegment), "PCI Segment"}, - {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (PciBus), "PCI Bus"}, - {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (PciDevice), "PCI Device"}, - {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (PciFunction), "PCI Function"}, - {ACPI_DMT_UINT32, ACPI_WDRT_OFFSET (TimerPeriod), "Timer Period"}, - {ACPI_DMT_UINT32, ACPI_WDRT_OFFSET (MaxCount), "Max Count"}, - {ACPI_DMT_UINT32, ACPI_WDRT_OFFSET (MinCount), "Min Count"}, - {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (Flags), "Flags (decoded below)"}, - {ACPI_DMT_FLAG0, ACPI_WDRT_OFFSET (Flags), "Enabled"}, - {ACPI_DMT_FLAG7, ACPI_WDRT_OFFSET (Flags), "Stopped When Asleep"}, - {ACPI_DMT_UINT24, ACPI_WDRT_OFFSET (Reserved[0]), "Reserved"}, - {ACPI_DMT_UINT32, ACPI_WDRT_OFFSET (Entries), "Watchdog Entries"}, - {ACPI_DMT_EXIT, 0, NULL} -}; - diff --git a/sys/contrib/dev/acpica-unix-20061109/common/getopt.c b/sys/contrib/dev/acpica-unix-20061109/common/getopt.c deleted file mode 100644 index 485ee31b9c..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/common/getopt.c +++ /dev/null @@ -1,246 +0,0 @@ - -/****************************************************************************** - * - * Module Name: getopt - * $Revision: 1.9 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include -#include - -#define ERR(szz,czz) if(AcpiGbl_Opterr){fprintf(stderr,"%s%s%c\n",argv[0],szz,czz);} - - -int AcpiGbl_Opterr = 1; -int AcpiGbl_Optind = 1; -int AcpiGbl_Optopt; -char *AcpiGbl_Optarg; - - -/******************************************************************************* - * - * FUNCTION: AcpiGetopt - * - * PARAMETERS: argc, argv - from main - * opts - options info list - * - * RETURN: Option character or EOF - * - * DESCRIPTION: Get the next option - * - ******************************************************************************/ - -int -AcpiGetopt( - int argc, - char **argv, - char *opts) -{ - static int CurrentCharPtr = 1; - int CurrentChar; - char *OptsPtr; - - - if (CurrentCharPtr == 1) - { - if (AcpiGbl_Optind >= argc || - argv[AcpiGbl_Optind][0] != '-' || - argv[AcpiGbl_Optind][1] == '\0') - { - return(EOF); - } - else if (strcmp (argv[AcpiGbl_Optind], "--") == 0) - { - AcpiGbl_Optind++; - return(EOF); - } - } - - /* Get the option */ - - CurrentChar = - AcpiGbl_Optopt = - argv[AcpiGbl_Optind][CurrentCharPtr]; - - /* Make sure that the option is legal */ - - if (CurrentChar == ':' || - (OptsPtr = strchr (opts, CurrentChar)) == NULL) - { - ERR (": illegal option -- ", CurrentChar); - - if (argv[AcpiGbl_Optind][++CurrentCharPtr] == '\0') - { - AcpiGbl_Optind++; - CurrentCharPtr = 1; - } - - return ('?'); - } - - /* Option requires an argument? */ - - if (*++OptsPtr == ':') - { - if (argv[AcpiGbl_Optind][CurrentCharPtr+1] != '\0') - { - AcpiGbl_Optarg = &argv[AcpiGbl_Optind++][CurrentCharPtr+1]; - } - else if (++AcpiGbl_Optind >= argc) - { - ERR (": option requires an argument -- ", CurrentChar); - - CurrentCharPtr = 1; - return ('?'); - } - else - { - AcpiGbl_Optarg = argv[AcpiGbl_Optind++]; - } - - CurrentCharPtr = 1; - } - - /* Option has optional single-char arguments? */ - - else if (*OptsPtr == '^') - { - if (argv[AcpiGbl_Optind][CurrentCharPtr+1] != '\0') - { - AcpiGbl_Optarg = &argv[AcpiGbl_Optind][CurrentCharPtr+1]; - } - else - { - AcpiGbl_Optarg = "^"; - } - - AcpiGbl_Optind++; - CurrentCharPtr = 1; - } - - /* Option with no arguments */ - - else - { - if (argv[AcpiGbl_Optind][++CurrentCharPtr] == '\0') - { - CurrentCharPtr = 1; - AcpiGbl_Optind++; - } - - AcpiGbl_Optarg = NULL; - } - - return (CurrentChar); -} diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/Makefile b/sys/contrib/dev/acpica-unix-20061109/compiler/Makefile deleted file mode 100644 index 33eaa797f4..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/Makefile +++ /dev/null @@ -1,123 +0,0 @@ - - -PROG= iasl -SRCS= aslcompilerparse.c aslcompilerlex.c aslanalyze.c aslcodegen.c \ - aslcompile.c aslerror.c aslfiles.c asllength.c \ - asllisting.c aslload.c asllookup.c aslmain.c aslmap.c aslopcodes.c \ - asloperands.c aslresource.c aslrestype1.c aslrestype2.c \ - asltree.c aslutils.c asltransform.c aslfold.c aslstubs.c aslopt.c \ - ../common/getopt.c \ - ../utilities/utalloc.c \ - ../utilities/utcache.c \ - ../utilities/utcopy.c \ - ../utilities/utdebug.c \ - ../utilities/utdelete.c \ - ../utilities/utglobal.c \ - ../utilities/utobject.c \ - ../utilities/utmisc.c \ - ../utilities/utmath.c \ - ../utilities/utmutex.c \ - ../utilities/utresrc.c \ - ../utilities/utstate.c \ - ../namespace/nsaccess.c \ - ../namespace/nsalloc.c \ - ../namespace/nsdump.c \ - ../namespace/nsnames.c \ - ../namespace/nsobject.c \ - ../namespace/nsparse.c \ - ../namespace/nssearch.c \ - ../namespace/nsutils.c \ - ../namespace/nswalk.c \ - ../namespace/nsxfobj.c \ - ../interpreter/parser/psargs.c \ - ../interpreter/parser/psloop.c \ - ../interpreter/parser/psopcode.c \ - ../interpreter/parser/psparse.c \ - ../interpreter/parser/psscope.c \ - ../interpreter/parser/pstree.c \ - ../interpreter/parser/psutils.c \ - ../interpreter/parser/pswalk.c \ - ../interpreter/dispatcher/dswscope.c \ - ../interpreter/dispatcher/dswstate.c \ - ../interpreter/dispatcher/dsfield.c \ - ../interpreter/dispatcher/dsobject.c \ - ../interpreter/dispatcher/dsopcode.c \ - ../interpreter/dispatcher/dsutils.c \ - ../interpreter/dispatcher/dswexec.c \ - ../interpreter/dispatcher/dswload.c \ - ../interpreter/executer/exconvrt.c \ - ../interpreter/executer/excreate.c \ - ../interpreter/executer/exdump.c \ - ../interpreter/executer/exmisc.c \ - ../interpreter/executer/exmutex.c \ - ../interpreter/executer/exnames.c \ - ../interpreter/executer/exoparg1.c \ - ../interpreter/executer/exoparg2.c \ - ../interpreter/executer/exoparg3.c \ - ../interpreter/executer/exoparg6.c \ - ../interpreter/executer/exprep.c \ - ../interpreter/executer/exregion.c \ - ../interpreter/executer/exresnte.c \ - ../interpreter/executer/exresolv.c \ - ../interpreter/executer/exresop.c \ - ../interpreter/executer/exstore.c \ - ../interpreter/executer/exstoren.c \ - ../interpreter/executer/exstorob.c \ - ../interpreter/executer/exsystem.c \ - ../interpreter/executer/exutils.c \ - ../common/adfile.c \ - ../common/adisasm.c \ - ../common/adwalk.c \ - ../common/dmrestag.c \ - ../common/dmtable.c \ - ../common/dmtbinfo.c \ - ../common/dmtbdump.c \ - ../debugger/dbfileio.c \ - ../disassembler/dmbuffer.c \ - ../disassembler/dmnames.c \ - ../disassembler/dmopcode.c \ - ../disassembler/dmobject.c \ - ../disassembler/dmresrc.c \ - ../disassembler/dmresrcl.c \ - ../disassembler/dmresrcs.c \ - ../disassembler/dmutils.c \ - ../disassembler/dmwalk.c \ - ../tables/tbfadt.c \ - ../tables/tbinstal.c \ - ../tables/tbutils.c \ - ../tables/tbxface.c \ - ../osunixxf.c - -NOMAN= YES -CFLAGS+= -Wall -O2 -Wstrict-prototypes -D_LINUX -DACPI_ASL_COMPILER -I../include - -#YACC= yacc -YACC= bison -YFLAGS+= -v -d -LEX= flex -LFLAGS+= -i - -#.if $(YACC) == "bison" -YFLAGS+= -y -pAslCompiler -#.else -#CFLAGS+= -D_USE_BERKELEY_YACC -#.endif - -aslmain : $(patsubst %.c,%.o, $(SRCS)) - $(CC) $(LDFLAGS) $(patsubst %.c,%.o, $(SRCS)) \ - $(LOADLIBES) $(LDLIBS) -o iasl - -CLEANFILES= y.output y.tab.c y.tab.h aslcompiler.y.h \ - aslcompilerparse.c aslcompilerlex.c iasl - -aslcompilerparse.c: aslcompiler.y - ${YACC} ${YFLAGS} aslcompiler.y - cp y.tab.c aslcompilerparse.c - cp y.tab.h aslcompiler.y.h - -aslcompilerlex.c: aslcompiler.l - ${LEX} ${LFLAGS} -PAslCompiler -oaslcompilerlex.c aslcompiler.l - -clean : - rm -f $(CLEANFILES) $(patsubst %.c,%.o, $(SRCS)) - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/aslanalyze.c b/sys/contrib/dev/acpica-unix-20061109/compiler/aslanalyze.c deleted file mode 100644 index 9b33624061..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/aslanalyze.c +++ /dev/null @@ -1,2211 +0,0 @@ - -/****************************************************************************** - * - * Module Name: aslanalyze.c - check for semantic errors - * $Revision: 1.114 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "aslcompiler.h" -#include "aslcompiler.y.h" -#include "acparser.h" -#include "amlcode.h" - -#include - -#define _COMPONENT ACPI_COMPILER - ACPI_MODULE_NAME ("aslanalyze") - -/* Local prototypes */ - -static UINT32 -AnMapArgTypeToBtype ( - UINT32 ArgType); - -static UINT32 -AnMapEtypeToBtype ( - UINT32 Etype); - -static void -AnFormatBtype ( - char *Buffer, - UINT32 Btype); - -static UINT32 -AnGetBtype ( - ACPI_PARSE_OBJECT *Op); - -static UINT32 -AnCheckForReservedName ( - ACPI_PARSE_OBJECT *Op, - char *Name); - -static void -AnCheckForReservedMethod ( - ACPI_PARSE_OBJECT *Op, - ASL_METHOD_INFO *MethodInfo); - -static UINT32 -AnMapObjTypeToBtype ( - ACPI_PARSE_OBJECT *Op); - -static BOOLEAN -AnLastStatementIsReturn ( - ACPI_PARSE_OBJECT *Op); - -static void -AnCheckMethodReturnValue ( - ACPI_PARSE_OBJECT *Op, - const ACPI_OPCODE_INFO *OpInfo, - ACPI_PARSE_OBJECT *ArgOp, - UINT32 RequiredBtypes, - UINT32 ThisNodeBtype); - -static BOOLEAN -AnIsInternalMethod ( - ACPI_PARSE_OBJECT *Op); - -static UINT32 -AnGetInternalMethodReturnType ( - ACPI_PARSE_OBJECT *Op); - - -/******************************************************************************* - * - * FUNCTION: AnIsInternalMethod - * - * PARAMETERS: Op - Current op - * - * RETURN: Boolean - * - * DESCRIPTION: Check for an internal control method. - * - ******************************************************************************/ - -static BOOLEAN -AnIsInternalMethod ( - ACPI_PARSE_OBJECT *Op) -{ - - if ((!ACPI_STRCMP (Op->Asl.ExternalName, "\\_OSI")) || - (!ACPI_STRCMP (Op->Asl.ExternalName, "_OSI"))) - { - return (TRUE); - } - - return (FALSE); -} - - -/******************************************************************************* - * - * FUNCTION: AnGetInternalMethodReturnType - * - * PARAMETERS: Op - Current op - * - * RETURN: Btype - * - * DESCRIPTION: Get the return type of an internal method - * - ******************************************************************************/ - -static UINT32 -AnGetInternalMethodReturnType ( - ACPI_PARSE_OBJECT *Op) -{ - - if ((!ACPI_STRCMP (Op->Asl.ExternalName, "\\_OSI")) || - (!ACPI_STRCMP (Op->Asl.ExternalName, "_OSI"))) - { - return (ACPI_BTYPE_STRING); - } - - return (0); -} - - -/******************************************************************************* - * - * FUNCTION: AnMapArgTypeToBtype - * - * PARAMETERS: ArgType - The ARGI required type(s) for this argument, - * from the opcode info table - * - * RETURN: The corresponding Bit-encoded types - * - * DESCRIPTION: Convert an encoded ARGI required argument type code into a - * bitfield type code. Implements the implicit source conversion - * rules. - * - ******************************************************************************/ - -static UINT32 -AnMapArgTypeToBtype ( - UINT32 ArgType) -{ - - switch (ArgType) - { - - /* Simple types */ - - case ARGI_ANYTYPE: - return (ACPI_BTYPE_OBJECTS_AND_REFS); - - case ARGI_PACKAGE: - return (ACPI_BTYPE_PACKAGE); - - case ARGI_EVENT: - return (ACPI_BTYPE_EVENT); - - case ARGI_MUTEX: - return (ACPI_BTYPE_MUTEX); - - case ARGI_DDBHANDLE: - return (ACPI_BTYPE_DDB_HANDLE); - - /* Interchangeable types */ - /* - * Source conversion rules: - * Integer, String, and Buffer are all interchangeable - */ - case ARGI_INTEGER: - case ARGI_STRING: - case ARGI_BUFFER: - case ARGI_BUFFER_OR_STRING: - case ARGI_COMPUTEDATA: - return (ACPI_BTYPE_COMPUTE_DATA); - - /* References */ - - case ARGI_INTEGER_REF: - return (ACPI_BTYPE_INTEGER); - - case ARGI_OBJECT_REF: - return (ACPI_BTYPE_ALL_OBJECTS); - - case ARGI_DEVICE_REF: - return (ACPI_BTYPE_DEVICE_OBJECTS); - - case ARGI_REFERENCE: - return (ACPI_BTYPE_REFERENCE); - - case ARGI_TARGETREF: - case ARGI_FIXED_TARGET: - case ARGI_SIMPLE_TARGET: - return (ACPI_BTYPE_OBJECTS_AND_REFS); - - /* Complex types */ - - case ARGI_DATAOBJECT: - - /* - * Buffer, string, package or reference to a Op - - * Used only by SizeOf operator - */ - return (ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER | - ACPI_BTYPE_PACKAGE | ACPI_BTYPE_REFERENCE); - - case ARGI_COMPLEXOBJ: - - /* Buffer, String, or package */ - - return (ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER | ACPI_BTYPE_PACKAGE); - - case ARGI_REF_OR_STRING: - return (ACPI_BTYPE_STRING | ACPI_BTYPE_REFERENCE); - - case ARGI_REGION_OR_BUFFER: - - /* Used by Load() only. Allow buffers in addition to regions/fields */ - - return (ACPI_BTYPE_REGION | ACPI_BTYPE_BUFFER | ACPI_BTYPE_FIELD_UNIT); - - case ARGI_DATAREFOBJ: - return (ACPI_BTYPE_INTEGER |ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER | - ACPI_BTYPE_PACKAGE | ACPI_BTYPE_REFERENCE | ACPI_BTYPE_DDB_HANDLE); - - default: - break; - } - - return (ACPI_BTYPE_OBJECTS_AND_REFS); -} - - -/******************************************************************************* - * - * FUNCTION: AnMapEtypeToBtype - * - * PARAMETERS: Etype - Encoded ACPI Type - * - * RETURN: Btype corresponding to the Etype - * - * DESCRIPTION: Convert an encoded ACPI type to a bitfield type applying the - * operand conversion rules. In other words, returns the type(s) - * this Etype is implicitly converted to during interpretation. - * - ******************************************************************************/ - -static UINT32 -AnMapEtypeToBtype ( - UINT32 Etype) -{ - - - if (Etype == ACPI_TYPE_ANY) - { - return ACPI_BTYPE_OBJECTS_AND_REFS; - } - - /* Try the standard ACPI data types */ - - if (Etype <= ACPI_TYPE_EXTERNAL_MAX) - { - /* - * This switch statement implements the allowed operand conversion - * rules as per the "ASL Data Types" section of the ACPI - * specification. - */ - switch (Etype) - { - case ACPI_TYPE_INTEGER: - return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_DDB_HANDLE); - - case ACPI_TYPE_STRING: - case ACPI_TYPE_BUFFER: - return (ACPI_BTYPE_COMPUTE_DATA); - - case ACPI_TYPE_PACKAGE: - return (ACPI_BTYPE_PACKAGE); - - case ACPI_TYPE_FIELD_UNIT: - return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_FIELD_UNIT); - - case ACPI_TYPE_BUFFER_FIELD: - return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_BUFFER_FIELD); - - case ACPI_TYPE_DDB_HANDLE: - return (ACPI_BTYPE_INTEGER | ACPI_BTYPE_DDB_HANDLE); - - case ACPI_BTYPE_DEBUG_OBJECT: - - /* Cannot be used as a source operand */ - - return (0); - - default: - return (1 << (Etype - 1)); - } - } - - /* Try the internal data types */ - - switch (Etype) - { - case ACPI_TYPE_LOCAL_REGION_FIELD: - case ACPI_TYPE_LOCAL_BANK_FIELD: - case ACPI_TYPE_LOCAL_INDEX_FIELD: - - /* Named fields can be either Integer/Buffer/String */ - - return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_FIELD_UNIT); - - case ACPI_TYPE_LOCAL_ALIAS: - - return (ACPI_BTYPE_INTEGER); - - - case ACPI_TYPE_LOCAL_RESOURCE: - case ACPI_TYPE_LOCAL_RESOURCE_FIELD: - - return (ACPI_BTYPE_REFERENCE); - - default: - printf ("Unhandled encoded type: %X\n", Etype); - return (0); - } -} - - -/******************************************************************************* - * - * FUNCTION: AnFormatBtype - * - * PARAMETERS: Btype - Bitfield of ACPI types - * Buffer - Where to put the ascii string - * - * RETURN: None. - * - * DESCRIPTION: Convert a Btype to a string of ACPI types - * - ******************************************************************************/ - -static void -AnFormatBtype ( - char *Buffer, - UINT32 Btype) -{ - UINT32 Type; - BOOLEAN First = TRUE; - - - *Buffer = 0; - - if (Btype == 0) - { - strcat (Buffer, "NoReturnValue"); - return; - } - - for (Type = 1; Type <= ACPI_TYPE_EXTERNAL_MAX; Type++) - { - if (Btype & 0x00000001) - { - if (!First) - { - strcat (Buffer, "|"); - } - First = FALSE; - strcat (Buffer, AcpiUtGetTypeName (Type)); - } - Btype >>= 1; - } - - if (Btype & 0x00000001) - { - if (!First) - { - strcat (Buffer, "|"); - } - First = FALSE; - strcat (Buffer, "Reference"); - } - - Btype >>= 1; - if (Btype & 0x00000001) - { - if (!First) - { - strcat (Buffer, "|"); - } - First = FALSE; - strcat (Buffer, "Resource"); - } -} - - -/******************************************************************************* - * - * FUNCTION: AnGetBtype - * - * PARAMETERS: Op - Parse node whose type will be returned. - * - * RETURN: The Btype associated with the Op. - * - * DESCRIPTION: Get the (bitfield) ACPI type associated with the parse node. - * Handles the case where the node is a name or method call and - * the actual type must be obtained from the namespace node. - * - ******************************************************************************/ - -static UINT32 -AnGetBtype ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_NAMESPACE_NODE *Node; - ACPI_PARSE_OBJECT *ReferencedNode; - UINT32 ThisNodeBtype = 0; - - - if ((Op->Asl.ParseOpcode == PARSEOP_NAMESEG) || - (Op->Asl.ParseOpcode == PARSEOP_NAMESTRING) || - (Op->Asl.ParseOpcode == PARSEOP_METHODCALL)) - { - Node = Op->Asl.Node; - if (!Node) - { - DbgPrint (ASL_DEBUG_OUTPUT, - "No attached Nsnode: [%s] at line %d name [%s], ignoring typecheck\n", - Op->Asl.ParseOpName, Op->Asl.LineNumber, - Op->Asl.ExternalName); - return ACPI_UINT32_MAX; - } - - ThisNodeBtype = AnMapEtypeToBtype (Node->Type); - if (!ThisNodeBtype) - { - AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, Op, - "could not map type"); - } - - /* - * Since it was a named reference, enable the - * reference bit also - */ - ThisNodeBtype |= ACPI_BTYPE_REFERENCE; - - if (Op->Asl.ParseOpcode == PARSEOP_METHODCALL) - { - ReferencedNode = Node->Op; - if (!ReferencedNode) - { - /* Check for an internal method */ - - if (AnIsInternalMethod (Op)) - { - return (AnGetInternalMethodReturnType (Op)); - } - - AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, Op, - "null Op pointer"); - return ACPI_UINT32_MAX; - } - - if (ReferencedNode->Asl.CompileFlags & NODE_METHOD_TYPED) - { - ThisNodeBtype = ReferencedNode->Asl.AcpiBtype; - } - else - { - return (ACPI_UINT32_MAX -1); - } - } - } - else - { - ThisNodeBtype = Op->Asl.AcpiBtype; - } - - return (ThisNodeBtype); -} - - -/******************************************************************************* - * - * FUNCTION: AnCheckForReservedName - * - * PARAMETERS: Op - A parse node - * Name - NameSeg to check - * - * RETURN: None - * - * DESCRIPTION: Check a NameSeg against the reserved list. - * - ******************************************************************************/ - -static UINT32 -AnCheckForReservedName ( - ACPI_PARSE_OBJECT *Op, - char *Name) -{ - UINT32 i; - - - if (Name[0] == 0) - { - AcpiOsPrintf ("Found a null name, external = %s\n", - Op->Asl.ExternalName); - } - - /* All reserved names are prefixed with a single underscore */ - - if (Name[0] != '_') - { - return (ACPI_NOT_RESERVED_NAME); - } - - /* Check for a standard reserved method name */ - - for (i = 0; ReservedMethods[i].Name; i++) - { - if (ACPI_COMPARE_NAME (Name, ReservedMethods[i].Name)) - { - if (ReservedMethods[i].Flags & ASL_RSVD_SCOPE) - { - AslError (ASL_ERROR, ASL_MSG_RESERVED_WORD, Op, - Op->Asl.ExternalName); - return (ACPI_PREDEFINED_NAME); - } - else if (ReservedMethods[i].Flags & ASL_RSVD_RESOURCE_NAME) - { - AslError (ASL_ERROR, ASL_MSG_RESERVED_WORD, Op, - Op->Asl.ExternalName); - return (ACPI_PREDEFINED_NAME); - } - - /* Return index into reserved array */ - - return i; - } - } - - /* - * Now check for the "special" reserved names -- - * GPE: _Lxx - * GPE: _Exx - * EC: _Qxx - */ - if ((Name[1] == 'L') || - (Name[1] == 'E') || - (Name[1] == 'Q')) - { - /* The next two characters must be hex digits */ - - if ((isxdigit (Name[2])) && - (isxdigit (Name[3]))) - { - return (ACPI_EVENT_RESERVED_NAME); - } - } - - - /* Check for the names reserved for the compiler itself: _T_x */ - - else if ((Op->Asl.ExternalName[1] == 'T') && - (Op->Asl.ExternalName[2] == '_')) - { - /* Ignore if actually emitted by the compiler */ - - if (Op->Asl.CompileFlags & NODE_COMPILER_EMITTED) - { - return (ACPI_NOT_RESERVED_NAME); - } - - AslError (ASL_ERROR, ASL_MSG_RESERVED_WORD, Op, Op->Asl.ExternalName); - return (ACPI_COMPILER_RESERVED_NAME); - } - - /* - * The name didn't match any of the known reserved names. Flag it as a - * warning, since the entire namespace starting with an underscore is - * reserved by the ACPI spec. - */ - AslError (ASL_WARNING, ASL_MSG_UNKNOWN_RESERVED_NAME, Op, - Op->Asl.ExternalName); - - return (ACPI_NOT_RESERVED_NAME); -} - - -/******************************************************************************* - * - * FUNCTION: AnCheckForReservedMethod - * - * PARAMETERS: Op - A parse node of type "METHOD". - * MethodInfo - Saved info about this method - * - * RETURN: None - * - * DESCRIPTION: If method is a reserved name, check that the number of arguments - * and the return type (returns a value or not) is correct. - * - ******************************************************************************/ - -static void -AnCheckForReservedMethod ( - ACPI_PARSE_OBJECT *Op, - ASL_METHOD_INFO *MethodInfo) -{ - UINT32 Index; - - - /* Check for a match against the reserved name list */ - - Index = AnCheckForReservedName (Op, Op->Asl.NameSeg); - - switch (Index) - { - case ACPI_NOT_RESERVED_NAME: - case ACPI_PREDEFINED_NAME: - case ACPI_COMPILER_RESERVED_NAME: - - /* Just return, nothing to do */ - break; - - - case ACPI_EVENT_RESERVED_NAME: - - Gbl_ReservedMethods++; - - /* NumArguments must be zero for all _Lxx, _Exx, and _Qxx methods */ - - if (MethodInfo->NumArguments != 0) - { - sprintf (MsgBuffer, "%s requires %d", - Op->Asl.ExternalName, 0); - - AslError (ASL_WARNING, ASL_MSG_RESERVED_ARG_COUNT_HI, Op, MsgBuffer); - } - break; - - - default: - - Gbl_ReservedMethods++; - - /* Matched a reserved method name */ - - if (MethodInfo->NumArguments != ReservedMethods[Index].NumArguments) - { - sprintf (MsgBuffer, "%s requires %d", - ReservedMethods[Index].Name, - ReservedMethods[Index].NumArguments); - - if (MethodInfo->NumArguments > ReservedMethods[Index].NumArguments) - { - AslError (ASL_WARNING, ASL_MSG_RESERVED_ARG_COUNT_HI, Op, - MsgBuffer); - } - else - { - AslError (ASL_WARNING, ASL_MSG_RESERVED_ARG_COUNT_LO, Op, - MsgBuffer); - } - } - - if (MethodInfo->NumReturnNoValue && - ReservedMethods[Index].Flags & ASL_RSVD_RETURN_VALUE) - { - sprintf (MsgBuffer, "%s", ReservedMethods[Index].Name); - - AslError (ASL_WARNING, ASL_MSG_RESERVED_RETURN_VALUE, Op, MsgBuffer); - } - break; - } -} - - -/******************************************************************************* - * - * FUNCTION: AnMapObjTypeToBtype - * - * PARAMETERS: Op - A parse node - * - * RETURN: A Btype - * - * DESCRIPTION: Map object to the associated "Btype" - * - ******************************************************************************/ - -static UINT32 -AnMapObjTypeToBtype ( - ACPI_PARSE_OBJECT *Op) -{ - - switch (Op->Asl.ParseOpcode) - { - case PARSEOP_OBJECTTYPE_BFF: /* "BuffFieldObj" */ - return (ACPI_BTYPE_BUFFER_FIELD); - - case PARSEOP_OBJECTTYPE_BUF: /* "BuffObj" */ - return (ACPI_BTYPE_BUFFER); - - case PARSEOP_OBJECTTYPE_DDB: /* "DDBHandleObj" */ - return (ACPI_BTYPE_DDB_HANDLE); - - case PARSEOP_OBJECTTYPE_DEV: /* "DeviceObj" */ - return (ACPI_BTYPE_DEVICE); - - case PARSEOP_OBJECTTYPE_EVT: /* "EventObj" */ - return (ACPI_BTYPE_EVENT); - - case PARSEOP_OBJECTTYPE_FLD: /* "FieldUnitObj" */ - return (ACPI_BTYPE_FIELD_UNIT); - - case PARSEOP_OBJECTTYPE_INT: /* "IntObj" */ - return (ACPI_BTYPE_INTEGER); - - case PARSEOP_OBJECTTYPE_MTH: /* "MethodObj" */ - return (ACPI_BTYPE_METHOD); - - case PARSEOP_OBJECTTYPE_MTX: /* "MutexObj" */ - return (ACPI_BTYPE_MUTEX); - - case PARSEOP_OBJECTTYPE_OPR: /* "OpRegionObj" */ - return (ACPI_BTYPE_REGION); - - case PARSEOP_OBJECTTYPE_PKG: /* "PkgObj" */ - return (ACPI_BTYPE_PACKAGE); - - case PARSEOP_OBJECTTYPE_POW: /* "PowerResObj" */ - return (ACPI_BTYPE_POWER); - - case PARSEOP_OBJECTTYPE_STR: /* "StrObj" */ - return (ACPI_BTYPE_STRING); - - case PARSEOP_OBJECTTYPE_THZ: /* "ThermalZoneObj" */ - return (ACPI_BTYPE_THERMAL); - - case PARSEOP_OBJECTTYPE_UNK: /* "UnknownObj" */ - return (ACPI_BTYPE_OBJECTS_AND_REFS); - - default: - return (0); - } -} - - -/******************************************************************************* - * - * FUNCTION: AnMethodAnalysisWalkBegin - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Descending callback for the analysis walk. Check methods for: - * 1) Initialized local variables - * 2) Valid arguments - * 3) Return types - * - ******************************************************************************/ - -ACPI_STATUS -AnMethodAnalysisWalkBegin ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - ASL_ANALYSIS_WALK_INFO *WalkInfo = (ASL_ANALYSIS_WALK_INFO *) Context; - ASL_METHOD_INFO *MethodInfo = WalkInfo->MethodStack; - ACPI_PARSE_OBJECT *Next; - UINT32 RegisterNumber; - UINT32 i; - char LocalName[] = "Local0"; - char ArgName[] = "Arg0"; - ACPI_PARSE_OBJECT *ArgNode; - ACPI_PARSE_OBJECT *NextType; - ACPI_PARSE_OBJECT *NextParamType; - UINT8 ActualArgs = 0; - - - switch (Op->Asl.ParseOpcode) - { - case PARSEOP_METHOD: - - TotalMethods++; - - /* Create and init method info */ - - MethodInfo = UtLocalCalloc (sizeof (ASL_METHOD_INFO)); - MethodInfo->Next = WalkInfo->MethodStack; - MethodInfo->Op = Op; - - WalkInfo->MethodStack = MethodInfo; - - /* Get the name node, ignored here */ - - Next = Op->Asl.Child; - - /* Get the NumArguments node */ - - Next = Next->Asl.Next; - MethodInfo->NumArguments = (UINT8) - (((UINT8) Next->Asl.Value.Integer) & 0x07); - - /* Get the SerializeRule and SyncLevel nodes, ignored here */ - - Next = Next->Asl.Next; - Next = Next->Asl.Next; - ArgNode = Next; - - /* Get the ReturnType node */ - - Next = Next->Asl.Next; - - NextType = Next->Asl.Child; - while (NextType) - { - /* Get and map each of the ReturnTypes */ - - MethodInfo->ValidReturnTypes |= AnMapObjTypeToBtype (NextType); - NextType->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; - NextType = NextType->Asl.Next; - } - - /* Get the ParameterType node */ - - Next = Next->Asl.Next; - - NextType = Next->Asl.Child; - while (NextType) - { - if (NextType->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) - { - NextParamType = NextType->Asl.Child; - while (NextParamType) - { - MethodInfo->ValidArgTypes[ActualArgs] |= AnMapObjTypeToBtype (NextParamType); - NextParamType->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; - NextParamType = NextParamType->Asl.Next; - } - } - else - { - MethodInfo->ValidArgTypes[ActualArgs] = - AnMapObjTypeToBtype (NextType); - NextType->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; - } - - ActualArgs++; - NextType = NextType->Asl.Next; - } - - if ((MethodInfo->NumArguments) && - (MethodInfo->NumArguments != ActualArgs)) - { - /* error: Param list did not match number of args */ - } - - /* Allow numarguments == 0 for Function() */ - - if ((!MethodInfo->NumArguments) && (ActualArgs)) - { - MethodInfo->NumArguments = ActualArgs; - ArgNode->Asl.Value.Integer |= ActualArgs; - } - - /* - * Actual arguments are initialized at method entry. - * All other ArgX "registers" can be used as locals, so we - * track their initialization. - */ - for (i = 0; i < MethodInfo->NumArguments; i++) - { - MethodInfo->ArgInitialized[i] = TRUE; - } - break; - - - case PARSEOP_METHODCALL: - - if (MethodInfo && - (Op->Asl.Node == MethodInfo->Op->Asl.Node)) - { - AslError (ASL_REMARK, ASL_MSG_RECURSION, Op, Op->Asl.ExternalName); - } - break; - - - case PARSEOP_LOCAL0: - case PARSEOP_LOCAL1: - case PARSEOP_LOCAL2: - case PARSEOP_LOCAL3: - case PARSEOP_LOCAL4: - case PARSEOP_LOCAL5: - case PARSEOP_LOCAL6: - case PARSEOP_LOCAL7: - - if (!MethodInfo) - { - /* - * Probably was an error in the method declaration, - * no additional error here - */ - ACPI_WARNING ((AE_INFO, "%p, No parent method", Op)); - return (AE_ERROR); - } - - RegisterNumber = (Op->Asl.AmlOpcode & 0x000F); - - /* - * If the local is being used as a target, mark the local - * initialized - */ - if (Op->Asl.CompileFlags & NODE_IS_TARGET) - { - MethodInfo->LocalInitialized[RegisterNumber] = TRUE; - } - - /* - * Otherwise, this is a reference, check if the local - * has been previously initialized. - * - * The only operator that accepts an uninitialized value is ObjectType() - */ - else if ((!MethodInfo->LocalInitialized[RegisterNumber]) && - (Op->Asl.Parent->Asl.ParseOpcode != PARSEOP_OBJECTTYPE)) - { - LocalName[strlen (LocalName) -1] = (char) (RegisterNumber + 0x30); - AslError (ASL_ERROR, ASL_MSG_LOCAL_INIT, Op, LocalName); - } - break; - - - case PARSEOP_ARG0: - case PARSEOP_ARG1: - case PARSEOP_ARG2: - case PARSEOP_ARG3: - case PARSEOP_ARG4: - case PARSEOP_ARG5: - case PARSEOP_ARG6: - - if (!MethodInfo) - { - /* - * Probably was an error in the method declaration, - * no additional error here - */ - ACPI_WARNING ((AE_INFO, "%p, No parent method", Op)); - return (AE_ERROR); - } - - RegisterNumber = (Op->Asl.AmlOpcode & 0x000F) - 8; - ArgName[strlen (ArgName) -1] = (char) (RegisterNumber + 0x30); - - /* - * If the Arg is being used as a target, mark the local - * initialized - */ - if (Op->Asl.CompileFlags & NODE_IS_TARGET) - { - MethodInfo->ArgInitialized[RegisterNumber] = TRUE; - } - - /* - * Otherwise, this is a reference, check if the Arg - * has been previously initialized. - * - * The only operator that accepts an uninitialized value is ObjectType() - */ - else if ((!MethodInfo->ArgInitialized[RegisterNumber]) && - (Op->Asl.Parent->Asl.ParseOpcode != PARSEOP_OBJECTTYPE)) - { - AslError (ASL_ERROR, ASL_MSG_ARG_INIT, Op, ArgName); - } - - /* Flag this arg if it is not a "real" argument to the method */ - - if (RegisterNumber >= MethodInfo->NumArguments) - { - AslError (ASL_REMARK, ASL_MSG_NOT_PARAMETER, Op, ArgName); - } - break; - - - case PARSEOP_RETURN: - - if (!MethodInfo) - { - /* - * Probably was an error in the method declaration, - * no additional error here - */ - ACPI_WARNING ((AE_INFO, "%p, No parent method", Op)); - return (AE_ERROR); - } - - /* Child indicates a return value */ - - if ((Op->Asl.Child) && - (Op->Asl.Child->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG)) - { - MethodInfo->NumReturnWithValue++; - } - else - { - MethodInfo->NumReturnNoValue++; - } - break; - - - case PARSEOP_BREAK: - case PARSEOP_CONTINUE: - - Next = Op->Asl.Parent; - while (Next) - { - if (Next->Asl.ParseOpcode == PARSEOP_WHILE) - { - break; - } - Next = Next->Asl.Parent; - } - - if (!Next) - { - AslError (ASL_ERROR, ASL_MSG_NO_WHILE, Op, NULL); - } - break; - - - case PARSEOP_STALL: - - /* We can range check if the argument is an integer */ - - if ((Op->Asl.Child->Asl.ParseOpcode == PARSEOP_INTEGER) && - (Op->Asl.Child->Asl.Value.Integer > ACPI_UINT8_MAX)) - { - AslError (ASL_ERROR, ASL_MSG_INVALID_TIME, Op, NULL); - } - break; - - - case PARSEOP_DEVICE: - case PARSEOP_EVENT: - case PARSEOP_MUTEX: - case PARSEOP_OPERATIONREGION: - case PARSEOP_POWERRESOURCE: - case PARSEOP_PROCESSOR: - case PARSEOP_THERMALZONE: - - /* - * The first operand is a name to be created in the namespace. - * Check against the reserved list. - */ - i = AnCheckForReservedName (Op, Op->Asl.NameSeg); - if (i < ACPI_VALID_RESERVED_NAME_MAX) - { - AslError (ASL_ERROR, ASL_MSG_RESERVED_USE, Op, Op->Asl.ExternalName); - } - break; - - - case PARSEOP_NAME: - - i = AnCheckForReservedName (Op, Op->Asl.NameSeg); - if (i < ACPI_VALID_RESERVED_NAME_MAX) - { - if (ReservedMethods[i].NumArguments > 0) - { - /* - * This reserved name must be a control method because - * it must have arguments - */ - AslError (ASL_ERROR, ASL_MSG_RESERVED_METHOD, Op, - "with arguments"); - } - - /* Typechecking for _HID */ - - else if (!ACPI_STRCMP (METHOD_NAME__HID, ReservedMethods[i].Name)) - { - /* Examine the second operand to typecheck it */ - - Next = Op->Asl.Child->Asl.Next; - - if ((Next->Asl.ParseOpcode != PARSEOP_INTEGER) && - (Next->Asl.ParseOpcode != PARSEOP_STRING_LITERAL)) - { - /* _HID must be a string or an integer */ - - AslError (ASL_ERROR, ASL_MSG_RESERVED_OPERAND_TYPE, Next, - "String or Integer"); - } - - if (Next->Asl.ParseOpcode == PARSEOP_STRING_LITERAL) - { - /* - * _HID is a string, all characters must be alphanumeric. - * One of the things we want to catch here is the use of - * a leading asterisk in the string. - */ - for (i = 0; Next->Asl.Value.String[i]; i++) - { - if (!isalnum (Next->Asl.Value.String[i])) - { - AslError (ASL_ERROR, ASL_MSG_ALPHANUMERIC_STRING, - Next, Next->Asl.Value.String); - break; - } - } - } - } - } - break; - - - default: - break; - } - - return AE_OK; -} - - -/******************************************************************************* - * - * FUNCTION: AnLastStatementIsReturn - * - * PARAMETERS: Op - A method parse node - * - * RETURN: TRUE if last statement is an ASL RETURN. False otherwise - * - * DESCRIPTION: Walk down the list of top level statements within a method - * to find the last one. Check if that last statement is in - * fact a RETURN statement. - * - ******************************************************************************/ - -static BOOLEAN -AnLastStatementIsReturn ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Next; - - - /* - * Check if last statement is a return - */ - Next = ASL_GET_CHILD_NODE (Op); - while (Next) - { - if ((!Next->Asl.Next) && - (Next->Asl.ParseOpcode == PARSEOP_RETURN)) - { - return TRUE; - } - - Next = ASL_GET_PEER_NODE (Next); - } - - return FALSE; -} - - -/******************************************************************************* - * - * FUNCTION: AnMethodAnalysisWalkEnd - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Ascending callback for analysis walk. Complete method - * return analysis. - * - ******************************************************************************/ - -ACPI_STATUS -AnMethodAnalysisWalkEnd ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - ASL_ANALYSIS_WALK_INFO *WalkInfo = (ASL_ANALYSIS_WALK_INFO *) Context; - ASL_METHOD_INFO *MethodInfo = WalkInfo->MethodStack; - - - switch (Op->Asl.ParseOpcode) - { - case PARSEOP_METHOD: - case PARSEOP_RETURN: - if (!MethodInfo) - { - printf ("No method info for method! [%s]\n", Op->Asl.Namepath); - AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, Op, - "No method info for this method"); - CmCleanupAndExit (); - return (AE_AML_INTERNAL); - } - break; - - default: - break; - } - - switch (Op->Asl.ParseOpcode) - { - case PARSEOP_METHOD: - - WalkInfo->MethodStack = MethodInfo->Next; - - /* - * Check if there is no return statement at the end of the - * method AND we can actually get there -- i.e., the execution - * of the method can possibly terminate without a return statement. - */ - if ((!AnLastStatementIsReturn (Op)) && - (!(Op->Asl.CompileFlags & NODE_HAS_NO_EXIT))) - { - /* - * No return statement, and execution can possibly exit - * via this path. This is equivalent to Return () - */ - MethodInfo->NumReturnNoValue++; - } - - /* - * Check for case where some return statements have a return value - * and some do not. Exit without a return statement is a return with - * no value - */ - if (MethodInfo->NumReturnNoValue && - MethodInfo->NumReturnWithValue) - { - AslError (ASL_WARNING, ASL_MSG_RETURN_TYPES, Op, - Op->Asl.ExternalName); - } - - /* - * If there are any RETURN() statements with no value, or there is a - * control path that allows the method to exit without a return value, - * we mark the method as a method that does not return a value. This - * knowledge can be used to check method invocations that expect a - * returned value. - */ - if (MethodInfo->NumReturnNoValue) - { - if (MethodInfo->NumReturnWithValue) - { - Op->Asl.CompileFlags |= NODE_METHOD_SOME_NO_RETVAL; - } - else - { - Op->Asl.CompileFlags |= NODE_METHOD_NO_RETVAL; - } - } - - /* - * Check predefined method names for correct return behavior - * and correct number of arguments - */ - AnCheckForReservedMethod (Op, MethodInfo); - ACPI_FREE (MethodInfo); - break; - - - case PARSEOP_RETURN: - - /* - * The parent block does not "exit" and continue execution -- the - * method is terminated here with the Return() statement. - */ - Op->Asl.Parent->Asl.CompileFlags |= NODE_HAS_NO_EXIT; - - /* Used in the "typing" pass later */ - - Op->Asl.ParentMethod = MethodInfo->Op; - - /* - * If there is a peer node after the return statement, then this - * node is unreachable code -- i.e., it won't be executed because of - * the preceeding Return() statement. - */ - if (Op->Asl.Next) - { - AslError (ASL_WARNING, ASL_MSG_UNREACHABLE_CODE, Op->Asl.Next, NULL); - } - break; - - - case PARSEOP_IF: - - if ((Op->Asl.CompileFlags & NODE_HAS_NO_EXIT) && - (Op->Asl.Next) && - (Op->Asl.Next->Asl.ParseOpcode == PARSEOP_ELSE)) - { - /* - * This IF has a corresponding ELSE. The IF block has no exit, - * (it contains an unconditional Return) - * mark the ELSE block to remember this fact. - */ - Op->Asl.Next->Asl.CompileFlags |= NODE_IF_HAS_NO_EXIT; - } - break; - - - case PARSEOP_ELSE: - - if ((Op->Asl.CompileFlags & NODE_HAS_NO_EXIT) && - (Op->Asl.CompileFlags & NODE_IF_HAS_NO_EXIT)) - { - /* - * This ELSE block has no exit and the corresponding IF block - * has no exit either. Therefore, the parent node has no exit. - */ - Op->Asl.Parent->Asl.CompileFlags |= NODE_HAS_NO_EXIT; - } - break; - - - default: - - if ((Op->Asl.CompileFlags & NODE_HAS_NO_EXIT) && - (Op->Asl.Parent)) - { - /* If this node has no exit, then the parent has no exit either */ - - Op->Asl.Parent->Asl.CompileFlags |= NODE_HAS_NO_EXIT; - } - break; - } - - return AE_OK; -} - - -/******************************************************************************* - * - * FUNCTION: AnMethodTypingWalkBegin - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Descending callback for the typing walk. - * - ******************************************************************************/ - -ACPI_STATUS -AnMethodTypingWalkBegin ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - - return AE_OK; -} - - -/******************************************************************************* - * - * FUNCTION: AnMethodTypingWalkEnd - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Ascending callback for typing walk. Complete the method - * return analysis. Check methods for: - * 1) Initialized local variables - * 2) Valid arguments - * 3) Return types - * - ******************************************************************************/ - -ACPI_STATUS -AnMethodTypingWalkEnd ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - UINT32 ThisNodeBtype; - - - switch (Op->Asl.ParseOpcode) - { - case PARSEOP_METHOD: - - Op->Asl.CompileFlags |= NODE_METHOD_TYPED; - break; - - case PARSEOP_RETURN: - - if ((Op->Asl.Child) && - (Op->Asl.Child->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG)) - { - ThisNodeBtype = AnGetBtype (Op->Asl.Child); - - if ((Op->Asl.Child->Asl.ParseOpcode == PARSEOP_METHODCALL) && - (ThisNodeBtype == (ACPI_UINT32_MAX -1))) - { - /* - * The called method is untyped at this time (typically a - * forward reference). - * - * Check for a recursive method call first. - */ - if (Op->Asl.ParentMethod != Op->Asl.Child->Asl.Node->Op) - { - /* We must type the method here */ - - TrWalkParseTree (Op->Asl.Child->Asl.Node->Op, - ASL_WALK_VISIT_TWICE, AnMethodTypingWalkBegin, - AnMethodTypingWalkEnd, NULL); - - ThisNodeBtype = AnGetBtype (Op->Asl.Child); - } - } - - /* Returns a value, save the value type */ - - if (Op->Asl.ParentMethod) - { - Op->Asl.ParentMethod->Asl.AcpiBtype |= ThisNodeBtype; - } - } - break; - - default: - break; - } - - return AE_OK; -} - - -/******************************************************************************* - * - * FUNCTION: AnCheckMethodReturnValue - * - * PARAMETERS: Op - Parent - * OpInfo - Parent info - * ArgOp - Method invocation op - * RequiredBtypes - What caller requires - * ThisNodeBtype - What this node returns (if anything) - * - * RETURN: None - * - * DESCRIPTION: Check a method invocation for 1) A return value and if it does - * in fact return a value, 2) check the type of the return value. - * - ******************************************************************************/ - -static void -AnCheckMethodReturnValue ( - ACPI_PARSE_OBJECT *Op, - const ACPI_OPCODE_INFO *OpInfo, - ACPI_PARSE_OBJECT *ArgOp, - UINT32 RequiredBtypes, - UINT32 ThisNodeBtype) -{ - ACPI_PARSE_OBJECT *OwningOp; - ACPI_NAMESPACE_NODE *Node; - - - Node = ArgOp->Asl.Node; - - - /* Examine the parent op of this method */ - - OwningOp = Node->Op; - if (OwningOp->Asl.CompileFlags & NODE_METHOD_NO_RETVAL) - { - /* Method NEVER returns a value */ - - AslError (ASL_ERROR, ASL_MSG_NO_RETVAL, Op, Op->Asl.ExternalName); - } - else if (OwningOp->Asl.CompileFlags & NODE_METHOD_SOME_NO_RETVAL) - { - /* Method SOMETIMES returns a value, SOMETIMES not */ - - AslError (ASL_WARNING, ASL_MSG_SOME_NO_RETVAL, Op, Op->Asl.ExternalName); - } - else if (!(ThisNodeBtype & RequiredBtypes)) - { - /* Method returns a value, but the type is wrong */ - - AnFormatBtype (StringBuffer, ThisNodeBtype); - AnFormatBtype (StringBuffer2, RequiredBtypes); - - - /* - * The case where the method does not return any value at all - * was already handled in the namespace cross reference - * -- Only issue an error if the method in fact returns a value, - * but it is of the wrong type - */ - if (ThisNodeBtype != 0) - { - sprintf (MsgBuffer, - "Method returns [%s], %s operator requires [%s]", - StringBuffer, OpInfo->Name, StringBuffer2); - - AslError (ASL_ERROR, ASL_MSG_INVALID_TYPE, ArgOp, MsgBuffer); - } - } -} - - -/******************************************************************************* - * - * FUNCTION: AnOperandTypecheckWalkBegin - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Descending callback for the analysis walk. Check methods for: - * 1) Initialized local variables - * 2) Valid arguments - * 3) Return types - * - ******************************************************************************/ - -ACPI_STATUS -AnOperandTypecheckWalkBegin ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - - return AE_OK; -} - - -/******************************************************************************* - * - * FUNCTION: AnOperandTypecheckWalkEnd - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Ascending callback for analysis walk. Complete method - * return analysis. - * - ******************************************************************************/ - -ACPI_STATUS -AnOperandTypecheckWalkEnd ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - const ACPI_OPCODE_INFO *OpInfo; - UINT32 RuntimeArgTypes; - UINT32 RuntimeArgTypes2; - UINT32 RequiredBtypes; - UINT32 ThisNodeBtype; - UINT32 CommonBtypes; - UINT32 OpcodeClass; - ACPI_PARSE_OBJECT *ArgOp; - UINT32 ArgType; - - - switch (Op->Asl.AmlOpcode) - { - case AML_RAW_DATA_BYTE: - case AML_RAW_DATA_WORD: - case AML_RAW_DATA_DWORD: - case AML_RAW_DATA_QWORD: - case AML_RAW_DATA_BUFFER: - case AML_RAW_DATA_CHAIN: - case AML_PACKAGE_LENGTH: - case AML_UNASSIGNED_OPCODE: - case AML_DEFAULT_ARG_OP: - - /* Ignore the internal (compiler-only) AML opcodes */ - - return (AE_OK); - - default: - break; - } - - OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode); - if (!OpInfo) - { - return (AE_OK); - } - - ArgOp = Op->Asl.Child; - RuntimeArgTypes = OpInfo->RuntimeArgs; - OpcodeClass = OpInfo->Class; - - - /* - * Special case for control opcodes IF/RETURN/WHILE since they - * have no runtime arg list (at this time) - */ - switch (Op->Asl.AmlOpcode) - { - case AML_IF_OP: - case AML_WHILE_OP: - case AML_RETURN_OP: - - if (ArgOp->Asl.ParseOpcode == PARSEOP_METHODCALL) - { - /* Check for an internal method */ - - if (AnIsInternalMethod (ArgOp)) - { - return (AE_OK); - } - - /* The lone arg is a method call, check it */ - - RequiredBtypes = AnMapArgTypeToBtype (ARGI_INTEGER); - if (Op->Asl.AmlOpcode == AML_RETURN_OP) - { - RequiredBtypes = 0xFFFFFFFF; - } - - ThisNodeBtype = AnGetBtype (ArgOp); - if (ThisNodeBtype == ACPI_UINT32_MAX) - { - return (AE_OK); - } - AnCheckMethodReturnValue (Op, OpInfo, ArgOp, - RequiredBtypes, ThisNodeBtype); - } - return (AE_OK); - - default: - break; - } - - /* Ignore the non-executable opcodes */ - - if (RuntimeArgTypes == ARGI_INVALID_OPCODE) - { - return (AE_OK); - } - - switch (OpcodeClass) - { - case AML_CLASS_EXECUTE: - case AML_CLASS_CREATE: - case AML_CLASS_CONTROL: - case AML_CLASS_RETURN_VALUE: - - /* TBD: Change class or fix typechecking for these */ - - if ((Op->Asl.AmlOpcode == AML_BUFFER_OP) || - (Op->Asl.AmlOpcode == AML_PACKAGE_OP) || - (Op->Asl.AmlOpcode == AML_VAR_PACKAGE_OP)) - { - break; - } - - /* Reverse the runtime argument list */ - - RuntimeArgTypes2 = 0; - while ((ArgType = GET_CURRENT_ARG_TYPE (RuntimeArgTypes))) - { - RuntimeArgTypes2 <<= ARG_TYPE_WIDTH; - RuntimeArgTypes2 |= ArgType; - INCREMENT_ARG_LIST (RuntimeArgTypes); - } - - while ((ArgType = GET_CURRENT_ARG_TYPE (RuntimeArgTypes2))) - { - RequiredBtypes = AnMapArgTypeToBtype (ArgType); - - ThisNodeBtype = AnGetBtype (ArgOp); - if (ThisNodeBtype == ACPI_UINT32_MAX) - { - goto NextArgument; - } - - /* Examine the arg based on the required type of the arg */ - - switch (ArgType) - { - case ARGI_TARGETREF: - - if (ArgOp->Asl.ParseOpcode == PARSEOP_ZERO) - { - /* ZERO is the placeholder for "don't store result" */ - - ThisNodeBtype = RequiredBtypes; - break; - } - - if (ArgOp->Asl.ParseOpcode == PARSEOP_INTEGER) - { - /* - * This is the case where an original reference to a resource - * descriptor field has been replaced by an (Integer) offset. - * These named fields are supported at compile-time only; - * the names are not passed to the interpreter (via the AML). - */ - if ((ArgOp->Asl.Node->Type == ACPI_TYPE_LOCAL_RESOURCE_FIELD) || - (ArgOp->Asl.Node->Type == ACPI_TYPE_LOCAL_RESOURCE)) - { - AslError (ASL_ERROR, ASL_MSG_RESOURCE_FIELD, ArgOp, NULL); - } - else - { - AslError (ASL_ERROR, ASL_MSG_INVALID_TYPE, ArgOp, NULL); - } - break; - } - - if ((ArgOp->Asl.ParseOpcode == PARSEOP_METHODCALL) || - (ArgOp->Asl.ParseOpcode == PARSEOP_DEREFOF)) - { - break; - } - - ThisNodeBtype = RequiredBtypes; - break; - - - case ARGI_REFERENCE: /* References */ - case ARGI_INTEGER_REF: - case ARGI_OBJECT_REF: - case ARGI_DEVICE_REF: - - switch (ArgOp->Asl.ParseOpcode) - { - case PARSEOP_LOCAL0: - case PARSEOP_LOCAL1: - case PARSEOP_LOCAL2: - case PARSEOP_LOCAL3: - case PARSEOP_LOCAL4: - case PARSEOP_LOCAL5: - case PARSEOP_LOCAL6: - case PARSEOP_LOCAL7: - - /* TBD: implement analysis of current value (type) of the local */ - /* For now, just treat any local as a typematch */ - - /*ThisNodeBtype = RequiredBtypes;*/ - break; - - case PARSEOP_ARG0: - case PARSEOP_ARG1: - case PARSEOP_ARG2: - case PARSEOP_ARG3: - case PARSEOP_ARG4: - case PARSEOP_ARG5: - case PARSEOP_ARG6: - - /* Hard to analyze argument types, sow we won't */ - /* For now, just treat any arg as a typematch */ - - /* ThisNodeBtype = RequiredBtypes; */ - break; - - case PARSEOP_DEBUG: - break; - - case PARSEOP_REFOF: - case PARSEOP_INDEX: - default: - break; - - } - break; - - case ARGI_INTEGER: - default: - break; - } - - - CommonBtypes = ThisNodeBtype & RequiredBtypes; - - if (ArgOp->Asl.ParseOpcode == PARSEOP_METHODCALL) - { - if (AnIsInternalMethod (ArgOp)) - { - return (AE_OK); - } - - /* Check a method call for a valid return value */ - - AnCheckMethodReturnValue (Op, OpInfo, ArgOp, - RequiredBtypes, ThisNodeBtype); - } - - /* - * Now check if the actual type(s) match at least one - * bit to the required type - */ - else if (!CommonBtypes) - { - /* No match -- this is a type mismatch error */ - - AnFormatBtype (StringBuffer, ThisNodeBtype); - AnFormatBtype (StringBuffer2, RequiredBtypes); - - sprintf (MsgBuffer, "[%s] found, %s operator requires [%s]", - StringBuffer, OpInfo->Name, StringBuffer2); - - AslError (ASL_ERROR, ASL_MSG_INVALID_TYPE, ArgOp, MsgBuffer); - } - - NextArgument: - ArgOp = ArgOp->Asl.Next; - INCREMENT_ARG_LIST (RuntimeArgTypes2); - } - break; - - default: - break; - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AnIsResultUsed - * - * PARAMETERS: Op - Parent op for the operator - * - * RETURN: TRUE if result from this operation is actually consumed - * - * DESCRIPTION: Determine if the function result value from an operator is - * used. - * - ******************************************************************************/ - -BOOLEAN -AnIsResultUsed ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Parent; - - - switch (Op->Asl.ParseOpcode) - { - case PARSEOP_INCREMENT: - case PARSEOP_DECREMENT: - - /* These are standalone operators, no return value */ - - return (TRUE); - - default: - break; - } - - /* Examine parent to determine if the return value is used */ - - Parent = Op->Asl.Parent; - switch (Parent->Asl.ParseOpcode) - { - /* If/While - check if the operator is the predicate */ - - case PARSEOP_IF: - case PARSEOP_WHILE: - - /* First child is the predicate */ - - if (Parent->Asl.Child == Op) - { - return (TRUE); - } - return (FALSE); - - /* Not used if one of these is the parent */ - - case PARSEOP_METHOD: - case PARSEOP_DEFINITIONBLOCK: - case PARSEOP_ELSE: - - return (FALSE); - - default: - /* Any other type of parent means that the result is used */ - - return (TRUE); - } -} - - -/******************************************************************************* - * - * FUNCTION: AnOtherSemanticAnalysisWalkBegin - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Descending callback for the analysis walk. Checks for - * miscellaneous issues in the code. - * - ******************************************************************************/ - -ACPI_STATUS -AnOtherSemanticAnalysisWalkBegin ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - ACPI_PARSE_OBJECT *ArgNode; - ACPI_PARSE_OBJECT *PrevArgNode = NULL; - const ACPI_OPCODE_INFO *OpInfo; - - - OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode); - - /* - * Determine if an execution class operator actually does something by - * checking if it has a target and/or the function return value is used. - * (Target is optional, so a standalone statement can actually do nothing.) - */ - if ((OpInfo->Class == AML_CLASS_EXECUTE) && - (OpInfo->Flags & AML_HAS_RETVAL) && - (!AnIsResultUsed (Op))) - { - if (OpInfo->Flags & AML_HAS_TARGET) - { - /* - * Find the target node, it is always the last child. If the traget - * is not specified in the ASL, a default node of type Zero was - * created by the parser. - */ - ArgNode = Op->Asl.Child; - while (ArgNode->Asl.Next) - { - PrevArgNode = ArgNode; - ArgNode = ArgNode->Asl.Next; - } - - /* Divide() is the only weird case, it has two targets */ - - if (Op->Asl.AmlOpcode == AML_DIVIDE_OP) - { - if ((ArgNode->Asl.ParseOpcode == PARSEOP_ZERO) && - (PrevArgNode->Asl.ParseOpcode == PARSEOP_ZERO)) - { - AslError (ASL_WARNING, ASL_MSG_RESULT_NOT_USED, Op, Op->Asl.ExternalName); - } - } - else if (ArgNode->Asl.ParseOpcode == PARSEOP_ZERO) - { - AslError (ASL_WARNING, ASL_MSG_RESULT_NOT_USED, Op, Op->Asl.ExternalName); - } - } - else - { - /* - * Has no target and the result is not used. Only a couple opcodes - * can have this combination. - */ - switch (Op->Asl.ParseOpcode) - { - case PARSEOP_ACQUIRE: - case PARSEOP_WAIT: - break; - - default: - AslError (ASL_WARNING, ASL_MSG_RESULT_NOT_USED, Op, Op->Asl.ExternalName); - break; - } - } - } - - - /* - * Semantic checks for individual ASL operators - */ - switch (Op->Asl.ParseOpcode) - { - case PARSEOP_ACQUIRE: - case PARSEOP_WAIT: - /* - * Emit a warning if the timeout parameter for these operators is not - * ACPI_WAIT_FOREVER, and the result value from the operator is not - * checked, meaning that a timeout could happen, but the code - * would not know about it. - */ - - /* First child is the namepath, 2nd child is timeout */ - - ArgNode = Op->Asl.Child; - ArgNode = ArgNode->Asl.Next; - - /* - * Check for the WAIT_FOREVER case - defined by the ACPI spec to be - * 0xFFFF or greater - */ - if (((ArgNode->Asl.ParseOpcode == PARSEOP_WORDCONST) || - (ArgNode->Asl.ParseOpcode == PARSEOP_INTEGER)) && - (ArgNode->Asl.Value.Integer >= (ACPI_INTEGER) ACPI_WAIT_FOREVER)) - { - break; - } - - /* - * The operation could timeout. If the return value is not used - * (indicates timeout occurred), issue a warning - */ - if (!AnIsResultUsed (Op)) - { - AslError (ASL_WARNING, ASL_MSG_TIMEOUT, ArgNode, Op->Asl.ExternalName); - } - break; - - case PARSEOP_CREATEFIELD: - /* - * Check for a zero Length (NumBits) operand. NumBits is the 3rd operand - */ - ArgNode = Op->Asl.Child; - ArgNode = ArgNode->Asl.Next; - ArgNode = ArgNode->Asl.Next; - - if ((ArgNode->Asl.ParseOpcode == PARSEOP_ZERO) || - ((ArgNode->Asl.ParseOpcode == PARSEOP_INTEGER) && - (ArgNode->Asl.Value.Integer == 0))) - { - AslError (ASL_ERROR, ASL_MSG_NON_ZERO, ArgNode, NULL); - } - break; - - default: - break; - } - - return AE_OK; -} - - -/******************************************************************************* - * - * FUNCTION: AnOtherSemanticAnalysisWalkEnd - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Ascending callback for analysis walk. Complete method - * return analysis. - * - ******************************************************************************/ - -ACPI_STATUS -AnOtherSemanticAnalysisWalkEnd ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - - return AE_OK; - -} - - -#ifdef ACPI_OBSOLETE_FUNCTIONS -/******************************************************************************* - * - * FUNCTION: AnMapBtypeToEtype - * - * PARAMETERS: Btype - Bitfield of ACPI types - * - * RETURN: The Etype corresponding the the Btype - * - * DESCRIPTION: Convert a bitfield type to an encoded type - * - ******************************************************************************/ - -UINT32 -AnMapBtypeToEtype ( - UINT32 Btype) -{ - UINT32 i; - UINT32 Etype; - - - if (Btype == 0) - { - return 0; - } - - Etype = 1; - for (i = 1; i < Btype; i *= 2) - { - Etype++; - } - - return (Etype); -} -#endif - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/aslcodegen.c b/sys/contrib/dev/acpica-unix-20061109/compiler/aslcodegen.c deleted file mode 100644 index e537585ce3..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/aslcodegen.c +++ /dev/null @@ -1,661 +0,0 @@ - -/****************************************************************************** - * - * Module Name: aslcodegen - AML code generation - * $Revision: 1.61 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "aslcompiler.h" -#include "aslcompiler.y.h" -#include "amlcode.h" - -#define _COMPONENT ACPI_COMPILER - ACPI_MODULE_NAME ("aslcodegen") - -/* Local prototypes */ - -static ACPI_STATUS -CgAmlWriteWalk ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -static void -CgLocalWriteAmlData ( - ACPI_PARSE_OBJECT *Op, - void *Buffer, - UINT32 Length); - -static void -CgWriteAmlOpcode ( - ACPI_PARSE_OBJECT *Op); - -static void -CgWriteTableHeader ( - ACPI_PARSE_OBJECT *Op); - -static void -CgCloseTable ( - void); - -static void -CgWriteNode ( - ACPI_PARSE_OBJECT *Op); - - -/******************************************************************************* - * - * FUNCTION: CgGenerateAmlOutput - * - * PARAMETERS: None. - * - * RETURN: None - * - * DESCRIPTION: Generate AML code. Currently generates the listing file - * simultaneously. - * - ******************************************************************************/ - -void -CgGenerateAmlOutput ( - void) -{ - - DbgPrint (ASL_DEBUG_OUTPUT, "\nWriting AML\n\n"); - - /* Generate the AML output file */ - - FlSeekFile (ASL_FILE_SOURCE_OUTPUT, 0); - Gbl_SourceLine = 0; - Gbl_NextError = Gbl_ErrorLog; - - TrWalkParseTree (RootNode, ASL_WALK_VISIT_DOWNWARD, - CgAmlWriteWalk, NULL, NULL); - CgCloseTable (); -} - - -/******************************************************************************* - * - * FUNCTION: CgAmlWriteWalk - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Parse tree walk to generate the AML code. - * - ******************************************************************************/ - -static ACPI_STATUS -CgAmlWriteWalk ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - - /* - * Print header at level 0. Alignment assumes 32-bit pointers - */ - if (!Level) - { - DbgPrint (ASL_TREE_OUTPUT, - "Final parse tree used for AML output:\n"); - DbgPrint (ASL_TREE_OUTPUT, - "%*s Value P_Op A_Op OpLen PByts Len SubLen PSubLen OpPtr Child Parent Flags AcTyp Final Col L\n", - 76, " "); - } - - /* Debug output */ - - DbgPrint (ASL_TREE_OUTPUT, - "%5.5d [%2d]", Op->Asl.LogicalLineNumber, Level); - UtPrintFormattedName (Op->Asl.ParseOpcode, Level); - - if (Op->Asl.ParseOpcode == PARSEOP_NAMESEG || - Op->Asl.ParseOpcode == PARSEOP_NAMESTRING || - Op->Asl.ParseOpcode == PARSEOP_METHODCALL) - { - DbgPrint (ASL_TREE_OUTPUT, - "%10.32s ", Op->Asl.ExternalName); - } - else - { - DbgPrint (ASL_TREE_OUTPUT, " "); - } - - DbgPrint (ASL_TREE_OUTPUT, - "%08X %04X %04X %01X %04X %04X %04X %04X %08X %08X %08X %08X %08X %04X %02d %02d\n", - /* 1 */ (UINT32) Op->Asl.Value.Integer, - /* 2 */ Op->Asl.ParseOpcode, - /* 3 */ Op->Asl.AmlOpcode, - /* 4 */ Op->Asl.AmlOpcodeLength, - /* 5 */ Op->Asl.AmlPkgLenBytes, - /* 6 */ Op->Asl.AmlLength, - /* 7 */ Op->Asl.AmlSubtreeLength, - /* 8 */ Op->Asl.Parent ? Op->Asl.Parent->Asl.AmlSubtreeLength : 0, - /* 9 */ Op, - /* 10 */ Op->Asl.Child, - /* 11 */ Op->Asl.Parent, - /* 12 */ Op->Asl.CompileFlags, - /* 13 */ Op->Asl.AcpiBtype, - /* 14 */ Op->Asl.FinalAmlLength, - /* 15 */ Op->Asl.Column, - /* 16 */ Op->Asl.LineNumber); - - /* Generate the AML for this node */ - - CgWriteNode (Op); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: CgLocalWriteAmlData - * - * PARAMETERS: Op - Current parse op - * Buffer - Buffer to write - * Length - Size of data in buffer - * - * RETURN: None - * - * DESCRIPTION: Write a buffer of AML data to the AML output file. - * - ******************************************************************************/ - -static void -CgLocalWriteAmlData ( - ACPI_PARSE_OBJECT *Op, - void *Buffer, - UINT32 Length) -{ - - /* Write the raw data to the AML file */ - - FlWriteFile (ASL_FILE_AML_OUTPUT, Buffer, Length); - - /* Update the final AML length for this node (used for listings) */ - - if (Op) - { - Op->Asl.FinalAmlLength += Length; - } -} - - -/******************************************************************************* - * - * FUNCTION: CgWriteAmlOpcode - * - * PARAMETERS: Op - Parse node with an AML opcode - * - * RETURN: None. - * - * DESCRIPTION: Write the AML opcode corresponding to a parse node. - * - ******************************************************************************/ - -static void -CgWriteAmlOpcode ( - ACPI_PARSE_OBJECT *Op) -{ - UINT8 PkgLenFirstByte; - UINT32 i; - union { - UINT16 Opcode; - UINT8 OpcodeBytes[2]; - } Aml; - union { - UINT32 Len; - UINT8 LenBytes[4]; - } PkgLen; - - - /* We expect some DEFAULT_ARGs, just ignore them */ - - if (Op->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) - { - return; - } - - switch (Op->Asl.AmlOpcode) - { - case AML_UNASSIGNED_OPCODE: - - /* These opcodes should not get here */ - - printf ("Found a node with an unassigned AML opcode\n"); - fprintf (stderr, "Found a node with an unassigned AML opcode\n"); - return; - - case AML_INT_RESERVEDFIELD_OP: - - /* Special opcodes for within a field definition */ - - Aml.Opcode = 0x00; - break; - - case AML_INT_ACCESSFIELD_OP: - - Aml.Opcode = 0x01; - break; - - default: - Aml.Opcode = Op->Asl.AmlOpcode; - break; - } - - - switch (Aml.Opcode) - { - case AML_PACKAGE_LENGTH: - - /* Value is the length to be encoded (Used in field definitions) */ - - PkgLen.Len = (UINT32) Op->Asl.Value.Integer; - break; - - default: - - /* Check for two-byte opcode */ - - if (Aml.Opcode > 0x00FF) - { - /* Write the high byte first */ - - CgLocalWriteAmlData (Op, &Aml.OpcodeBytes[1], 1); - } - - CgLocalWriteAmlData (Op, &Aml.OpcodeBytes[0], 1); - - /* Subtreelength doesn't include length of package length bytes */ - - PkgLen.Len = Op->Asl.AmlSubtreeLength + Op->Asl.AmlPkgLenBytes; - break; - } - - /* Does this opcode have an associated "PackageLength" field? */ - - if (Op->Asl.CompileFlags & NODE_AML_PACKAGE) - { - if (Op->Asl.AmlPkgLenBytes == 1) - { - /* Simplest case -- no bytes to follow, just write the count */ - - CgLocalWriteAmlData (Op, &PkgLen.LenBytes[0], 1); - } - else if (Op->Asl.AmlPkgLenBytes != 0) - { - /* - * Encode the "bytes to follow" in the first byte, top two bits. - * The low-order nybble of the length is in the bottom 4 bits - */ - PkgLenFirstByte = (UINT8) - (((UINT32) (Op->Asl.AmlPkgLenBytes - 1) << 6) | - (PkgLen.LenBytes[0] & 0x0F)); - - CgLocalWriteAmlData (Op, &PkgLenFirstByte, 1); - - /* - * Shift the length over by the 4 bits we just stuffed - * in the first byte - */ - PkgLen.Len >>= 4; - - /* Now we can write the remaining bytes - either 1, 2, or 3 bytes */ - - for (i = 0; i < (UINT32) (Op->Asl.AmlPkgLenBytes - 1); i++) - { - CgLocalWriteAmlData (Op, &PkgLen.LenBytes[i], 1); - } - } - } - - switch (Aml.Opcode) - { - case AML_BYTE_OP: - - CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, 1); - break; - - case AML_WORD_OP: - - CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, 2); - break; - - case AML_DWORD_OP: - - CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, 4); - break; - - case AML_QWORD_OP: - - CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, 8); - break; - - case AML_STRING_OP: - - CgLocalWriteAmlData (Op, Op->Asl.Value.String, Op->Asl.AmlLength); - break; - - default: - /* All data opcodes must appear above */ - break; - } -} - - -/******************************************************************************* - * - * FUNCTION: CgWriteTableHeader - * - * PARAMETERS: Op - The DEFINITIONBLOCK node - * - * RETURN: None - * - * DESCRIPTION: Write a table header corresponding to the DEFINITIONBLOCK - * - ******************************************************************************/ - -static void -CgWriteTableHeader ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Child; - - - /* AML filename */ - - Child = Op->Asl.Child; - - /* Signature */ - - Child = Child->Asl.Next; - strncpy (TableHeader.Signature, Child->Asl.Value.String, 4); - - /* Revision */ - - Child = Child->Asl.Next; - TableHeader.Revision = (UINT8) Child->Asl.Value.Integer; - - /* Command-line Revision override */ - - if (Gbl_RevisionOverride) - { - TableHeader.Revision = Gbl_RevisionOverride; - } - - /* OEMID */ - - Child = Child->Asl.Next; - strncpy (TableHeader.OemId, Child->Asl.Value.String, 6); - - /* OEM TableID */ - - Child = Child->Asl.Next; - strncpy (TableHeader.OemTableId, Child->Asl.Value.String, 8); - - /* OEM Revision */ - - Child = Child->Asl.Next; - TableHeader.OemRevision = (UINT32) Child->Asl.Value.Integer; - - /* Compiler ID */ - - strncpy (TableHeader.AslCompilerId, CompilerCreatorId, 4); - - /* Compiler version */ - - TableHeader.AslCompilerRevision = CompilerCreatorRevision; - - /* Table length. Checksum zero for now, will rewrite later */ - - TableHeader.Length = Gbl_TableLength; - TableHeader.Checksum = 0; - - CgLocalWriteAmlData (Op, &TableHeader, sizeof (ACPI_TABLE_HEADER)); -} - - -/******************************************************************************* - * - * FUNCTION: CgCloseTable - * - * PARAMETERS: None. - * - * RETURN: None. - * - * DESCRIPTION: Complete the ACPI table by calculating the checksum and - * re-writing the header. - * - ******************************************************************************/ - -static void -CgCloseTable ( - void) -{ - signed char Sum; - UINT8 FileByte; - - - FlSeekFile (ASL_FILE_AML_OUTPUT, 0); - Sum = 0; - - /* Calculate the checksum over the entire file */ - - while (FlReadFile (ASL_FILE_AML_OUTPUT, &FileByte, 1) == AE_OK) - { - Sum = (signed char) (Sum + FileByte); - } - - /* Re-write the table header with the checksum */ - - TableHeader.Checksum = (UINT8) (0 - Sum); - - FlSeekFile (ASL_FILE_AML_OUTPUT, 0); - CgLocalWriteAmlData (NULL, &TableHeader, sizeof (ACPI_TABLE_HEADER)); -} - - -/******************************************************************************* - * - * FUNCTION: CgWriteNode - * - * PARAMETERS: Op - Parse node to write. - * - * RETURN: None. - * - * DESCRIPTION: Write the AML that corresponds to a parse node. - * - ******************************************************************************/ - -static void -CgWriteNode ( - ACPI_PARSE_OBJECT *Op) -{ - ASL_RESOURCE_NODE *Rnode; - - - /* Always check for DEFAULT_ARG and other "Noop" nodes */ - /* TBD: this may not be the best place for this check */ - - if ((Op->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) || - (Op->Asl.ParseOpcode == PARSEOP_EXTERNAL) || - (Op->Asl.ParseOpcode == PARSEOP_INCLUDE) || - (Op->Asl.ParseOpcode == PARSEOP_INCLUDE_END)) - { - return; - } - - Op->Asl.FinalAmlLength = 0; - - switch (Op->Asl.AmlOpcode) - { - case AML_RAW_DATA_BYTE: - case AML_RAW_DATA_WORD: - case AML_RAW_DATA_DWORD: - case AML_RAW_DATA_QWORD: - - CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, Op->Asl.AmlLength); - return; - - - case AML_RAW_DATA_BUFFER: - - CgLocalWriteAmlData (Op, Op->Asl.Value.Buffer, Op->Asl.AmlLength); - return; - - - case AML_RAW_DATA_CHAIN: - - Rnode = ACPI_CAST_PTR (ASL_RESOURCE_NODE, Op->Asl.Value.Buffer); - while (Rnode) - { - CgLocalWriteAmlData (Op, Rnode->Buffer, Rnode->BufferLength); - Rnode = Rnode->Next; - } - return; - - default: - /* Internal data opcodes must all appear above */ - break; - } - - switch (Op->Asl.ParseOpcode) - { - case PARSEOP_DEFAULT_ARG: - - break; - - case PARSEOP_DEFINITIONBLOCK: - - CgWriteTableHeader (Op); - break; - - case PARSEOP_NAMESEG: - case PARSEOP_NAMESTRING: - case PARSEOP_METHODCALL: - - CgLocalWriteAmlData (Op, Op->Asl.Value.String, Op->Asl.AmlLength); - break; - - default: - - CgWriteAmlOpcode (Op); - break; - } -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/aslcompile.c b/sys/contrib/dev/acpica-unix-20061109/compiler/aslcompile.c deleted file mode 100644 index 7a1583c893..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/aslcompile.c +++ /dev/null @@ -1,929 +0,0 @@ - -/****************************************************************************** - * - * Module Name: aslcompile - top level compile module - * $Revision: 1.96 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include -#include -#include "aslcompiler.h" - -#define _COMPONENT ACPI_COMPILER - ACPI_MODULE_NAME ("aslcompile") - -/* Local prototypes */ - -static void -CmFlushSourceCode ( - void); - -static ACPI_STATUS -FlCheckForAscii ( - ASL_FILE_INFO *FileInfo); - - -/******************************************************************************* - * - * FUNCTION: AslCompilerSignon - * - * PARAMETERS: FileId - ID of the output file - * - * RETURN: None - * - * DESCRIPTION: Display compiler signon - * - ******************************************************************************/ - -void -AslCompilerSignon ( - UINT32 FileId) -{ - char *Prefix = ""; - - - /* Set line prefix depending on the destination file type */ - - switch (FileId) - { - case ASL_FILE_ASM_SOURCE_OUTPUT: - case ASL_FILE_ASM_INCLUDE_OUTPUT: - - Prefix = "; "; - break; - - case ASL_FILE_HEX_OUTPUT: - - if (Gbl_HexOutputFlag == HEX_OUTPUT_ASM) - { - Prefix = "; "; - } - else if (Gbl_HexOutputFlag == HEX_OUTPUT_C) - { - FlPrintFile (ASL_FILE_HEX_OUTPUT, "/*\n"); - Prefix = " * "; - } - break; - - case ASL_FILE_C_SOURCE_OUTPUT: - case ASL_FILE_C_INCLUDE_OUTPUT: - - Prefix = " * "; - break; - - default: - /* No other output types supported */ - break; - } - - /* - * Compiler signon with copyright - */ - FlPrintFile (FileId, - "%s\n%s%s\n%s", - Prefix, - Prefix, IntelAcpiCA, - Prefix); - - /* Running compiler or disassembler? */ - - if (Gbl_DisasmFlag) - { - FlPrintFile (FileId, - "%s", DisassemblerId); - } - else - { - FlPrintFile (FileId, - "%s", CompilerId); - } - - /* Version, build date, copyright, compliance */ - - FlPrintFile (FileId, - " version %X [%s]\n%s%s\n%s%s\n%s\n", - (UINT32) ACPI_CA_VERSION, __DATE__, - Prefix, CompilerCopyright, - Prefix, CompilerCompliance, - Prefix); -} - - -/******************************************************************************* - * - * FUNCTION: AslCompilerFileHeader - * - * PARAMETERS: FileId - ID of the output file - * - * RETURN: None - * - * DESCRIPTION: Header used at the beginning of output files - * - ******************************************************************************/ - -void -AslCompilerFileHeader ( - UINT32 FileId) -{ - struct tm *NewTime; - time_t Aclock; - char *Prefix = ""; - - - /* Set line prefix depending on the destination file type */ - - switch (FileId) - { - case ASL_FILE_ASM_SOURCE_OUTPUT: - case ASL_FILE_ASM_INCLUDE_OUTPUT: - - Prefix = "; "; - break; - - case ASL_FILE_HEX_OUTPUT: - - if (Gbl_HexOutputFlag == HEX_OUTPUT_ASM) - { - Prefix = "; "; - } - else if (Gbl_HexOutputFlag == HEX_OUTPUT_C) - { - Prefix = " * "; - } - break; - - case ASL_FILE_C_SOURCE_OUTPUT: - case ASL_FILE_C_INCLUDE_OUTPUT: - - Prefix = " * "; - break; - - default: - /* No other output types supported */ - break; - } - - /* Compilation header with timestamp */ - - (void) time (&Aclock); - NewTime = localtime (&Aclock); - - FlPrintFile (FileId, - "%sCompilation of \"%s\" - %s%s\n", - Prefix, Gbl_Files[ASL_FILE_INPUT].Filename, asctime (NewTime), - Prefix); - - switch (FileId) - { - case ASL_FILE_C_SOURCE_OUTPUT: - case ASL_FILE_C_INCLUDE_OUTPUT: - FlPrintFile (FileId, " */\n"); - break; - - default: - /* Nothing to do for other output types */ - break; - } -} - - -/******************************************************************************* - * - * FUNCTION: CmFlushSourceCode - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Read in any remaining source code after the parse tree - * has been constructed. - * - ******************************************************************************/ - -static void -CmFlushSourceCode ( - void) -{ - char Buffer; - - - while (FlReadFile (ASL_FILE_INPUT, &Buffer, 1) != AE_ERROR) - { - InsertLineBuffer ((int) Buffer); - } - - ResetCurrentLineBuffer (); -} - - -/******************************************************************************* - * - * FUNCTION: FlConsume* - * - * PARAMETERS: FileInfo - Points to an open input file - * - * RETURN: Number of lines consumed - * - * DESCRIPTION: Step over both types of comment during check for ascii chars - * - ******************************************************************************/ - -void -FlConsumeAnsiComment ( - ASL_FILE_INFO *FileInfo, - ASL_FILE_STATUS *Status) -{ - UINT8 Byte; - BOOLEAN ClosingComment = FALSE; - - - while (fread (&Byte, 1, 1, FileInfo->Handle)) - { - /* Scan until comment close is found */ - - if (ClosingComment) - { - if (Byte == '/') - { - return; - } - - if (Byte != '*') - { - /* Reset */ - - ClosingComment = FALSE; - } - } - else if (Byte == '*') - { - ClosingComment = TRUE; - } - - /* Maintain line count */ - - if (Byte == 0x0A) - { - Status->Line++; - } - - Status->Offset++; - } -} - - -void -FlConsumeNewComment ( - ASL_FILE_INFO *FileInfo, - ASL_FILE_STATUS *Status) -{ - UINT8 Byte; - - - while (fread (&Byte, 1, 1, FileInfo->Handle)) - { - Status->Offset++; - - /* Comment ends at newline */ - - if (Byte == 0x0A) - { - Status->Line++; - return; - } - } -} - - -/******************************************************************************* - * - * FUNCTION: FlCheckForAscii - * - * PARAMETERS: FileInfo - Points to an open input file - * - * RETURN: Status - * - * DESCRIPTION: Verify that the input file is entirely ASCII. Ignores characters - * within comments. Note: does not handle nested comments and does - * not handle comment delimiters within string literals. However, - * on the rare chance this happens and an invalid character is - * missed, the parser will catch the error by failing in some - * spectactular manner. - * - ******************************************************************************/ - -static ACPI_STATUS -FlCheckForAscii ( - ASL_FILE_INFO *FileInfo) -{ - UINT8 Byte; - ACPI_SIZE BadBytes = 0; - BOOLEAN OpeningComment = FALSE; - ASL_FILE_STATUS Status; - - - Status.Line = 1; - Status.Offset = 0; - - /* Read the entire file */ - - while (fread (&Byte, 1, 1, FileInfo->Handle)) - { - /* Ignore comment fields (allow non-ascii within) */ - - if (OpeningComment) - { - /* Check for second comment open delimiter */ - - if (Byte == '*') - { - FlConsumeAnsiComment (FileInfo, &Status); - } - - if (Byte == '/') - { - FlConsumeNewComment (FileInfo, &Status); - } - - /* Reset */ - - OpeningComment = FALSE; - } - else if (Byte == '/') - { - OpeningComment = TRUE; - } - - /* Check for an ASCII character */ - - if (!isascii (Byte)) - { - if (BadBytes < 10) - { - AcpiOsPrintf ( - "Non-ASCII character [0x%2.2X] found in line %u, file offset 0x%.2X\n", - Byte, Status.Line, Status.Offset); - } - - BadBytes++; - } - - /* Update line counter */ - - else if (Byte == 0x0A) - { - Status.Line++; - } - - Status.Offset++; - } - - /* Seek back to the beginning of the source file */ - - fseek (FileInfo->Handle, 0, SEEK_SET); - - /* Were there any non-ASCII characters in the file? */ - - if (BadBytes) - { - AcpiOsPrintf ( - "%u non-ASCII characters found in input source text, could be a binary file\n", - BadBytes); - AslError (ASL_ERROR, ASL_MSG_NON_ASCII, NULL, FileInfo->Filename); - return (AE_BAD_CHARACTER); - } - - /* File is OK */ - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: CmDoCompile - * - * PARAMETERS: None - * - * RETURN: Status (0 = OK) - * - * DESCRIPTION: This procedure performs the entire compile - * - ******************************************************************************/ - -int -CmDoCompile ( - void) -{ - ACPI_STATUS Status; - UINT8 FullCompile; - UINT8 Event; - - - FullCompile = UtBeginEvent ("*** Total Compile time ***"); - Event = UtBeginEvent ("Open input and output files"); - - /* Open the required input and output files */ - - Status = FlOpenInputFile (Gbl_Files[ASL_FILE_INPUT].Filename); - if (ACPI_FAILURE (Status)) - { - AePrintErrorLog (ASL_FILE_STDERR); - return -1; - } - - /* Check for 100% ASCII source file (comments are ignored) */ - - Status = FlCheckForAscii (&Gbl_Files[ASL_FILE_INPUT]); - if (ACPI_FAILURE (Status)) - { - AePrintErrorLog (ASL_FILE_STDERR); - return -1; - } - - Status = FlOpenMiscOutputFiles (Gbl_OutputFilenamePrefix); - if (ACPI_FAILURE (Status)) - { - AePrintErrorLog (ASL_FILE_STDERR); - return -1; - } - UtEndEvent (Event); - - /* Build the parse tree */ - - Event = UtBeginEvent ("Parse source code and build parse tree"); - AslCompilerparse(); - UtEndEvent (Event); - - /* Flush out any remaining source after parse tree is complete */ - - Event = UtBeginEvent ("Flush source input"); - CmFlushSourceCode (); - - /* Did the parse tree get successfully constructed? */ - - if (!RootNode) - { - CmCleanupAndExit (); - return -1; - } - - /* Optional parse tree dump, compiler debug output only */ - - LsDumpParseTree (); - - OpcGetIntegerWidth (RootNode); - UtEndEvent (Event); - - /* Pre-process parse tree for any operator transforms */ - - Event = UtBeginEvent ("Parse tree transforms"); - DbgPrint (ASL_DEBUG_OUTPUT, "\nParse tree transforms\n\n"); - TrWalkParseTree (RootNode, ASL_WALK_VISIT_DOWNWARD, - TrAmlTransformWalk, NULL, NULL); - UtEndEvent (Event); - - /* Generate AML opcodes corresponding to the parse tokens */ - - Event = UtBeginEvent ("Generate AML opcodes"); - DbgPrint (ASL_DEBUG_OUTPUT, "\nGenerating AML opcodes\n\n"); - TrWalkParseTree (RootNode, ASL_WALK_VISIT_UPWARD, NULL, - OpcAmlOpcodeWalk, NULL); - UtEndEvent (Event); - - /* - * Now that the input is parsed, we can open the AML output file. - * Note: by default, the name of this file comes from the table descriptor - * within the input file. - */ - Event = UtBeginEvent ("Open AML output file"); - Status = FlOpenAmlOutputFile (Gbl_OutputFilenamePrefix); - if (ACPI_FAILURE (Status)) - { - AePrintErrorLog (ASL_FILE_STDERR); - return -1; - } - UtEndEvent (Event); - - /* Interpret and generate all compile-time constants */ - - Event = UtBeginEvent ("Constant folding via AML interpreter"); - DbgPrint (ASL_DEBUG_OUTPUT, - "\nInterpreting compile-time constant expressions\n\n"); - TrWalkParseTree (RootNode, ASL_WALK_VISIT_DOWNWARD, - OpcAmlConstantWalk, NULL, NULL); - UtEndEvent (Event); - - /* Update AML opcodes if necessary, after constant folding */ - - Event = UtBeginEvent ("Updating AML opcodes after constant folding"); - DbgPrint (ASL_DEBUG_OUTPUT, - "\nUpdating AML opcodes after constant folding\n\n"); - TrWalkParseTree (RootNode, ASL_WALK_VISIT_UPWARD, - NULL, OpcAmlOpcodeUpdateWalk, NULL); - UtEndEvent (Event); - - /* Calculate all AML package lengths */ - - Event = UtBeginEvent ("Generate AML package lengths"); - DbgPrint (ASL_DEBUG_OUTPUT, "\nGenerating Package lengths\n\n"); - TrWalkParseTree (RootNode, ASL_WALK_VISIT_UPWARD, NULL, - LnPackageLengthWalk, NULL); - UtEndEvent (Event); - - if (Gbl_ParseOnlyFlag) - { - AePrintErrorLog (ASL_FILE_STDOUT); - UtDisplaySummary (ASL_FILE_STDOUT); - if (Gbl_DebugFlag) - { - /* Print error summary to the debug file */ - - AePrintErrorLog (ASL_FILE_STDERR); - UtDisplaySummary (ASL_FILE_STDERR); - } - return 0; - } - - /* - * Create an internal namespace and use it as a symbol table - */ - - /* Namespace loading */ - - Event = UtBeginEvent ("Create ACPI Namespace"); - Status = LdLoadNamespace (RootNode); - UtEndEvent (Event); - if (ACPI_FAILURE (Status)) - { - return -1; - } - - /* Namespace cross-reference */ - - AslGbl_NamespaceEvent = UtBeginEvent ("Cross reference parse tree and Namespace"); - Status = LkCrossReferenceNamespace (); - if (ACPI_FAILURE (Status)) - { - return -1; - } - - /* Namespace - Check for non-referenced objects */ - - LkFindUnreferencedObjects (); - UtEndEvent (AslGbl_NamespaceEvent); - - /* - * Semantic analysis. This can happen only after the - * namespace has been loaded and cross-referenced. - * - * part one - check control methods - */ - Event = UtBeginEvent ("Analyze control method return types"); - AnalysisWalkInfo.MethodStack = NULL; - - DbgPrint (ASL_DEBUG_OUTPUT, "\nSemantic analysis - Method analysis\n\n"); - TrWalkParseTree (RootNode, ASL_WALK_VISIT_TWICE, - AnMethodAnalysisWalkBegin, - AnMethodAnalysisWalkEnd, &AnalysisWalkInfo); - UtEndEvent (Event); - - /* Semantic error checking part two - typing of method returns */ - - Event = UtBeginEvent ("Determine object types returned by methods"); - DbgPrint (ASL_DEBUG_OUTPUT, "\nSemantic analysis - Method typing\n\n"); - TrWalkParseTree (RootNode, ASL_WALK_VISIT_TWICE, - AnMethodTypingWalkBegin, - AnMethodTypingWalkEnd, NULL); - UtEndEvent (Event); - - /* Semantic error checking part three - operand type checking */ - - Event = UtBeginEvent ("Analyze AML operand types"); - DbgPrint (ASL_DEBUG_OUTPUT, "\nSemantic analysis - Operand type checking\n\n"); - TrWalkParseTree (RootNode, ASL_WALK_VISIT_TWICE, - AnOperandTypecheckWalkBegin, - AnOperandTypecheckWalkEnd, &AnalysisWalkInfo); - UtEndEvent (Event); - - /* Semantic error checking part four - other miscellaneous checks */ - - Event = UtBeginEvent ("Miscellaneous analysis"); - DbgPrint (ASL_DEBUG_OUTPUT, "\nSemantic analysis - miscellaneous\n\n"); - TrWalkParseTree (RootNode, ASL_WALK_VISIT_TWICE, - AnOtherSemanticAnalysisWalkBegin, - AnOtherSemanticAnalysisWalkEnd, &AnalysisWalkInfo); - UtEndEvent (Event); - - /* Calculate all AML package lengths */ - - Event = UtBeginEvent ("Finish AML package length generation"); - DbgPrint (ASL_DEBUG_OUTPUT, "\nGenerating Package lengths\n\n"); - TrWalkParseTree (RootNode, ASL_WALK_VISIT_UPWARD, NULL, - LnInitLengthsWalk, NULL); - TrWalkParseTree (RootNode, ASL_WALK_VISIT_UPWARD, NULL, - LnPackageLengthWalk, NULL); - UtEndEvent (Event); - - /* Code generation - emit the AML */ - - Event = UtBeginEvent ("Generate AML code and write output files"); - CgGenerateAmlOutput (); - UtEndEvent (Event); - - Event = UtBeginEvent ("Write optional output files"); - CmDoOutputFiles (); - UtEndEvent (Event); - - UtEndEvent (FullCompile); - CmCleanupAndExit (); - return 0; -} - - -/******************************************************************************* - * - * FUNCTION: CmDoOutputFiles - * - * PARAMETERS: None - * - * RETURN: None. - * - * DESCRIPTION: Create all "listing" type files - * - ******************************************************************************/ - -void -CmDoOutputFiles ( - void) -{ - - /* Create listings and hex files */ - - LsDoListings (); - LsDoHexOutput (); - - /* Dump the namespace to the .nsp file if requested */ - - (void) LsDisplayNamespace (); -} - - -/******************************************************************************* - * - * FUNCTION: CmDumpEvent - * - * PARAMETERS: Event - A compiler event struct - * - * RETURN: None. - * - * DESCRIPTION: Dump a compiler event struct - * - ******************************************************************************/ - -static void -CmDumpEvent ( - ASL_EVENT_INFO *Event) -{ - UINT32 Delta; - UINT32 USec; - UINT32 MSec; - - if (!Event->Valid) - { - return; - } - - /* Delta will be in 100-nanosecond units */ - - Delta = (UINT32) (Event->EndTime - Event->StartTime); - - USec = Delta / 10; - MSec = Delta / 10000; - - /* Round milliseconds up */ - - if ((USec - (MSec * 1000)) >= 500) - { - MSec++; - } - - DbgPrint (ASL_DEBUG_OUTPUT, "%8u usec %8u msec - %s\n", - USec, MSec, Event->EventName); -} - - -/******************************************************************************* - * - * FUNCTION: CmCleanupAndExit - * - * PARAMETERS: None - * - * RETURN: None. - * - * DESCRIPTION: Close all open files and exit the compiler - * - ******************************************************************************/ - -void -CmCleanupAndExit ( - void) -{ - UINT32 i; - - - AePrintErrorLog (ASL_FILE_STDOUT); - if (Gbl_DebugFlag) - { - /* Print error summary to the debug file */ - - AePrintErrorLog (ASL_FILE_STDERR); - } - - DbgPrint (ASL_DEBUG_OUTPUT, "\n\nElapsed time for major events\n\n"); - for (i = 0; i < AslGbl_NextEvent; i++) - { - CmDumpEvent (&AslGbl_Events[i]); - } - - if (Gbl_CompileTimesFlag) - { - printf ("\nElapsed time for major events\n\n"); - for (i = 0; i < AslGbl_NextEvent; i++) - { - CmDumpEvent (&AslGbl_Events[i]); - } - - printf ("\nMiscellaneous compile statistics\n\n"); - printf ("%11u : %s\n", TotalParseNodes, "Parse nodes"); - printf ("%11u : %s\n", Gbl_NsLookupCount, "Namespace searches"); - printf ("%11u : %s\n", TotalNamedObjects, "Named objects"); - printf ("%11u : %s\n", TotalMethods, "Control methods"); - printf ("%11u : %s\n", TotalAllocations, "Memory Allocations"); - printf ("%11u : %s\n", TotalAllocated, "Total allocated memory"); - printf ("%11u : %s\n", TotalFolds, "Constant subtrees folded"); - printf ("\n"); - } - - if (Gbl_NsLookupCount) - { - DbgPrint (ASL_DEBUG_OUTPUT, "\n\nMiscellaneous compile statistics\n\n"); - DbgPrint (ASL_DEBUG_OUTPUT, "%32s : %d\n", "Total Namespace searches", - Gbl_NsLookupCount); - DbgPrint (ASL_DEBUG_OUTPUT, "%32s : %d usec\n", "Time per search", - ((UINT32) (AslGbl_Events[AslGbl_NamespaceEvent].EndTime - - AslGbl_Events[AslGbl_NamespaceEvent].StartTime) / - 10) / Gbl_NsLookupCount); - } - - /* Close all open files */ - - for (i = 2; i < ASL_MAX_FILE_TYPE; i++) - { - FlCloseFile (i); - } - - /* - * TBD: SourceOutput should be .TMP, then rename if we want to keep it? - */ - if (!Gbl_SourceOutputFlag) - { - remove (Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Filename); - } - - /* Delete AML file if there are errors */ - - if ((Gbl_ExceptionCount[ASL_ERROR] > 0) && (!Gbl_IgnoreErrors)) - { - remove (Gbl_Files[ASL_FILE_AML_OUTPUT].Filename); - } - - if (Gbl_ExceptionCount[ASL_ERROR] > ASL_MAX_ERROR_COUNT) - { - printf ("\nMaximum error count (%d) exceeded\n", ASL_MAX_ERROR_COUNT); - } - - UtDisplaySummary (ASL_FILE_STDOUT); - - /* - * Return non-zero exit code if there have been errors, unless the - * global ignore error flag has been set - */ - if ((Gbl_ExceptionCount[ASL_ERROR] > 0) && (!Gbl_IgnoreErrors)) - { - exit (1); - } - exit (0); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/aslcompiler.h b/sys/contrib/dev/acpica-unix-20061109/compiler/aslcompiler.h deleted file mode 100644 index a1f40ba6a9..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/aslcompiler.h +++ /dev/null @@ -1,913 +0,0 @@ - -/****************************************************************************** - * - * Module Name: aslcompiler.h - common include file for iASL - * $Revision: 1.147 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#ifndef __ASLCOMPILER_H -#define __ASLCOMPILER_H - - -/* Microsoft-specific */ - -#if (defined WIN32 || defined WIN64) - -/* warn : used #pragma pack */ -#pragma warning(disable:4103) - -/* warn : named type definition in parentheses */ -#pragma warning(disable:4115) -#endif - -#include -#include -#include -#include -#include -#include - - -#include "acpi.h" -#include "amlresrc.h" -#include "acdebug.h" - -/* Compiler headers */ - -#include "asldefine.h" -#include "asltypes.h" -#include "aslglobal.h" - - -/******************************************************************************* - * - * Compiler prototypes - * - ******************************************************************************/ - -/* - * parser - generated from flex/bison, lex/yacc, etc. - */ -int -AslCompilerparse( - void); - -ACPI_PARSE_OBJECT * -AslDoError ( - void); - -int -AslCompilerlex( - void); - -void -ResetCurrentLineBuffer ( - void); - -void -InsertLineBuffer ( - int SourceChar); - -int -AslPopInputFileStack ( - void); - -void -AslPushInputFileStack ( - FILE *InputFile, - char *Filename); - - -/* - * aslcompile - compile mainline - */ -void -AslCompilerSignon ( - UINT32 FileId); - -void -AslCompilerFileHeader ( - UINT32 FileId); - -int -CmDoCompile ( - void); - -void -CmDoOutputFiles ( - void); - -void -CmCleanupAndExit ( - void); - - -/* - * aslanalyze - semantic analysis - */ -ACPI_STATUS -AnOtherSemanticAnalysisWalkBegin ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -ACPI_STATUS -AnOtherSemanticAnalysisWalkEnd ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -ACPI_STATUS -AnOperandTypecheckWalkBegin ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -ACPI_STATUS -AnOperandTypecheckWalkEnd ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -ACPI_STATUS -AnMethodAnalysisWalkBegin ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -ACPI_STATUS -AnMethodAnalysisWalkEnd ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -ACPI_STATUS -AnMethodTypingWalkBegin ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -ACPI_STATUS -AnMethodTypingWalkEnd ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - - -/* - * aslerror - error handling/reporting - */ -void -AslError ( - UINT8 Level, - UINT8 MessageId, - ACPI_PARSE_OBJECT *Op, - char *ExtraMessage); - -void -AslCoreSubsystemError ( - ACPI_PARSE_OBJECT *Op, - ACPI_STATUS Status, - char *ExtraMessage, - BOOLEAN Abort); - -int -AslCompilererror( - char *s); - -void -AslCommonError ( - UINT8 Level, - UINT8 MessageId, - UINT32 CurrentLineNumber, - UINT32 LogicalLineNumber, - UINT32 LogicalByteOffset, - UINT32 Column, - char *Filename, - char *ExtraMessage); - -void -AePrintException ( - UINT32 FileId, - ASL_ERROR_MSG *Enode, - char *Header); - -void -AePrintErrorLog ( - UINT32 FileId); - -ACPI_PHYSICAL_ADDRESS -AeLocalGetRootPointer ( - void); - - -/* - * asllisting - generate all "listing" type files - */ -void -LsDoListings ( - void); - -void -LsWriteNodeToAsmListing ( - ACPI_PARSE_OBJECT *Op); - -void -LsWriteNode ( - ACPI_PARSE_OBJECT *Op, - UINT32 FileId); - -void -LsDoHexOutput ( - void); - -void -LsDumpParseTree ( - void); - -/* - * aslfold - constant folding - */ -ACPI_STATUS -OpcAmlConstantWalk ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - - -/* - * aslopcodes - generate AML opcodes - */ -ACPI_STATUS -OpcAmlOpcodeWalk ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -ACPI_STATUS -OpcAmlOpcodeUpdateWalk ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -void -OpcGenerateAmlOpcode ( - ACPI_PARSE_OBJECT *Op); - -UINT32 -OpcSetOptimalIntegerSize ( - ACPI_PARSE_OBJECT *Op); - -void -OpcGetIntegerWidth ( - ACPI_PARSE_OBJECT *Op); - - -/* - * asloperands - generate AML operands for the AML opcodes - */ -ACPI_PARSE_OBJECT * -UtGetArg ( - ACPI_PARSE_OBJECT *Op, - UINT32 Argn); - -void -OpnGenerateAmlOperands ( - ACPI_PARSE_OBJECT *Op); - -void -OpnDoPackage ( - ACPI_PARSE_OBJECT *Op); - - -/* - * aslopt - optmization - */ -void -OptOptimizeNamePath ( - ACPI_PARSE_OBJECT *Op, - UINT32 Flags, - ACPI_WALK_STATE *WalkState, - char *AmlNameString, - ACPI_NAMESPACE_NODE *TargetNode); - - -/* - * aslcodegen - code generation - */ -void -CgGenerateAmlOutput ( - void); - - -/* - * asllength - calculate/adjust AML package lengths - */ -ACPI_STATUS -LnPackageLengthWalk ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -ACPI_STATUS -LnInitLengthsWalk ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -void -CgGenerateAmlLengths ( - ACPI_PARSE_OBJECT *Op); - - -/* - * aslmap - opcode mappings and reserved method names - */ -ACPI_OBJECT_TYPE -AslMapNamedOpcodeToDataType ( - UINT16 Opcode); - -void -MpDisplayReservedNames ( - void); - - -/* - * asltransform - parse tree transformations - */ -ACPI_STATUS -TrAmlTransformWalk ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - - -/* - * asltree - parse tree support - */ -ACPI_STATUS -TrWalkParseTree ( - ACPI_PARSE_OBJECT *Op, - UINT32 Visitation, - ASL_WALK_CALLBACK DescendingCallback, - ASL_WALK_CALLBACK AscendingCallback, - void *Context); - -/* Values for "Visitation" parameter above */ - -#define ASL_WALK_VISIT_DOWNWARD 0x01 -#define ASL_WALK_VISIT_UPWARD 0x02 -#define ASL_WALK_VISIT_TWICE (ASL_WALK_VISIT_DOWNWARD | ASL_WALK_VISIT_UPWARD) - - -ACPI_PARSE_OBJECT * -TrAllocateNode ( - UINT32 ParseOpcode); - -void -TrReleaseNode ( - ACPI_PARSE_OBJECT *Op); - -ACPI_PARSE_OBJECT * -TrUpdateNode ( - UINT32 ParseOpcode, - ACPI_PARSE_OBJECT *Op); - -ACPI_PARSE_OBJECT * -TrCreateNode ( - UINT32 ParseOpcode, - UINT32 NumChildren, - ...); - -ACPI_PARSE_OBJECT * -TrCreateLeafNode ( - UINT32 ParseOpcode); - -ACPI_PARSE_OBJECT * -TrCreateValuedLeafNode ( - UINT32 ParseOpcode, - ACPI_INTEGER Value); - -ACPI_PARSE_OBJECT * -TrLinkChildren ( - ACPI_PARSE_OBJECT *Op, - UINT32 NumChildren, - ...); - -void -TrSetEndLineNumber ( - ACPI_PARSE_OBJECT *Op); - -void -TrWalkTree ( - void); - -ACPI_PARSE_OBJECT * -TrLinkPeerNode ( - ACPI_PARSE_OBJECT *Op1, - ACPI_PARSE_OBJECT *Op2); - -ACPI_PARSE_OBJECT * -TrLinkChildNode ( - ACPI_PARSE_OBJECT *Op1, - ACPI_PARSE_OBJECT *Op2); - -ACPI_PARSE_OBJECT * -TrSetNodeFlags ( - ACPI_PARSE_OBJECT *Op, - UINT32 Flags); - -ACPI_PARSE_OBJECT * -TrLinkPeerNodes ( - UINT32 NumPeers, - ...); - - -/* - * aslfiles - File I/O support - */ -void -AslAbort ( - void); - -void -FlOpenIncludeFile ( - ACPI_PARSE_OBJECT *Op); - -void -FlFileError ( - UINT32 FileId, - UINT8 ErrorId); - -ACPI_STATUS -FlReadFile ( - UINT32 FileId, - void *Buffer, - UINT32 Length); - -void -FlWriteFile ( - UINT32 FileId, - void *Buffer, - UINT32 Length); - -void -FlSeekFile ( - UINT32 FileId, - long Offset); - -void -FlCloseFile ( - UINT32 FileId); - -void -FlPrintFile ( - UINT32 FileId, - char *Format, - ...); - -void -FlSetLineNumber ( - ACPI_PARSE_OBJECT *Op); - -ACPI_STATUS -FlOpenInputFile ( - char *InputFilename); - -ACPI_STATUS -FlOpenAmlOutputFile ( - char *InputFilename); - -ACPI_STATUS -FlOpenMiscOutputFiles ( - char *InputFilename); - - -/* - * asload - load namespace in prep for cross reference - */ -ACPI_STATUS -LdLoadNamespace ( - ACPI_PARSE_OBJECT *RootOp); - - -/* - * asllookup - namespace cross reference - */ -ACPI_STATUS -LkCrossReferenceNamespace ( - void); - -void -LkFindUnreferencedObjects ( - void); - -ACPI_STATUS -LsDisplayNamespace ( - void); - - -/* - * aslutils - common compiler utilites - */ -void -DbgPrint ( - UINT32 Type, - char *Format, - ...); - -/* Type values for above */ - -#define ASL_DEBUG_OUTPUT 0 -#define ASL_PARSE_OUTPUT 1 -#define ASL_TREE_OUTPUT 2 - -void -UtDisplayConstantOpcodes ( - void); - -UINT8 -UtBeginEvent ( - char *Name); - -void -UtEndEvent ( - UINT8 Event); - -void * -UtLocalCalloc ( - UINT32 Size); - -void -UtPrintFormattedName ( - UINT16 ParseOpcode, - UINT32 Level); - -void -UtDisplaySummary ( - UINT32 FileId); - -UINT8 -UtHexCharToValue ( - int HexChar); - -void -UtConvertByteToHex ( - UINT8 RawByte, - UINT8 *Buffer); - -void -UtConvertByteToAsmHex ( - UINT8 RawByte, - UINT8 *Buffer); - -char * -UtGetOpName ( - UINT32 ParseOpcode); - -void -UtSetParseOpName ( - ACPI_PARSE_OBJECT *Op); - -char * -UtGetStringBuffer ( - UINT32 Length); - -ACPI_STATUS -UtInternalizeName ( - char *ExternalName, - char **ConvertedName); - -void -UtAttachNamepathToOwner ( - ACPI_PARSE_OBJECT *Op, - ACPI_PARSE_OBJECT *NameNode); - -ACPI_PARSE_OBJECT * -UtCheckIntegerRange ( - ACPI_PARSE_OBJECT *Op, - UINT32 LowValue, - UINT32 HighValue); - -ACPI_INTEGER -UtDoConstant ( - char *String); - - -/* - * aslresource - Resource template generation utilities - */ -ASL_RESOURCE_NODE * -RsAllocateResourceNode ( - UINT32 Size); - -void -RsCreateBitField ( - ACPI_PARSE_OBJECT *Op, - char *Name, - UINT32 ByteOffset, - UINT32 BitOffset); - -void -RsCreateByteField ( - ACPI_PARSE_OBJECT *Op, - char *Name, - UINT32 ByteOffset); - -void -RsSetFlagBits ( - UINT8 *Flags, - ACPI_PARSE_OBJECT *Op, - UINT8 Position, - UINT8 DefaultBit); - -ACPI_PARSE_OBJECT * -RsCompleteNodeAndGetNext ( - ACPI_PARSE_OBJECT *Op); - -void -RsCheckListForDuplicates ( - ACPI_PARSE_OBJECT *Op); - -ASL_RESOURCE_NODE * -RsDoOneResourceDescriptor ( - ACPI_PARSE_OBJECT *DescriptorTypeOp, - UINT32 CurrentByteOffset, - UINT8 *State); - -/* Values for State above */ - -#define ACPI_RSTATE_NORMAL 0 -#define ACPI_RSTATE_START_DEPENDENT 1 -#define ACPI_RSTATE_DEPENDENT_LIST 2 - -UINT32 -RsLinkDescriptorChain ( - ASL_RESOURCE_NODE **PreviousRnode, - ASL_RESOURCE_NODE *Rnode); - -void -RsDoResourceTemplate ( - ACPI_PARSE_OBJECT *Op); - - -/* - * aslrestype1 - generate Small descriptors - */ -ASL_RESOURCE_NODE * -RsDoEndTagDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoDmaDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoEndDependentDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoFixedIoDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoIoDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoIrqDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoIrqNoFlagsDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoMemory24Descriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoMemory32Descriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoMemory32FixedDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoStartDependentDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoStartDependentNoPriDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoVendorSmallDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - - -/* - * aslrestype2 - generate Large descriptors - */ -ASL_RESOURCE_NODE * -RsDoInterruptDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoDwordIoDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoDwordMemoryDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoDwordSpaceDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoExtendedIoDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoExtendedMemoryDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoExtendedSpaceDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoQwordIoDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoQwordMemoryDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoQwordSpaceDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoWordIoDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoWordSpaceDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoWordBusNumberDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoVendorLargeDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoGeneralRegisterDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -#endif /* __ASLCOMPILER_H */ - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/aslcompiler.l b/sys/contrib/dev/acpica-unix-20061109/compiler/aslcompiler.l deleted file mode 100644 index ce83599212..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/aslcompiler.l +++ /dev/null @@ -1,1182 +0,0 @@ - -%{ -/****************************************************************************** - * - * Module Name: aslcompiler.l - Flex input file - * $Revision: 1.78 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include -#include -#include "aslcompiler.h" -#include "aslcompiler.y.h" -YYSTYPE AslCompilerlval; - -/* - * Generation: Use the following command line: - * - * flex.exe -PAslCompiler -i -o$(InputPath).c $(InputPath) - * - * -i: Scanner must be case-insensitive - */ - -#define _COMPONENT ACPI_COMPILER - ACPI_MODULE_NAME ("aslscan") -char -comment (void); -char -comment2 (void); -void -count (int type); -char -literal (void); -void -copy (void); - -/*! [Begin] no source code translation */ - -%} - - -LeadNameChar [A-Za-z_] -DigitChar [0-9] -HexDigitChar [A-Fa-f0-9] -RootChar [\\] -Nothing [] - -NameChar [A-Za-z_0-9] -NameSeg1 {LeadNameChar}{NameChar} -NameSeg2 {LeadNameChar}{NameChar}{NameChar} -NameSeg3 {LeadNameChar}{NameChar}{NameChar}{NameChar} -NameSeg {LeadNameChar}|{NameSeg1}|{NameSeg2}|{NameSeg3} - -NameString {RootChar}|{RootChar}{NamePath}|[\^]+{NamePath}|{NonEmptyNamePath} -NamePath {NonEmptyNamePath}? -NonEmptyNamePath {NameSeg}{NamePathTail}* -NamePathTail [.]{NameSeg} - -%% - -[ ] { count (0); } -[\n] { count (0); } -[ \t] { count (0); } - - -"/*" { if (!comment ()) yyterminate (); } -"//" { if (!comment2 ()) yyterminate (); } - -"\"" { if (literal ()) return (PARSEOP_STRING_LITERAL); else yyterminate (); } - - -0[xX]{HexDigitChar}+ | -{DigitChar}+ { AslCompilerlval.i = UtDoConstant ((char *) AslCompilertext); - count (1); return (PARSEOP_INTEGER); } - -"Include" { count (1); return (PARSEOP_INCLUDE); } -"#include" { count (1); return (PARSEOP_INCLUDE_CSTYLE); } -"#line" { count (1); return (PARSEOP_LINE_CSTYLE); } -"External" { count (1); return (PARSEOP_EXTERNAL); } - - -"Ones" { count (1); return (PARSEOP_ONES); } -"One" { count (1); return (PARSEOP_ONE); } -"Zero" { count (1); return (PARSEOP_ZERO); } -"Revision" { count (1); return (PARSEOP_REVISION); } - -"Offset" { count (1); return (PARSEOP_OFFSET); } -"AccessAs" { count (1); return (PARSEOP_ACCESSAS); } -"BankField" { count (2); return (PARSEOP_BANKFIELD); } -"CreateBitField" { count (2); return (PARSEOP_CREATEBITFIELD); } -"CreateByteField" { count (2); return (PARSEOP_CREATEBYTEFIELD); } -"CreateDWordField" { count (2); return (PARSEOP_CREATEDWORDFIELD); } -"CreateField" { count (2); return (PARSEOP_CREATEFIELD); } -"CreateQWordField" { count (2); return (PARSEOP_CREATEQWORDFIELD); } -"CreateWordField" { count (2); return (PARSEOP_CREATEWORDFIELD); } -"DataTableRegion" { count (2); return (PARSEOP_DATATABLEREGION); } -"Device" { count (2); return (PARSEOP_DEVICE); } -"Event" { count (2); return (PARSEOP_EVENT); } -"Field" { count (2); return (PARSEOP_FIELD); } -"Function" { count (2); return (PARSEOP_FUNCTION); } -"IndexField" { count (2); return (PARSEOP_INDEXFIELD); } -"Method" { count (2); return (PARSEOP_METHOD); } -"Mutex" { count (2); return (PARSEOP_MUTEX); } -"OperationRegion" { count (2); return (PARSEOP_OPERATIONREGION); } -"PowerResource" { count (2); return (PARSEOP_POWERRESOURCE); } -"Processor" { count (2); return (PARSEOP_PROCESSOR); } -"ThermalZone" { count (2); return (PARSEOP_THERMALZONE); } -"Alias" { count (2); return (PARSEOP_ALIAS); } -"Name" { count (2); return (PARSEOP_NAME); } -"Scope" { count (2); return (PARSEOP_SCOPE); } -"Break" { count (3); return (PARSEOP_BREAK); } -"BreakPoint" { count (3); return (PARSEOP_BREAKPOINT); } -"Continue" { count (3); return (PARSEOP_CONTINUE); } -"Fatal" { count (3); return (PARSEOP_FATAL); } -"If" { count (3); return (PARSEOP_IF); } -"Else" { count (3); return (PARSEOP_ELSE); } -"ElseIf" { count (3); return (PARSEOP_ELSEIF); } -"Load" { count (3); return (PARSEOP_LOAD); } -"Noop" { count (3); return (PARSEOP_NOOP); } -"Notify" { count (3); return (PARSEOP_NOTIFY); } -"Release" { count (3); return (PARSEOP_RELEASE); } -"Reset" { count (3); return (PARSEOP_RESET); } -"Return" { count (3); return (PARSEOP_RETURN); } -"Signal" { count (3); return (PARSEOP_SIGNAL); } -"Sleep" { count (3); return (PARSEOP_SLEEP); } -"Stall" { count (3); return (PARSEOP_STALL); } -"Switch" { count (3); return (PARSEOP_SWITCH); } -"Case" { count (3); return (PARSEOP_CASE); } -"Default" { count (3); return (PARSEOP_DEFAULT); } -"Unload" { count (3); return (PARSEOP_UNLOAD); } -"While" { count (3); return (PARSEOP_WHILE); } - -"Acquire" { count (3); return (PARSEOP_ACQUIRE); } -"Add" { count (3); return (PARSEOP_ADD); } -"And" { count (3); return (PARSEOP_AND); } -"Concatenate" { count (3); return (PARSEOP_CONCATENATE); } -"ConcatenateResTemplate" { count (3); return (PARSEOP_CONCATENATERESTEMPLATE); } -"CondRefOf" { count (3); return (PARSEOP_CONDREFOF); } -"CopyObject" { count (3); return (PARSEOP_COPYOBJECT); } -"Decrement" { count (3); return (PARSEOP_DECREMENT); } -"DeRefOf" { count (3); return (PARSEOP_DEREFOF); } -"Divide" { count (3); return (PARSEOP_DIVIDE); } -"FindSetLeftBit" { count (3); return (PARSEOP_FINDSETLEFTBIT); } -"FindSetRightBit" { count (3); return (PARSEOP_FINDSETRIGHTBIT); } -"FromBCD" { count (3); return (PARSEOP_FROMBCD); } -"Increment" { count (3); return (PARSEOP_INCREMENT); } -"Index" { count (3); return (PARSEOP_INDEX); } -"LAnd" { count (3); return (PARSEOP_LAND); } -"LEqual" { count (3); return (PARSEOP_LEQUAL); } -"LGreater" { count (3); return (PARSEOP_LGREATER); } -"LGreaterEqual" { count (3); return (PARSEOP_LGREATEREQUAL); } -"LLess" { count (3); return (PARSEOP_LLESS); } -"LLessEqual" { count (3); return (PARSEOP_LLESSEQUAL); } -"LNot" { count (3); return (PARSEOP_LNOT); } -"LNotEqual" { count (3); return (PARSEOP_LNOTEQUAL); } -"LoadTable" { count (3); return (PARSEOP_LOADTABLE); } -"LOr" { count (3); return (PARSEOP_LOR); } -"Match" { count (3); return (PARSEOP_MATCH); } -"Mid" { count (3); return (PARSEOP_MID); } -"Mod" { count (3); return (PARSEOP_MOD); } -"Multiply" { count (3); return (PARSEOP_MULTIPLY); } -"NAnd" { count (3); return (PARSEOP_NAND); } -"NOr" { count (3); return (PARSEOP_NOR); } -"Not" { count (3); return (PARSEOP_NOT); } -"ObjectType" { count (3); return (PARSEOP_OBJECTTYPE); } -"Or" { count (3); return (PARSEOP_OR); } -"RefOf" { count (3); return (PARSEOP_REFOF); } -"ShiftLeft" { count (3); return (PARSEOP_SHIFTLEFT); } -"ShiftRight" { count (3); return (PARSEOP_SHIFTRIGHT); } -"SizeOf" { count (3); return (PARSEOP_SIZEOF); } -"Store" { count (3); return (PARSEOP_STORE); } -"Subtract" { count (3); return (PARSEOP_SUBTRACT); } -"Timer" { count (3); return (PARSEOP_TIMER); } -"ToBCD" { count (3); return (PARSEOP_TOBCD); } -"ToBuffer" { count (3); return (PARSEOP_TOBUFFER); } -"ToDecimalString" { count (3); return (PARSEOP_TODECIMALSTRING); } -"ToHexString" { count (3); return (PARSEOP_TOHEXSTRING); } -"ToInteger" { count (3); return (PARSEOP_TOINTEGER); } -"ToString" { count (3); return (PARSEOP_TOSTRING); } -"Wait" { count (3); return (PARSEOP_WAIT); } -"XOr" { count (3); return (PARSEOP_XOR); } - -"Arg0" { count (1); return (PARSEOP_ARG0); } -"Arg1" { count (1); return (PARSEOP_ARG1); } -"Arg2" { count (1); return (PARSEOP_ARG2); } -"Arg3" { count (1); return (PARSEOP_ARG3); } -"Arg4" { count (1); return (PARSEOP_ARG4); } -"Arg5" { count (1); return (PARSEOP_ARG5); } -"Arg6" { count (1); return (PARSEOP_ARG6); } - -"Local0" { count (1); return (PARSEOP_LOCAL0); } -"Local1" { count (1); return (PARSEOP_LOCAL1); } -"Local2" { count (1); return (PARSEOP_LOCAL2); } -"Local3" { count (1); return (PARSEOP_LOCAL3); } -"Local4" { count (1); return (PARSEOP_LOCAL4); } -"Local5" { count (1); return (PARSEOP_LOCAL5); } -"Local6" { count (1); return (PARSEOP_LOCAL6); } -"Local7" { count (1); return (PARSEOP_LOCAL7); } - -"Debug" { count (1); return (PARSEOP_DEBUG); } - -"DefinitionBlock" { count (1); return (PARSEOP_DEFINITIONBLOCK); } -"Buffer" { count (1); return (PARSEOP_BUFFER); } -"Package" { count (1); return (PARSEOP_PACKAGE); } - -"EISAID" { count (1); return (PARSEOP_EISAID); } -"ResourceTemplate" { count (1); return (PARSEOP_RESOURCETEMPLATE); } -"ToUUID" { count (1); return (PARSEOP_TOUUID); } -"Unicode" { count (1); return (PARSEOP_UNICODE); } -"DMA" { count (1); return (PARSEOP_DMA); } -"DWordIO" { count (1); return (PARSEOP_DWORDIO); } -"DWordMemory" { count (1); return (PARSEOP_DWORDMEMORY); } -"DWordSpace" { count (1); return (PARSEOP_DWORDSPACE); } -"EndDependentFn" { count (1); return (PARSEOP_ENDDEPENDENTFN); } -"ExtendedIO" { count (1); return (PARSEOP_EXTENDEDIO); } -"ExtendedMemory" { count (1); return (PARSEOP_EXTENDEDMEMORY); } -"ExtendedSpace" { count (1); return (PARSEOP_EXTENDEDSPACE); } -"FixedIO" { count (1); return (PARSEOP_FIXEDIO); } -"Interrupt" { count (1); return (PARSEOP_INTERRUPT); } -"IO" { count (1); return (PARSEOP_IO); } -"IRQNoFlags" { count (1); return (PARSEOP_IRQNOFLAGS); } -"IRQ" { count (1); return (PARSEOP_IRQ); } -"Memory24" { count (1); return (PARSEOP_MEMORY24); } -"Memory32Fixed" { count (1); return (PARSEOP_MEMORY32FIXED); } -"Memory32" { count (1); return (PARSEOP_MEMORY32); } -"QWordIO" { count (1); return (PARSEOP_QWORDIO); } -"QWordMemory" { count (1); return (PARSEOP_QWORDMEMORY); } -"QWordSpace" { count (1); return (PARSEOP_QWORDSPACE); } -"Register" { count (1); return (PARSEOP_REGISTER); } -"StartDependentFn" { count (1); return (PARSEOP_STARTDEPENDENTFN); } -"StartDependentFnNoPri" { count (1); return (PARSEOP_STARTDEPENDENTFN_NOPRI); } -"VendorLong" { count (1); return (PARSEOP_VENDORLONG); } -"VendorShort" { count (1); return (PARSEOP_VENDORSHORT); } -"WordBusNumber" { count (1); return (PARSEOP_WORDBUSNUMBER); } -"WordIO" { count (1); return (PARSEOP_WORDIO); } -"WordSpace" { count (1); return (PARSEOP_WORDSPACE); } - -"UnknownObj" { count (0); return (PARSEOP_OBJECTTYPE_UNK); } -"IntObj" { count (0); return (PARSEOP_OBJECTTYPE_INT); } -"StrObj" { count (0); return (PARSEOP_OBJECTTYPE_STR); } -"BuffObj" { count (0); return (PARSEOP_OBJECTTYPE_BUF); } -"PkgObj" { count (0); return (PARSEOP_OBJECTTYPE_PKG); } -"FieldUnitObj" { count (0); return (PARSEOP_OBJECTTYPE_FLD); } -"DeviceObj" { count (0); return (PARSEOP_OBJECTTYPE_DEV); } -"EventObj" { count (0); return (PARSEOP_OBJECTTYPE_EVT); } -"MethodObj" { count (0); return (PARSEOP_OBJECTTYPE_MTH); } -"MutexObj" { count (0); return (PARSEOP_OBJECTTYPE_MTX); } -"OpRegionObj" { count (0); return (PARSEOP_OBJECTTYPE_OPR); } -"PowerResObj" { count (0); return (PARSEOP_OBJECTTYPE_POW); } -"ProcessorObj" { count (0); return (PARSEOP_OBJECTTYPE_PRO); } -"ThermalZoneObj" { count (0); return (PARSEOP_OBJECTTYPE_THZ); } -"BuffFieldObj" { count (0); return (PARSEOP_OBJECTTYPE_BFF); } -"DDBHandleObj" { count (0); return (PARSEOP_OBJECTTYPE_DDB); } - -"AnyAcc" { count (0); return (PARSEOP_ACCESSTYPE_ANY); } -"ByteAcc" { count (0); return (PARSEOP_ACCESSTYPE_BYTE); } -"WordAcc" { count (0); return (PARSEOP_ACCESSTYPE_WORD); } -"DWordAcc" { count (0); return (PARSEOP_ACCESSTYPE_DWORD); } -"QWordAcc" { count (0); return (PARSEOP_ACCESSTYPE_QWORD); } -"BufferAcc" { count (0); return (PARSEOP_ACCESSTYPE_BUF); } - -"Lock" { count (0); return (PARSEOP_LOCKRULE_LOCK); } -"NoLock" { count (0); return (PARSEOP_LOCKRULE_NOLOCK); } - -"Preserve" { count (0); return (PARSEOP_UPDATERULE_PRESERVE); } -"WriteAsOnes" { count (0); return (PARSEOP_UPDATERULE_ONES); } -"WriteAsZeros" { count (0); return (PARSEOP_UPDATERULE_ZEROS); } - -"Serialized" { count (0); return (PARSEOP_SERIALIZERULE_SERIAL); } -"NotSerialized" { count (0); return (PARSEOP_SERIALIZERULE_NOTSERIAL); } - -"SystemIO" { count (0); return (PARSEOP_REGIONSPACE_IO); } -"SystemMemory" { count (0); return (PARSEOP_REGIONSPACE_MEM); } -"PCI_Config" { count (0); return (PARSEOP_REGIONSPACE_PCI); } -"EmbeddedControl" { count (0); return (PARSEOP_REGIONSPACE_EC); } -"SMBus" { count (0); return (PARSEOP_REGIONSPACE_SMBUS); } -"SystemCMOS" { count (0); return (PARSEOP_REGIONSPACE_CMOS); } -"PciBarTarget" { count (0); return (PARSEOP_REGIONSPACE_PCIBAR); } - -"FFixedHW" { count (0); return (PARSEOP_ADDRESSSPACE_FFIXEDHW); } - -"SMBQuick" { count (0); return (PARSEOP_ACCESSATTRIB_QUICK); } -"SMBSendReceive" { count (0); return (PARSEOP_ACCESSATTRIB_SND_RCV); } -"SMBByte" { count (0); return (PARSEOP_ACCESSATTRIB_BYTE); } -"SMBWord" { count (0); return (PARSEOP_ACCESSATTRIB_WORD); } -"SMBBlock" { count (0); return (PARSEOP_ACCESSATTRIB_BLOCK); } -"SMBProcessCall" { count (0); return (PARSEOP_ACCESSATTRIB_WORD_CALL); } -"SMBBlockProcessCall" { count (0); return (PARSEOP_ACCESSATTRIB_BLOCK_CALL); } - -"MTR" { count (0); return (PARSEOP_MATCHTYPE_MTR); } -"MEQ" { count (0); return (PARSEOP_MATCHTYPE_MEQ); } -"MLE" { count (0); return (PARSEOP_MATCHTYPE_MLE); } -"MLT" { count (0); return (PARSEOP_MATCHTYPE_MLT); } -"MGE" { count (0); return (PARSEOP_MATCHTYPE_MGE); } -"MGT" { count (0); return (PARSEOP_MATCHTYPE_MGT); } - -"Compatibility" { count (0); return (PARSEOP_DMATYPE_COMPATIBILITY); } -"TypeA" { count (0); return (PARSEOP_DMATYPE_A); } -"TypeB" { count (0); return (PARSEOP_DMATYPE_B); } -"TypeF" { count (0); return (PARSEOP_DMATYPE_F); } - -"BusMaster" { count (0); return (PARSEOP_BUSMASTERTYPE_MASTER); } -"NotBusMaster" { count (0); return (PARSEOP_BUSMASTERTYPE_NOTMASTER); } - -"Transfer8" { count (0); return (PARSEOP_XFERTYPE_8); } -"Transfer8_16" { count (0); return (PARSEOP_XFERTYPE_8_16); } -"Transfer16" { count (0); return (PARSEOP_XFERTYPE_16); } - -"ResourceConsumer" { count (0); return (PARSEOP_RESOURCETYPE_CONSUMER); } -"ResourceProducer" { count (0); return (PARSEOP_RESOURCETYPE_PRODUCER); } - -"MinFixed" { count (0); return (PARSEOP_MINTYPE_FIXED); } -"MinNotFixed" { count (0); return (PARSEOP_MINTYPE_NOTFIXED); } - -"MaxFixed" { count (0); return (PARSEOP_MAXTYPE_FIXED); } -"MaxNotFixed" { count (0); return (PARSEOP_MAXTYPE_NOTFIXED); } - -"PosDecode" { count (0); return (PARSEOP_DECODETYPE_POS); } -"SubDecode" { count (0); return (PARSEOP_DECODETYPE_SUB); } - -"ISAOnlyRanges" { count (0); return (PARSEOP_RANGETYPE_ISAONLY); } -"NonISAOnlyRanges" { count (0); return (PARSEOP_RANGETYPE_NONISAONLY); } -"EntireRange" { count (0); return (PARSEOP_RANGETYPE_ENTIRE); } - -"Cacheable" { count (0); return (PARSEOP_MEMTYPE_CACHEABLE); } -"WriteCombining" { count (0); return (PARSEOP_MEMTYPE_WRITECOMBINING); } -"Prefetchable" { count (0); return (PARSEOP_MEMTYPE_PREFETCHABLE); } -"NonCacheable" { count (0); return (PARSEOP_MEMTYPE_NONCACHEABLE); } - -"ReadWrite" { count (0); return (PARSEOP_READWRITETYPE_BOTH); } -"ReadOnly" { count (0); return (PARSEOP_READWRITETYPE_READONLY); } - -"Edge" { count (0); return (PARSEOP_INTTYPE_EDGE); } -"Level" { count (0); return (PARSEOP_INTTYPE_LEVEL); } - -"ActiveHigh" { count (0); return (PARSEOP_INTLEVEL_ACTIVEHIGH); } -"ActiveLow" { count (0); return (PARSEOP_INTLEVEL_ACTIVELOW); } - -"Shared" { count (0); return (PARSEOP_SHARETYPE_SHARED); } -"Exclusive" { count (0); return (PARSEOP_SHARETYPE_EXCLUSIVE); } - -"Decode10" { count (0); return (PARSEOP_IODECODETYPE_10); } -"Decode16" { count (0); return (PARSEOP_IODECODETYPE_16); } - -"TypeTranslation" { count (0); return (PARSEOP_TYPE_TRANSLATION); } -"TypeStatic" { count (0); return (PARSEOP_TYPE_STATIC); } - -"SparseTranslation" { count (0); return (PARSEOP_TRANSLATIONTYPE_SPARSE); } -"DenseTranslation" { count (0); return (PARSEOP_TRANSLATIONTYPE_DENSE); } - -"AddressRangeMemory" { count (0); return (PARSEOP_ADDRESSTYPE_MEMORY); } -"AddressRangeReserved" { count (0); return (PARSEOP_ADDRESSTYPE_RESERVED); } -"AddressRangeNVS" { count (0); return (PARSEOP_ADDRESSTYPE_NVS); } -"AddressRangeACPI" { count (0); return (PARSEOP_ADDRESSTYPE_ACPI); } - - -"{" { count (0); return('{'); } -"}" { count (0); return('}'); } -"," { count (0); return(','); } -"(" { count (0); return('('); } -")" { count (0); return(')'); } - - -{NameSeg} { char *s; - count (0); - s=malloc (ACPI_NAME_SIZE + 1); - if (strcmp (AslCompilertext, "\\")) - { - strcpy (s, "____"); - AcpiUtStrupr (AslCompilertext); - } - memcpy (s, AslCompilertext, strlen (AslCompilertext)); - AslCompilerlval.s = s; - DbgPrint (ASL_PARSE_OUTPUT, "NameSeg: %s\n", s); - return (PARSEOP_NAMESEG); } - -{NameString} { char *s; - count (0); - s=malloc (strlen (AslCompilertext)+1); - AcpiUtStrupr (AslCompilertext); - strcpy (s, AslCompilertext); - s[strlen (AslCompilertext)] = 0; - AslCompilerlval.s = s; - DbgPrint (ASL_PARSE_OUTPUT, "NameString: %s\n", s); - return (PARSEOP_NAMESTRING); } - -"*" | -"/" { count (1); - AslCompilererror ("Parse error, expecting ASL keyword or name");} - -. { count (1); - sprintf (MsgBuffer, - "Invalid character (0x%2.2X), expecting ASL keyword or name", - *AslCompilertext); - AslCompilererror (MsgBuffer);} - -<> { if (AslPopInputFileStack ()) - yyterminate(); - else - return (PARSEOP_INCLUDE_END);}; - -%% - -/*! [End] no source code translation !*/ - -typedef struct asl_file_node -{ - FILE *File; - UINT32 CurrentLineNumber; - YY_BUFFER_STATE State; - char *Filename; - struct asl_file_node *Next; - -} ASL_FILE_NODE; - -ASL_FILE_NODE *InputStack = NULL; - - -/******************************************************************************* - * - * FUNCTION: AslPopInputFileStack - * - * PARAMETERS: None - * - * RETURN: 0 if a node was popped, -1 otherwise - * - * DESCRIPTION: Pop the top of the input file stack and point the parser to - * the saved parse buffer contained in the fnode. Also, set the - * global line counters to the saved values. This function is - * called when an include file reaches EOF. - * - ******************************************************************************/ - -int -AslPopInputFileStack ( - void) -{ - ASL_FILE_NODE *Fnode; - FILE *InputFile = NULL; - - - Fnode = InputStack; - DbgPrint (ASL_PARSE_OUTPUT, "\nPop InputFile Stack, Fnode %p\n\n", Fnode); - - - if (!Fnode) - { - return -1; - } - - /* Close the current include file */ - - fclose (yyin); - - /* Update the top-of-stack */ - - InputStack = Fnode->Next; - InputFile = Fnode->File; - - /* Reset global line counter and filename */ - - Gbl_Files[ASL_FILE_INPUT].Filename = Fnode->Filename; - Gbl_CurrentLineNumber = Fnode->CurrentLineNumber; - - /* Point the parser to the popped file */ - - yy_delete_buffer (YY_CURRENT_BUFFER); - yy_switch_to_buffer (Fnode->State); - - /* All done with this node */ - - ACPI_FREE (Fnode); - return 0; -} - - -/******************************************************************************* - * - * FUNCTION: AslPushInputFileStack - * - * PARAMETERS: InputFile - Open file pointer - * Filename - Name of the file - * - * RETURN: None - * - * DESCRIPTION: Push the InputFile onto the file stack, and point the parser - * to this file. Called when an include file is successfully - * opened. - * - ******************************************************************************/ - -void -AslPushInputFileStack ( - FILE *InputFile, - char *Filename) -{ - ASL_FILE_NODE *Fnode; - YY_BUFFER_STATE State; - - - /* Save the current state in an Fnode */ - - Fnode = UtLocalCalloc (sizeof (ASL_FILE_NODE)); - - Fnode->File = yyin; - Fnode->Next = InputStack; - Fnode->State = YY_CURRENT_BUFFER; - Fnode->CurrentLineNumber = Gbl_CurrentLineNumber; - Fnode->Filename = Gbl_Files[ASL_FILE_INPUT].Filename; - - /* Push it on the stack */ - - InputStack = Fnode; - - /* Point the parser to this file */ - - State = yy_create_buffer (InputFile, YY_BUF_SIZE); - yy_switch_to_buffer (State); - - DbgPrint (ASL_PARSE_OUTPUT, "\nPush InputFile Stack, returning %p\n\n", InputFile); - - /* Reset the global line count and filename */ - - Gbl_Files[ASL_FILE_INPUT].Filename = Filename; - Gbl_CurrentLineNumber = 1; - yyin = InputFile; -} - - -/******************************************************************************* - * - * FUNCTION: ResetCurrentLineBuffer - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Reset the Line Buffer to zero, increment global line numbers. - * - ******************************************************************************/ - -void -ResetCurrentLineBuffer ( - void) -{ - - if (Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Handle) - { - FlWriteFile (ASL_FILE_SOURCE_OUTPUT, Gbl_CurrentLineBuffer, - Gbl_LineBufPtr - Gbl_CurrentLineBuffer); - } - - Gbl_CurrentLineOffset += Gbl_CurrentColumn; - Gbl_CurrentColumn = 0; - - Gbl_CurrentLineNumber++; - Gbl_LogicalLineNumber++; - Gbl_LineBufPtr = Gbl_CurrentLineBuffer; -} - - -/******************************************************************************* - * - * FUNCTION: InsertLineBuffer - * - * PARAMETERS: SourceChar - One char from the input ASL source file - * - * RETURN: None - * - * DESCRIPTION: Put one character of the source file into the temp line buffer - * - ******************************************************************************/ - -#define ASL_SPACES_PER_TAB 4 - -void -InsertLineBuffer ( - int SourceChar) -{ - UINT32 i; - UINT32 Count = 1; - - - if (SourceChar == EOF) - { - return; - } - - Gbl_InputByteCount++; - - /* Handle tabs. Convert to spaces */ - - if (SourceChar == '\t') - { - SourceChar = ' '; - Count = ASL_SPACES_PER_TAB - - (Gbl_CurrentColumn & (ASL_SPACES_PER_TAB-1)); - } - - - for (i = 0; i < Count; i++) - { - Gbl_CurrentColumn++; - - /* Insert the character into the line buffer */ - - *Gbl_LineBufPtr = (UINT8) SourceChar; - Gbl_LineBufPtr++; - - if (Gbl_LineBufPtr > (Gbl_CurrentLineBuffer + (ASL_LINE_BUFFER_SIZE - 1))) - { -#if 0 - /* - * Warning if we have split a long source line. - * - */ - sprintf (MsgBuffer, "Max %d", ASL_LINE_BUFFER_SIZE); - AslCommonError (ASL_WARNING, ASL_MSG_LONG_LINE, - Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, - Gbl_CurrentLineOffset, Gbl_CurrentColumn, - Gbl_Files[ASL_FILE_INPUT].Filename, MsgBuffer); -#endif - - ResetCurrentLineBuffer (); - } - else if (SourceChar == '\n') - { - /* End of line */ - - ResetCurrentLineBuffer (); - } - } -} - - -/******************************************************************************* - * - * FUNCTION: count - * - * PARAMETERS: yytext - Contains the matched keyword. - * Type - Keyword/Character type: - * 0 = anything except a keyword - * 1 = pseudo-keywords - * 2 = non-executable ASL keywords - * 3 = executable ASL keywords - * - * RETURN: None - * - * DESCRIPTION: Count keywords and put them into the line buffer - * - ******************************************************************************/ - -void -count ( - int Type) -{ - int i; - - - switch (Type) - { - case 2: - TotalKeywords++; - TotalNamedObjects++; - break; - - case 3: - TotalKeywords++; - TotalExecutableOpcodes++; - break; - } - - for (i = 0; (yytext[i] != 0) && (yytext[i] != EOF); i++) - { - InsertLineBuffer (yytext[i]); - *Gbl_LineBufPtr = 0; - } -} - - -/******************************************************************************* - * - * FUNCTION: comment - * - * PARAMETERS: none - * - * RETURN: none - * - * DESCRIPTION: Process a standard comment. - * - ******************************************************************************/ - -char -comment (void) -{ - char c; - char c1 = 0; - - - InsertLineBuffer ('/'); - InsertLineBuffer ('*'); - -loop: - - /* Eat chars until end-of-comment */ - - while ((c = (char) input()) != '*' && c != EOF) - { - InsertLineBuffer (c); - c1 = c; - } - - if (c == EOF) - { - goto EarlyEOF; - } - - /* - * Check for nested comment -- can help catch cases where a previous - * comment was accidently left unterminated - */ - if ((c1 == '/') && (c == '*')) - { - AslCommonError (ASL_WARNING, ASL_MSG_NESTED_COMMENT, - Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, - Gbl_InputByteCount, Gbl_CurrentColumn, - Gbl_Files[ASL_FILE_INPUT].Filename, NULL); - } - - /* Comment is closed only if the NEXT character is a slash */ - - InsertLineBuffer (c); - - if ((c1 = (char) input()) != '/' && c1 != EOF) - { - unput(c1); - goto loop; - } - - if (c1 == EOF) - { - goto EarlyEOF; - } - - InsertLineBuffer (c1); - return TRUE; - - -EarlyEOF: - /* - * Premature End-Of-File - */ - AslCommonError (ASL_ERROR, ASL_MSG_EARLY_EOF, - Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, - Gbl_CurrentLineOffset, Gbl_CurrentColumn, - Gbl_Files[ASL_FILE_INPUT].Filename, NULL); - return (FALSE); -} - - -/******************************************************************************* - * - * FUNCTION: comment - * - * PARAMETERS: none - * - * RETURN: none - * - * DESCRIPTION: Process a new "//" comment. - * - ******************************************************************************/ - -char -comment2 (void) -{ - char c; - - - InsertLineBuffer ('/'); - InsertLineBuffer ('/'); - - while ((c = (char) input()) != '\n' && c != EOF) - { - InsertLineBuffer (c); - } - - if (c == EOF) - { - /* End of file is OK, change to newline. Let parser detect EOF later */ - - c = '\n'; - } - - InsertLineBuffer (c); - return (TRUE); -} - - -/******************************************************************************* - * - * FUNCTION: literal - * - * PARAMETERS: none - * - * RETURN: none - * - * DESCRIPTION: Process a string literal (surrounded by quotes) - * - ******************************************************************************/ - -#define ASL_NORMAL_CHAR 0 -#define ASL_ESCAPE_SEQUENCE 1 -#define ASL_OCTAL_CONSTANT 2 -#define ASL_HEX_CONSTANT 3 - -char -literal (void) -{ - char *StringBuffer = MsgBuffer; - char *EndBuffer = MsgBuffer + ASL_MSG_BUFFER_SIZE; - char *CleanString; - char StringChar; - UINT32 State = ASL_NORMAL_CHAR; - UINT32 i = 0; - UINT8 Digit; - char ConvertBuffer[4]; - - - /* - * Eat chars until end-of-literal. - * NOTE: Put back the original surrounding quotes into the - * source line buffer. - */ - InsertLineBuffer ('\"'); - while ((StringChar = (char) input()) != EOF) - { - InsertLineBuffer (StringChar); - -DoCharacter: - - switch (State) - { - case ASL_NORMAL_CHAR: - - switch (StringChar) - { - case '\\': - /* - * Special handling for backslash-escape sequence. We will - * toss the backslash and translate the escape char(s). - */ - State = ASL_ESCAPE_SEQUENCE; - continue; - - case '\"': - - /* String terminator */ - - goto CompletedString; - } - break; - - - case ASL_ESCAPE_SEQUENCE: - - State = ASL_NORMAL_CHAR; - switch (StringChar) - { - case 'a': - StringChar = 0x07; /* BELL */ - break; - - case 'b': - StringChar = 0x08; /* BACKSPACE */ - break; - - case 'f': - StringChar = 0x0C; /* FORMFEED */ - break; - - case 'n': - StringChar = 0x0A; /* LINEFEED */ - break; - - case 'r': - StringChar = 0x0D; /* CARRIAGE RETURN*/ - break; - - case 't': - StringChar = 0x09; /* HORIZONTAL TAB */ - break; - - case 'v': - StringChar = 0x0B; /* VERTICAL TAB */ - break; - - case 'x': - State = ASL_HEX_CONSTANT; - i = 0; - continue; - - case '\'': /* Single Quote */ - case '\"': /* Double Quote */ - case '\\': /* Backslash */ - break; - - default: - - /* Check for an octal digit (0-7) */ - - if (ACPI_IS_OCTAL_DIGIT (StringChar)) - { - State = ASL_OCTAL_CONSTANT; - ConvertBuffer[0] = StringChar; - i = 1; - continue; - } - - /* Unknown escape sequence issue warning, but use the character */ - - AslCommonError (ASL_WARNING, ASL_MSG_INVALID_ESCAPE, - Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, - Gbl_CurrentLineOffset, Gbl_CurrentColumn, - Gbl_Files[ASL_FILE_INPUT].Filename, NULL); - break; - } - break; - - - case ASL_OCTAL_CONSTANT: - - /* Up to three octal digits allowed */ - - if (!ACPI_IS_OCTAL_DIGIT (StringChar) || - (i > 2)) - { - /* - * Reached end of the constant. Convert the assembled ASCII - * string and resume processing of the next character - */ - ConvertBuffer[i] = 0; - Digit = (UINT8) ACPI_STRTOUL (ConvertBuffer, NULL, 8); - - /* Check for NULL or non-ascii character (ignore if so) */ - - if ((Digit == 0) || (Digit > ACPI_ASCII_MAX)) - { - AslCommonError (ASL_WARNING, ASL_MSG_INVALID_STRING, - Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, - Gbl_CurrentLineOffset, Gbl_CurrentColumn, - Gbl_Files[ASL_FILE_INPUT].Filename, NULL); - } - else - { - *StringBuffer = (char) Digit; - StringBuffer++; - if (StringBuffer >= EndBuffer) - { - goto BufferOverflow; - } - } - - State = ASL_NORMAL_CHAR; - goto DoCharacter; - break; - } - - /* Append another digit of the constant */ - - ConvertBuffer[i] = StringChar; - i++; - continue; - - - case ASL_HEX_CONSTANT: - - /* Up to two hex digits allowed */ - - if (!ACPI_IS_XDIGIT (StringChar) || - (i > 1)) - { - /* - * Reached end of the constant. Convert the assembled ASCII - * string and resume processing of the next character - */ - ConvertBuffer[i] = 0; - Digit = (UINT8) ACPI_STRTOUL (ConvertBuffer, NULL, 16); - - /* Check for NULL or non-ascii character (ignore if so) */ - - if ((Digit == 0) || (Digit > ACPI_ASCII_MAX)) - { - AslCommonError (ASL_WARNING, ASL_MSG_INVALID_STRING, - Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, - Gbl_CurrentLineOffset, Gbl_CurrentColumn, - Gbl_Files[ASL_FILE_INPUT].Filename, NULL); - } - else - { - *StringBuffer = (char) Digit; - StringBuffer++; - if (StringBuffer >= EndBuffer) - { - goto BufferOverflow; - } - } - - State = ASL_NORMAL_CHAR; - goto DoCharacter; - break; - } - - /* Append another digit of the constant */ - - ConvertBuffer[i] = StringChar; - i++; - continue; - } - - /* Save the finished character */ - - *StringBuffer = StringChar; - StringBuffer++; - if (StringBuffer >= EndBuffer) - { - goto BufferOverflow; - } - } - - /* - * Premature End-Of-File - */ - AslCommonError (ASL_ERROR, ASL_MSG_EARLY_EOF, - Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, - Gbl_CurrentLineOffset, Gbl_CurrentColumn, - Gbl_Files[ASL_FILE_INPUT].Filename, NULL); - return (FALSE); - - -CompletedString: - /* - * Null terminate the input string and copy string to a new buffer - */ - *StringBuffer = 0; - - CleanString = UtGetStringBuffer (strlen (MsgBuffer) + 1); - if (!CleanString) - { - AslCommonError (ASL_ERROR, ASL_MSG_MEMORY_ALLOCATION, - Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, - Gbl_CurrentLineOffset, Gbl_CurrentColumn, - Gbl_Files[ASL_FILE_INPUT].Filename, NULL); - return (FALSE); - } - - ACPI_STRCPY (CleanString, MsgBuffer); - AslCompilerlval.s = CleanString; - return (TRUE); - - -BufferOverflow: - - /* Literal was too long */ - - AslCommonError (ASL_ERROR, ASL_MSG_STRING_LENGTH, - Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, - Gbl_CurrentLineOffset, Gbl_CurrentColumn, - Gbl_Files[ASL_FILE_INPUT].Filename, "Max length 4096"); - return (FALSE); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/aslcompiler.y b/sys/contrib/dev/acpica-unix-20061109/compiler/aslcompiler.y deleted file mode 100644 index 769d5233ca..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/aslcompiler.y +++ /dev/null @@ -1,3189 +0,0 @@ - -%{ -/****************************************************************************** - * - * Module Name: aslcompiler.y - Bison input file (ASL grammar and actions) - * $Revision: 1.104 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define YYDEBUG 1 -#define YYERROR_VERBOSE 1 - -/* - * State stack - compiler will fault if it overflows. (Default was 200) - */ -#define YYINITDEPTH 600 - -#include "aslcompiler.h" -#include -#include -#include -#include "acpi.h" - -#define _COMPONENT ACPI_COMPILER - ACPI_MODULE_NAME ("aslparse") - -/* - * Global Notes: - * - * October 2005: The following list terms have been optimized (from the - * original ASL grammar in the ACPI specification) to force the immediate - * reduction of each list item so that the parse stack use doesn't increase on - * each list element and possibly overflow on very large lists (>4000 items). - * This dramatically reduces use of the parse stack overall. - * - * ArgList, TermList, Objectlist, ByteList, DWordList, PackageList, - * ResourceMacroList, and FieldUnitList - */ - - -/* - * Next statement is important - this makes everything public so that - * we can access some of the parser tables from other modules - */ -#define static -#undef alloca -#define alloca AslLocalAllocate -#define YYERROR_VERBOSE 1 - -void * -AslLocalAllocate (unsigned int Size); - -/* - * The windows version of bison defines this incorrectly as "32768" (Not negative). - * Using a custom (edited binary) version of bison that defines YYFLAG as YYFBAD - * instead (#define YYFBAD 32768), so we can define it correctly here. - * - * The problem is that if YYFLAG is positive, the extended syntax error messages - * are disabled. - */ - -#define YYFLAG -32768 - - -%} - - -/* - * Declare the type of values in the grammar - */ - -%union { - UINT64 i; - char *s; - ACPI_PARSE_OBJECT *n; -} - - -/*! [Begin] no source code translation */ - -/* - * These shift/reduce conflicts are expected. There should be zer0 - * reduce/reduce conflicts. - */ -%expect 64 - - -/* - * Token types: These are returned by the lexer - * - * NOTE: This list MUST match the AslKeywordMapping table found - * in aslmap.c EXACTLY! Double check any changes! - */ - -%token PARSEOP_ACCESSAS -%token PARSEOP_ACCESSATTRIB_BLOCK -%token PARSEOP_ACCESSATTRIB_BLOCK_CALL -%token PARSEOP_ACCESSATTRIB_BYTE -%token PARSEOP_ACCESSATTRIB_WORD_CALL -%token PARSEOP_ACCESSATTRIB_QUICK -%token PARSEOP_ACCESSATTRIB_SND_RCV -%token PARSEOP_ACCESSATTRIB_WORD -%token PARSEOP_ACCESSTYPE_ANY -%token PARSEOP_ACCESSTYPE_BUF -%token PARSEOP_ACCESSTYPE_BYTE -%token PARSEOP_ACCESSTYPE_DWORD -%token PARSEOP_ACCESSTYPE_QWORD -%token PARSEOP_ACCESSTYPE_WORD -%token PARSEOP_ACQUIRE -%token PARSEOP_ADD -%token PARSEOP_ADDRESSSPACE_FFIXEDHW -%token PARSEOP_ADDRESSTYPE_ACPI -%token PARSEOP_ADDRESSTYPE_MEMORY -%token PARSEOP_ADDRESSTYPE_NVS -%token PARSEOP_ADDRESSTYPE_RESERVED -%token PARSEOP_ALIAS -%token PARSEOP_AND -%token PARSEOP_ARG0 -%token PARSEOP_ARG1 -%token PARSEOP_ARG2 -%token PARSEOP_ARG3 -%token PARSEOP_ARG4 -%token PARSEOP_ARG5 -%token PARSEOP_ARG6 -%token PARSEOP_BANKFIELD -%token PARSEOP_BREAK -%token PARSEOP_BREAKPOINT -%token PARSEOP_BUFFER -%token PARSEOP_BUSMASTERTYPE_MASTER -%token PARSEOP_BUSMASTERTYPE_NOTMASTER -%token PARSEOP_BYTECONST -%token PARSEOP_CASE -%token PARSEOP_CONCATENATE -%token PARSEOP_CONCATENATERESTEMPLATE -%token PARSEOP_CONDREFOF -%token PARSEOP_CONTINUE -%token PARSEOP_COPYOBJECT -%token PARSEOP_CREATEBITFIELD -%token PARSEOP_CREATEBYTEFIELD -%token PARSEOP_CREATEDWORDFIELD -%token PARSEOP_CREATEFIELD -%token PARSEOP_CREATEQWORDFIELD -%token PARSEOP_CREATEWORDFIELD -%token PARSEOP_DATATABLEREGION -%token PARSEOP_DEBUG -%token PARSEOP_DECODETYPE_POS -%token PARSEOP_DECODETYPE_SUB -%token PARSEOP_DECREMENT -%token PARSEOP_DEFAULT -%token PARSEOP_DEFAULT_ARG -%token PARSEOP_DEFINITIONBLOCK -%token PARSEOP_DEREFOF -%token PARSEOP_DEVICE -%token PARSEOP_DIVIDE -%token PARSEOP_DMA -%token PARSEOP_DMATYPE_A -%token PARSEOP_DMATYPE_COMPATIBILITY -%token PARSEOP_DMATYPE_B -%token PARSEOP_DMATYPE_F -%token PARSEOP_DWORDCONST -%token PARSEOP_DWORDIO -%token PARSEOP_DWORDMEMORY -%token PARSEOP_DWORDSPACE -%token PARSEOP_EISAID -%token PARSEOP_ELSE -%token PARSEOP_ELSEIF -%token PARSEOP_ENDDEPENDENTFN -%token PARSEOP_ENDTAG -%token PARSEOP_ERRORNODE -%token PARSEOP_EVENT -%token PARSEOP_EXTENDEDIO -%token PARSEOP_EXTENDEDMEMORY -%token PARSEOP_EXTENDEDSPACE -%token PARSEOP_EXTERNAL -%token PARSEOP_FATAL -%token PARSEOP_FIELD -%token PARSEOP_FINDSETLEFTBIT -%token PARSEOP_FINDSETRIGHTBIT -%token PARSEOP_FIXEDIO -%token PARSEOP_FROMBCD -%token PARSEOP_FUNCTION -%token PARSEOP_IF -%token PARSEOP_INCLUDE -%token PARSEOP_INCLUDE_CSTYLE -%token PARSEOP_INCLUDE_END -%token PARSEOP_INCREMENT -%token PARSEOP_INDEX -%token PARSEOP_INDEXFIELD -%token PARSEOP_INTEGER -%token PARSEOP_INTERRUPT -%token PARSEOP_INTLEVEL_ACTIVEHIGH -%token PARSEOP_INTLEVEL_ACTIVELOW -%token PARSEOP_INTTYPE_EDGE -%token PARSEOP_INTTYPE_LEVEL -%token PARSEOP_IO -%token PARSEOP_IODECODETYPE_10 -%token PARSEOP_IODECODETYPE_16 -%token PARSEOP_IRQ -%token PARSEOP_IRQNOFLAGS -%token PARSEOP_LAND -%token PARSEOP_LEQUAL -%token PARSEOP_LGREATER -%token PARSEOP_LGREATEREQUAL -%token PARSEOP_LINE_CSTYLE -%token PARSEOP_LLESS -%token PARSEOP_LLESSEQUAL -%token PARSEOP_LNOT -%token PARSEOP_LNOTEQUAL -%token PARSEOP_LOAD -%token PARSEOP_LOADTABLE -%token PARSEOP_LOCAL0 -%token PARSEOP_LOCAL1 -%token PARSEOP_LOCAL2 -%token PARSEOP_LOCAL3 -%token PARSEOP_LOCAL4 -%token PARSEOP_LOCAL5 -%token PARSEOP_LOCAL6 -%token PARSEOP_LOCAL7 -%token PARSEOP_LOCKRULE_LOCK -%token PARSEOP_LOCKRULE_NOLOCK -%token PARSEOP_LOR -%token PARSEOP_MATCH -%token PARSEOP_MATCHTYPE_MEQ -%token PARSEOP_MATCHTYPE_MGE -%token PARSEOP_MATCHTYPE_MGT -%token PARSEOP_MATCHTYPE_MLE -%token PARSEOP_MATCHTYPE_MLT -%token PARSEOP_MATCHTYPE_MTR -%token PARSEOP_MAXTYPE_FIXED -%token PARSEOP_MAXTYPE_NOTFIXED -%token PARSEOP_MEMORY24 -%token PARSEOP_MEMORY32 -%token PARSEOP_MEMORY32FIXED -%token PARSEOP_MEMTYPE_CACHEABLE -%token PARSEOP_MEMTYPE_NONCACHEABLE -%token PARSEOP_MEMTYPE_PREFETCHABLE -%token PARSEOP_MEMTYPE_WRITECOMBINING -%token PARSEOP_METHOD -%token PARSEOP_METHODCALL -%token PARSEOP_MID -%token PARSEOP_MINTYPE_FIXED -%token PARSEOP_MINTYPE_NOTFIXED -%token PARSEOP_MOD -%token PARSEOP_MULTIPLY -%token PARSEOP_MUTEX -%token PARSEOP_NAME -%token PARSEOP_NAMESEG -%token PARSEOP_NAMESTRING -%token PARSEOP_NAND -%token PARSEOP_NOOP -%token PARSEOP_NOR -%token PARSEOP_NOT -%token PARSEOP_NOTIFY -%token PARSEOP_OBJECTTYPE -%token PARSEOP_OBJECTTYPE_BFF -%token PARSEOP_OBJECTTYPE_BUF -%token PARSEOP_OBJECTTYPE_DDB -%token PARSEOP_OBJECTTYPE_DEV -%token PARSEOP_OBJECTTYPE_EVT -%token PARSEOP_OBJECTTYPE_FLD -%token PARSEOP_OBJECTTYPE_INT -%token PARSEOP_OBJECTTYPE_MTH -%token PARSEOP_OBJECTTYPE_MTX -%token PARSEOP_OBJECTTYPE_OPR -%token PARSEOP_OBJECTTYPE_PKG -%token PARSEOP_OBJECTTYPE_POW -%token PARSEOP_OBJECTTYPE_PRO -%token PARSEOP_OBJECTTYPE_STR -%token PARSEOP_OBJECTTYPE_THZ -%token PARSEOP_OBJECTTYPE_UNK -%token PARSEOP_OFFSET -%token PARSEOP_ONE -%token PARSEOP_ONES -%token PARSEOP_OPERATIONREGION -%token PARSEOP_OR -%token PARSEOP_PACKAGE -%token PARSEOP_PACKAGE_LENGTH -%token PARSEOP_POWERRESOURCE -%token PARSEOP_PROCESSOR -%token PARSEOP_QWORDCONST -%token PARSEOP_QWORDIO -%token PARSEOP_QWORDMEMORY -%token PARSEOP_QWORDSPACE -%token PARSEOP_RANGETYPE_ENTIRE -%token PARSEOP_RANGETYPE_ISAONLY -%token PARSEOP_RANGETYPE_NONISAONLY -%token PARSEOP_RAW_DATA -%token PARSEOP_READWRITETYPE_BOTH -%token PARSEOP_READWRITETYPE_READONLY -%token PARSEOP_REFOF -%token PARSEOP_REGIONSPACE_CMOS -%token PARSEOP_REGIONSPACE_EC -%token PARSEOP_REGIONSPACE_IO -%token PARSEOP_REGIONSPACE_MEM -%token PARSEOP_REGIONSPACE_PCI -%token PARSEOP_REGIONSPACE_PCIBAR -%token PARSEOP_REGIONSPACE_SMBUS -%token PARSEOP_REGISTER -%token PARSEOP_RELEASE -%token PARSEOP_RESERVED_BYTES -%token PARSEOP_RESET -%token PARSEOP_RESOURCETEMPLATE -%token PARSEOP_RESOURCETYPE_CONSUMER -%token PARSEOP_RESOURCETYPE_PRODUCER -%token PARSEOP_RETURN -%token PARSEOP_REVISION -%token PARSEOP_SCOPE -%token PARSEOP_SERIALIZERULE_NOTSERIAL -%token PARSEOP_SERIALIZERULE_SERIAL -%token PARSEOP_SHARETYPE_EXCLUSIVE -%token PARSEOP_SHARETYPE_SHARED -%token PARSEOP_SHIFTLEFT -%token PARSEOP_SHIFTRIGHT -%token PARSEOP_SIGNAL -%token PARSEOP_SIZEOF -%token PARSEOP_SLEEP -%token PARSEOP_STALL -%token PARSEOP_STARTDEPENDENTFN -%token PARSEOP_STARTDEPENDENTFN_NOPRI -%token PARSEOP_STORE -%token PARSEOP_STRING_LITERAL -%token PARSEOP_SUBTRACT -%token PARSEOP_SWITCH -%token PARSEOP_THERMALZONE -%token PARSEOP_TIMER -%token PARSEOP_TOBCD -%token PARSEOP_TOBUFFER -%token PARSEOP_TODECIMALSTRING -%token PARSEOP_TOHEXSTRING -%token PARSEOP_TOINTEGER -%token PARSEOP_TOSTRING -%token PARSEOP_TOUUID -%token PARSEOP_TRANSLATIONTYPE_DENSE -%token PARSEOP_TRANSLATIONTYPE_SPARSE -%token PARSEOP_TYPE_STATIC -%token PARSEOP_TYPE_TRANSLATION -%token PARSEOP_UNICODE -%token PARSEOP_UNLOAD -%token PARSEOP_UPDATERULE_ONES -%token PARSEOP_UPDATERULE_PRESERVE -%token PARSEOP_UPDATERULE_ZEROS -%token PARSEOP_VAR_PACKAGE -%token PARSEOP_VENDORLONG -%token PARSEOP_VENDORSHORT -%token PARSEOP_WAIT -%token PARSEOP_WHILE -%token PARSEOP_WORDBUSNUMBER -%token PARSEOP_WORDCONST -%token PARSEOP_WORDIO -%token PARSEOP_WORDSPACE -%token PARSEOP_XFERTYPE_8 -%token PARSEOP_XFERTYPE_8_16 -%token PARSEOP_XFERTYPE_16 -%token PARSEOP_XOR -%token PARSEOP_ZERO - - -/* - * Production names - */ - -%type ASLCode -%type DefinitionBlockTerm -%type TermList -%type Term -%type CompilerDirective -%type ObjectList -%type Object -%type DataObject -%type BufferData -%type PackageData -%type IntegerData -%type StringData -%type NamedObject -%type NameSpaceModifier -%type UserTerm -%type ArgList -%type TermArg -%type Target -%type RequiredTarget -%type SimpleTarget -%type BufferTermData -%type ParameterTypePackage -%type ParameterTypePackageList -%type ParameterTypesPackage -%type ParameterTypesPackageList - -%type Type1Opcode -%type Type2Opcode -%type Type2IntegerOpcode -%type Type2StringOpcode -%type Type2BufferOpcode -%type Type2BufferOrStringOpcode -%type Type3Opcode - -/* Obsolete %type Type4Opcode */ - -%type Type5Opcode -%type Type6Opcode - -%type LineTerm -%type IncludeTerm -%type IncludeCStyleTerm -%type ExternalTerm - -%type FieldUnitList -%type FieldUnit -%type FieldUnitEntry - -%type OffsetTerm -%type AccessAsTerm -%type OptionalAccessAttribTerm - - -/* Named Objects */ - -%type BankFieldTerm -%type CreateBitFieldTerm -%type CreateByteFieldTerm -%type CreateDWordFieldTerm -%type CreateFieldTerm -%type CreateQWordFieldTerm -%type CreateWordFieldTerm -%type DataRegionTerm -%type DeviceTerm -%type EventTerm -%type FieldTerm -%type FunctionTerm -%type IndexFieldTerm -%type MethodTerm -%type MutexTerm -%type OpRegionTerm -%type OpRegionSpaceIdTerm -%type PowerResTerm -%type ProcessorTerm -%type ThermalZoneTerm - - -/* Namespace modifiers */ - -%type AliasTerm -%type NameTerm -%type ScopeTerm - -/* Type 1 opcodes */ - -%type BreakTerm -%type BreakPointTerm -%type ContinueTerm -%type FatalTerm -%type IfElseTerm -%type IfTerm -%type ElseTerm -%type LoadTerm -%type NoOpTerm -%type NotifyTerm -%type ReleaseTerm -%type ResetTerm -%type ReturnTerm -%type SignalTerm -%type SleepTerm -%type StallTerm -%type SwitchTerm -%type CaseDefaultTermList -//%type CaseTermList -%type CaseTerm -%type DefaultTerm -%type UnloadTerm -%type WhileTerm - -/* Type 2 opcodes */ - -%type AcquireTerm -%type AddTerm -%type AndTerm -%type ConcatTerm -%type ConcatResTerm -%type CondRefOfTerm -%type CopyObjectTerm -%type DecTerm -%type DerefOfTerm -%type DivideTerm -%type FindSetLeftBitTerm -%type FindSetRightBitTerm -%type FromBCDTerm -%type IncTerm -%type IndexTerm -%type LAndTerm -%type LEqualTerm -%type LGreaterTerm -%type LGreaterEqualTerm -%type LLessTerm -%type LLessEqualTerm -%type LNotTerm -%type LNotEqualTerm -%type LoadTableTerm -%type LOrTerm -%type MatchTerm -%type MidTerm -%type ModTerm -%type MultiplyTerm -%type NAndTerm -%type NOrTerm -%type NotTerm -%type ObjectTypeTerm -%type OrTerm -%type RefOfTerm -%type ShiftLeftTerm -%type ShiftRightTerm -%type SizeOfTerm -%type StoreTerm -%type SubtractTerm -%type TimerTerm -%type ToBCDTerm -%type ToBufferTerm -%type ToDecimalStringTerm -%type ToHexStringTerm -%type ToIntegerTerm -%type ToStringTerm -%type WaitTerm -%type XOrTerm - -%type OptionalTermArg -%type OptionalReturnArg -%type OptionalListString - - -/* Keywords */ - -%type ObjectTypeKeyword -%type AccessTypeKeyword -%type AccessAttribKeyword -%type LockRuleKeyword -%type UpdateRuleKeyword -%type RegionSpaceKeyword -%type AddressSpaceKeyword -%type MatchOpKeyword -%type SerializeRuleKeyword -%type DMATypeKeyword -%type OptionalBusMasterKeyword -%type XferTypeKeyword -%type ResourceTypeKeyword -%type MinKeyword -%type MaxKeyword -%type DecodeKeyword -%type RangeTypeKeyword -%type MemTypeKeyword -%type OptionalReadWriteKeyword -%type InterruptTypeKeyword -%type InterruptLevel -%type ShareTypeKeyword -%type IODecodeKeyword -%type TypeKeyword -%type TranslationKeyword -%type AddressKeyword - -/* Types */ - -%type SuperName -%type ArgTerm -%type LocalTerm -%type DebugTerm - -%type Integer -%type ByteConst -%type WordConst -%type DWordConst -%type QWordConst -%type String - -%type ConstTerm -%type ByteConstExpr -%type WordConstExpr -%type DWordConstExpr -%type QWordConstExpr -%type ConstExprTerm - -%type BufferTerm -%type ByteList -%type DWordList - -%type PackageTerm -%type PackageList -%type PackageElement - -%type VarPackageLengthTerm - -/* Macros */ - -%type EISAIDTerm -%type ResourceTemplateTerm -%type ToUUIDTerm -%type UnicodeTerm -%type ResourceMacroList -%type ResourceMacroTerm - -%type DMATerm -%type DWordIOTerm -%type DWordMemoryTerm -%type DWordSpaceTerm -%type EndDependentFnTerm -%type ExtendedIOTerm -%type ExtendedMemoryTerm -%type ExtendedSpaceTerm -%type FixedIOTerm -%type InterruptTerm -%type IOTerm -%type IRQNoFlagsTerm -%type IRQTerm -%type Memory24Term -%type Memory32FixedTerm -%type Memory32Term -%type QWordIOTerm -%type QWordMemoryTerm -%type QWordSpaceTerm -%type RegisterTerm -%type StartDependentFnTerm -%type StartDependentFnNoPriTerm -%type VendorLongTerm -%type VendorShortTerm -%type WordBusNumberTerm -%type WordIOTerm -%type WordSpaceTerm - -%type NameString -%type NameSeg - - -/* Local types that help construct the AML, not in ACPI spec */ - -%type IncludeEndTerm -%type AmlPackageLengthTerm -%type OptionalByteConstExpr -%type OptionalDWordConstExpr -%type OptionalQWordConstExpr -%type OptionalSerializeRuleKeyword -%type OptionalResourceType_First -%type OptionalResourceType -%type OptionalMinType -%type OptionalMaxType -%type OptionalMemType -%type OptionalCount -%type OptionalDecodeType -%type OptionalRangeType -%type OptionalShareType -%type OptionalType -%type OptionalType_Last -%type OptionalTranslationType_Last -%type OptionalStringData -%type OptionalNameString -%type OptionalNameString_First -%type OptionalNameString_Last -%type OptionalAddressRange -%type OptionalObjectTypeKeyword -%type OptionalParameterTypePackage -%type OptionalParameterTypesPackage -%type OptionalReference -%type OptionalAccessSize - - -%type TermArgItem -%type NameStringItem - -%% - - -/******************************************************************************* - * - * Production rules start here - * - ******************************************************************************/ - -/* - * ASL Names - */ - - -/* - * Blocks, Data, and Opcodes - */ - -ASLCode - : DefinitionBlockTerm - | error {YYABORT; $$ = NULL;} - ; - -DefinitionBlockTerm - : PARSEOP_DEFINITIONBLOCK '(' {$$ = TrCreateLeafNode (PARSEOP_DEFINITIONBLOCK);} - String ',' - String ',' - ByteConst ',' - String ',' - String ',' - DWordConst - ')' {TrSetEndLineNumber ($3);} - '{' TermList '}' {$$ = TrLinkChildren ($3,7,$4,$6,$8,$10,$12,$14,$18);} - ; - -/* ACPI 3.0 -- allow semicolons between terms */ - -TermList - : {$$ = NULL;} - | TermList Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);} - | TermList ';' Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);} - ; - -Term - : Object {} - | Type1Opcode {} - | Type2Opcode {} - | Type2IntegerOpcode {} - | Type2StringOpcode {} - | Type2BufferOpcode {} - | Type2BufferOrStringOpcode {} - | error {$$ = AslDoError(); yyclearin;} - ; - -CompilerDirective - : IncludeTerm {} - | IncludeCStyleTerm {$$ = NULL;} - | LineTerm {$$ = NULL;} - | ExternalTerm {} - ; - -ObjectList - : {$$ = NULL;} - | ObjectList Object {$$ = TrLinkPeerNode ($1,$2);} - | error {$$ = AslDoError(); yyclearin;} - ; - -Object - : CompilerDirective {} - | NamedObject {} - | NameSpaceModifier {} - ; - -DataObject - : BufferData {} - | PackageData {} - | IntegerData {} - | StringData {} - ; - -BufferData - : Type5Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} - | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} - | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} - | BufferTerm {} - ; - -PackageData - : PackageTerm {} - ; - -IntegerData - : Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} - | Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} - | Integer {} - | ConstTerm {} - ; - -StringData - : Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} - | String {} - ; - -NamedObject - : BankFieldTerm {} - | CreateBitFieldTerm {} - | CreateByteFieldTerm {} - | CreateDWordFieldTerm {} - | CreateFieldTerm {} - | CreateQWordFieldTerm {} - | CreateWordFieldTerm {} - | DataRegionTerm {} - | DeviceTerm {} - | EventTerm {} - | FieldTerm {} - | FunctionTerm {} - | IndexFieldTerm {} - | MethodTerm {} - | MutexTerm {} - | OpRegionTerm {} - | PowerResTerm {} - | ProcessorTerm {} - | ThermalZoneTerm {} - ; - -NameSpaceModifier - : AliasTerm {} - | NameTerm {} - | ScopeTerm {} - ; - -UserTerm - : NameString '(' {TrUpdateNode (PARSEOP_METHODCALL, $1);} - ArgList ')' {$$ = TrLinkChildNode ($1,$4);} - ; - -ArgList - : {$$ = NULL;} - | TermArg - | ArgList ',' /* Allows a trailing comma at list end */ - | ArgList ',' - TermArg {$$ = TrLinkPeerNode ($1,$3);} - ; - -/* -Removed from TermArg due to reduce/reduce conflicts - | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} - | Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} - | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} - | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} - -*/ - -TermArg - : Type2Opcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} - | DataObject {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} - | NameString {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} - | ArgTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} - | LocalTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} - ; - -Target - : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */ - | ',' {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */ - | ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);} - ; - -RequiredTarget - : ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);} - ; - -SimpleTarget - : NameString {} - | LocalTerm {} - | ArgTerm {} - ; - -/* Rules for specifying the type of one method argument or return value */ - -ParameterTypePackage - : {$$ = NULL;} - | ObjectTypeKeyword {$$ = $1;} - | ParameterTypePackage ',' - ObjectTypeKeyword {$$ = TrLinkPeerNodes (2,$1,$3);} - ; - -ParameterTypePackageList - : {$$ = NULL;} - | ObjectTypeKeyword {$$ = $1;} - | '{' ParameterTypePackage '}' {$$ = $2;} - ; - -OptionalParameterTypePackage - : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);} - | ',' ParameterTypePackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);} - ; - -/* Rules for specifying the types for method arguments */ - -ParameterTypesPackage - : ParameterTypePackageList {$$ = $1;} - | ParameterTypesPackage ',' - ParameterTypePackageList {$$ = TrLinkPeerNodes (2,$1,$3);} - ; - -ParameterTypesPackageList - : {$$ = NULL;} - | ObjectTypeKeyword {$$ = $1;} - | '{' ParameterTypesPackage '}' {$$ = $2;} - ; - -OptionalParameterTypesPackage - : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);} - | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);} - ; - - -/* Opcode types */ - -Type1Opcode - : BreakTerm {} - | BreakPointTerm {} - | ContinueTerm {} - | FatalTerm {} - | IfElseTerm {} - | LoadTerm {} - | NoOpTerm {} - | NotifyTerm {} - | ReleaseTerm {} - | ResetTerm {} - | ReturnTerm {} - | SignalTerm {} - | SleepTerm {} - | StallTerm {} - | SwitchTerm {} - | UnloadTerm {} - | WhileTerm {} - ; - -Type2Opcode - : AcquireTerm {} - | CondRefOfTerm {} - | CopyObjectTerm {} - | DerefOfTerm {} - | ObjectTypeTerm {} - | RefOfTerm {} - | SizeOfTerm {} - | StoreTerm {} - | TimerTerm {} - | WaitTerm {} - | UserTerm {} - ; - -/* - * Type 3/4/5 opcodes - */ - -Type2IntegerOpcode /* "Type3" opcodes */ - : AddTerm {} - | AndTerm {} - | DecTerm {} - | DivideTerm {} - | FindSetLeftBitTerm {} - | FindSetRightBitTerm {} - | FromBCDTerm {} - | IncTerm {} - | IndexTerm {} - | LAndTerm {} - | LEqualTerm {} - | LGreaterTerm {} - | LGreaterEqualTerm {} - | LLessTerm {} - | LLessEqualTerm {} - | LNotTerm {} - | LNotEqualTerm {} - | LoadTableTerm {} - | LOrTerm {} - | MatchTerm {} - | ModTerm {} - | MultiplyTerm {} - | NAndTerm {} - | NOrTerm {} - | NotTerm {} - | OrTerm {} - | ShiftLeftTerm {} - | ShiftRightTerm {} - | SubtractTerm {} - | ToBCDTerm {} - | ToIntegerTerm {} - | XOrTerm {} - ; - -Type2StringOpcode /* "Type4" Opcodes */ - : ToDecimalStringTerm {} - | ToHexStringTerm {} - | ToStringTerm {} - ; - -Type2BufferOpcode /* "Type5" Opcodes */ - : ToBufferTerm {} - | ConcatResTerm {} - ; - -Type2BufferOrStringOpcode - : ConcatTerm {} - | MidTerm {} - ; - -/* - * A type 3 opcode evaluates to an Integer and cannot have a destination operand - */ - -Type3Opcode - : EISAIDTerm {} - ; - -/* Obsolete -Type4Opcode - : ConcatTerm {} - | ToDecimalStringTerm {} - | ToHexStringTerm {} - | MidTerm {} - | ToStringTerm {} - ; -*/ - - -Type5Opcode - : ResourceTemplateTerm {} - | UnicodeTerm {} - | ToUUIDTerm {} - ; - -Type6Opcode - : RefOfTerm {} - | DerefOfTerm {} - | IndexTerm {} - | UserTerm {} - ; - -IncludeTerm - : PARSEOP_INCLUDE '(' {$$ = TrCreateLeafNode (PARSEOP_INCLUDE);} - String ')' {$$ = TrLinkChildren ($3,1,$4);FlOpenIncludeFile ($4);} - TermList - IncludeEndTerm {$$ = TrLinkPeerNodes (3,$3,$7,$8);} - ; - -IncludeEndTerm - : PARSEOP_INCLUDE_END {$$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);} - ; - -IncludeCStyleTerm - : PARSEOP_INCLUDE_CSTYLE - String {FlOpenIncludeFile ($2);} - ; - -LineTerm - : PARSEOP_LINE_CSTYLE - Integer {FlSetLineNumber ($2);} - ; - -ExternalTerm - : PARSEOP_EXTERNAL '(' - NameString - OptionalObjectTypeKeyword - OptionalParameterTypePackage - OptionalParameterTypesPackage - ')' {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);} - | PARSEOP_EXTERNAL '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - - -/******* Named Objects *******************************************************/ - - -BankFieldTerm - : PARSEOP_BANKFIELD '(' {$$ = TrCreateLeafNode (PARSEOP_BANKFIELD);} - NameString - NameStringItem - TermArgItem - ',' AccessTypeKeyword - ',' LockRuleKeyword - ',' UpdateRuleKeyword - ')' '{' - FieldUnitList '}' {$$ = TrLinkChildren ($3,7,$4,$5,$6,$8,$10,$12,$15);} - | PARSEOP_BANKFIELD '(' - error ')' '{' error '}' {$$ = AslDoError(); yyclearin;} - ; - -FieldUnitList - : {$$ = NULL;} - | FieldUnit - | FieldUnitList ',' /* Allows a trailing comma at list end */ - | FieldUnitList ',' - FieldUnit {$$ = TrLinkPeerNode ($1,$3);} - ; - -FieldUnit - : FieldUnitEntry {} - | OffsetTerm {} - | AccessAsTerm {} - ; - -FieldUnitEntry - : ',' AmlPackageLengthTerm {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);} - | NameSeg ',' - AmlPackageLengthTerm {$$ = TrLinkChildNode ($1,$3);} - ; - -OffsetTerm - : PARSEOP_OFFSET '(' - AmlPackageLengthTerm - ')' {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);} - | PARSEOP_OFFSET '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -AccessAsTerm - : PARSEOP_ACCESSAS '(' - AccessTypeKeyword - OptionalAccessAttribTerm - ')' {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);} - | PARSEOP_ACCESSAS '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -CreateBitFieldTerm - : PARSEOP_CREATEBITFIELD '(' {$$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);} - TermArg - TermArgItem - NameStringItem - ')' {$$ = TrLinkChildren ($3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} - | PARSEOP_CREATEBITFIELD '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -CreateByteFieldTerm - : PARSEOP_CREATEBYTEFIELD '(' {$$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);} - TermArg - TermArgItem - NameStringItem - ')' {$$ = TrLinkChildren ($3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} - | PARSEOP_CREATEBYTEFIELD '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -CreateDWordFieldTerm - : PARSEOP_CREATEDWORDFIELD '(' {$$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);} - TermArg - TermArgItem - NameStringItem - ')' {$$ = TrLinkChildren ($3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} - | PARSEOP_CREATEDWORDFIELD '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -CreateFieldTerm - : PARSEOP_CREATEFIELD '(' {$$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);} - TermArg - TermArgItem - TermArgItem - NameStringItem - ')' {$$ = TrLinkChildren ($3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));} - | PARSEOP_CREATEFIELD '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -CreateQWordFieldTerm - : PARSEOP_CREATEQWORDFIELD '(' {$$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);} - TermArg - TermArgItem - NameStringItem - ')' {$$ = TrLinkChildren ($3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} - | PARSEOP_CREATEQWORDFIELD '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -CreateWordFieldTerm - : PARSEOP_CREATEWORDFIELD '(' {$$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);} - TermArg - TermArgItem - NameStringItem - ')' {$$ = TrLinkChildren ($3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} - | PARSEOP_CREATEWORDFIELD '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -DataRegionTerm - : PARSEOP_DATATABLEREGION '(' {$$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);} - NameString - TermArgItem - TermArgItem - TermArgItem - ')' {$$ = TrLinkChildren ($3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);} - | PARSEOP_DATATABLEREGION '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -DeviceTerm - : PARSEOP_DEVICE '(' {$$ = TrCreateLeafNode (PARSEOP_DEVICE);} - NameString - ')' '{' - ObjectList '}' {$$ = TrLinkChildren ($3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);} - | PARSEOP_DEVICE '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -EventTerm - : PARSEOP_EVENT '(' {$$ = TrCreateLeafNode (PARSEOP_EVENT);} - NameString - ')' {$$ = TrLinkChildren ($3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));} - | PARSEOP_EVENT '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -FieldTerm - : PARSEOP_FIELD '(' {$$ = TrCreateLeafNode (PARSEOP_FIELD);} - NameString - ',' AccessTypeKeyword - ',' LockRuleKeyword - ',' UpdateRuleKeyword - ')' '{' - FieldUnitList '}' {$$ = TrLinkChildren ($3,5,$4,$6,$8,$10,$13);} - | PARSEOP_FIELD '(' - error ')' '{' error '}' {$$ = AslDoError(); yyclearin;} - ; - -FunctionTerm - : PARSEOP_FUNCTION '(' {$$ = TrCreateLeafNode (PARSEOP_METHOD);} - NameString - OptionalParameterTypePackage - OptionalParameterTypesPackage - ')' '{' - TermList '}' {$$ = TrLinkChildren ($3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION), - TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0), - TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL), - TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);} - | PARSEOP_FUNCTION '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -IndexFieldTerm - : PARSEOP_INDEXFIELD '(' {$$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);} - NameString - NameStringItem - ',' AccessTypeKeyword - ',' LockRuleKeyword - ',' UpdateRuleKeyword - ')' '{' - FieldUnitList '}' {$$ = TrLinkChildren ($3,6,$4,$5,$7,$9,$11,$14);} - | PARSEOP_INDEXFIELD '(' - error ')' '{' error '}' {$$ = AslDoError(); yyclearin;} - ; - -MethodTerm - : PARSEOP_METHOD '(' {$$ = TrCreateLeafNode (PARSEOP_METHOD);} - NameString - OptionalByteConstExpr {$$ = UtCheckIntegerRange ($5, 0, 7);} - OptionalSerializeRuleKeyword - OptionalByteConstExpr - OptionalParameterTypePackage - OptionalParameterTypesPackage - ')' '{' - TermList '}' {$$ = TrLinkChildren ($3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);} - | PARSEOP_METHOD '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -MutexTerm - : PARSEOP_MUTEX '(' {$$ = TrCreateLeafNode (PARSEOP_MUTEX);} - NameString - ',' ByteConstExpr - ')' {$$ = TrLinkChildren ($3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);} - | PARSEOP_MUTEX '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -OpRegionTerm - : PARSEOP_OPERATIONREGION '(' {$$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);} - NameString - ',' OpRegionSpaceIdTerm - TermArgItem - TermArgItem - ')' {$$ = TrLinkChildren ($3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);} - | PARSEOP_OPERATIONREGION '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -OpRegionSpaceIdTerm - : RegionSpaceKeyword {} - | ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);} - ; - -PowerResTerm - : PARSEOP_POWERRESOURCE '(' {$$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);} - NameString - ',' ByteConstExpr - ',' WordConstExpr - ')' '{' - ObjectList '}' {$$ = TrLinkChildren ($3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);} - | PARSEOP_POWERRESOURCE '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -ProcessorTerm - : PARSEOP_PROCESSOR '(' {$$ = TrCreateLeafNode (PARSEOP_PROCESSOR);} - NameString - ',' ByteConstExpr - OptionalDWordConstExpr - OptionalByteConstExpr - ')' '{' - ObjectList '}' {$$ = TrLinkChildren ($3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);} - | PARSEOP_PROCESSOR '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -ThermalZoneTerm - : PARSEOP_THERMALZONE '(' {$$ = TrCreateLeafNode (PARSEOP_THERMALZONE);} - NameString - ')' '{' - ObjectList '}' {$$ = TrLinkChildren ($3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);} - | PARSEOP_THERMALZONE '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - - -/******* Namespace modifiers *************************************************/ - - -AliasTerm - : PARSEOP_ALIAS '(' {$$ = TrCreateLeafNode (PARSEOP_ALIAS);} - NameString - NameStringItem - ')' {$$ = TrLinkChildren ($3,2,$4,TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));} - | PARSEOP_ALIAS '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -NameTerm - : PARSEOP_NAME '(' {$$ = TrCreateLeafNode (PARSEOP_NAME);} - NameString - ',' DataObject - ')' {$$ = TrLinkChildren ($3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);} - | PARSEOP_NAME '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -ScopeTerm - : PARSEOP_SCOPE '(' {$$ = TrCreateLeafNode (PARSEOP_SCOPE);} - NameString - ')' '{' - ObjectList '}' {$$ = TrLinkChildren ($3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);} - | PARSEOP_SCOPE '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - - -/******* Type 1 opcodes *******************************************************/ - - -BreakTerm - : PARSEOP_BREAK {$$ = TrCreateNode (PARSEOP_BREAK, 0);} - ; - -BreakPointTerm - : PARSEOP_BREAKPOINT {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);} - ; - -ContinueTerm - : PARSEOP_CONTINUE {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);} - ; - -FatalTerm - : PARSEOP_FATAL '(' {$$ = TrCreateLeafNode (PARSEOP_FATAL);} - ByteConstExpr - ',' DWordConstExpr - TermArgItem - ')' {$$ = TrLinkChildren ($3,3,$4,$6,$7);} - | PARSEOP_FATAL '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -IfElseTerm - : IfTerm ElseTerm {$$ = TrLinkPeerNode ($1,$2);} - ; - -IfTerm - : PARSEOP_IF '(' {$$ = TrCreateLeafNode (PARSEOP_IF);} - TermArg - ')' '{' - TermList '}' {$$ = TrLinkChildren ($3,2,$4,$7);} - - | PARSEOP_IF '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -ElseTerm - : {$$ = NULL;} - | PARSEOP_ELSE '{' {$$ = TrCreateLeafNode (PARSEOP_ELSE);} - TermList '}' {$$ = TrLinkChildren ($3,1,$4);} - - | PARSEOP_ELSE '{' - error '}' {$$ = AslDoError(); yyclearin;} - - | PARSEOP_ELSE - error {$$ = AslDoError(); yyclearin;} - - | PARSEOP_ELSEIF '(' {$$ = TrCreateLeafNode (PARSEOP_ELSE);} - TermArg {$$ = TrCreateLeafNode (PARSEOP_IF);} - ')' '{' - TermList '}' {$$ = TrLinkChildren ($5,2,$4,$8);} - ElseTerm {$$ = TrLinkPeerNode ($5,$11);} - {$$ = TrLinkChildren ($3,1,$5);} - - | PARSEOP_ELSEIF '(' - error ')' {$$ = AslDoError(); yyclearin;} - - | PARSEOP_ELSEIF - error {$$ = AslDoError(); yyclearin;} - ; - -LoadTerm - : PARSEOP_LOAD '(' {$$ = TrCreateLeafNode (PARSEOP_LOAD);} - NameString - RequiredTarget - ')' {$$ = TrLinkChildren ($3,2,$4,$5);} - | PARSEOP_LOAD '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -NoOpTerm - : PARSEOP_NOOP {$$ = TrCreateNode (PARSEOP_NOOP, 0);} - ; - -NotifyTerm - : PARSEOP_NOTIFY '(' {$$ = TrCreateLeafNode (PARSEOP_NOTIFY);} - SuperName - TermArgItem - ')' {$$ = TrLinkChildren ($3,2,$4,$5);} - | PARSEOP_NOTIFY '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -ReleaseTerm - : PARSEOP_RELEASE '(' {$$ = TrCreateLeafNode (PARSEOP_RELEASE);} - SuperName - ')' {$$ = TrLinkChildren ($3,1,$4);} - | PARSEOP_RELEASE '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -ResetTerm - : PARSEOP_RESET '(' {$$ = TrCreateLeafNode (PARSEOP_RESET);} - SuperName - ')' {$$ = TrLinkChildren ($3,1,$4);} - | PARSEOP_RESET '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -ReturnTerm - : PARSEOP_RETURN '(' {$$ = TrCreateLeafNode (PARSEOP_RETURN);} - OptionalReturnArg - ')' {$$ = TrLinkChildren ($3,1,$4);} - | PARSEOP_RETURN {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrCreateLeafNode (PARSEOP_ZERO));} - | PARSEOP_RETURN '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -SignalTerm - : PARSEOP_SIGNAL '(' {$$ = TrCreateLeafNode (PARSEOP_SIGNAL);} - SuperName - ')' {$$ = TrLinkChildren ($3,1,$4);} - | PARSEOP_SIGNAL '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -SleepTerm - : PARSEOP_SLEEP '(' {$$ = TrCreateLeafNode (PARSEOP_SLEEP);} - TermArg - ')' {$$ = TrLinkChildren ($3,1,$4);} - | PARSEOP_SLEEP '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -StallTerm - : PARSEOP_STALL '(' {$$ = TrCreateLeafNode (PARSEOP_STALL);} - TermArg - ')' {$$ = TrLinkChildren ($3,1,$4);} - | PARSEOP_STALL '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -SwitchTerm - : PARSEOP_SWITCH '(' {$$ = TrCreateLeafNode (PARSEOP_SWITCH);} - TermArg - ')' '{' - CaseDefaultTermList '}' - {$$ = TrLinkChildren ($3,2,$4,$7);} - | PARSEOP_SWITCH '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -/* - * Case-Default list; allow only one Default term and unlimited Case terms - */ - -CaseDefaultTermList - : {$$ = NULL;} - | CaseTerm {} - | DefaultTerm {} - | CaseDefaultTermList - CaseTerm {$$ = TrLinkPeerNode ($1,$2);} - | CaseDefaultTermList - DefaultTerm {$$ = TrLinkPeerNode ($1,$2);} - -/* Original - attempts to force zero or one default term within the switch */ - -/* -CaseDefaultTermList - : {$$ = NULL;} - | CaseTermList - DefaultTerm - CaseTermList {$$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));} - | CaseTermList - CaseTerm {$$ = TrLinkPeerNode ($1,$2);} - ; - -CaseTermList - : {$$ = NULL;} - | CaseTerm {} - | CaseTermList - CaseTerm {$$ = TrLinkPeerNode ($1,$2);} - ; -*/ - -CaseTerm - : PARSEOP_CASE '(' {$$ = TrCreateLeafNode (PARSEOP_CASE);} - DataObject - ')' '{' - TermList '}' {$$ = TrLinkChildren ($3,2,$4,$7);} - | PARSEOP_CASE '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -DefaultTerm - : PARSEOP_DEFAULT '{' {$$ = TrCreateLeafNode (PARSEOP_DEFAULT);} - TermList '}' {$$ = TrLinkChildren ($3,1,$4);} - | PARSEOP_DEFAULT '{' - error '}' {$$ = AslDoError(); yyclearin;} - ; - -UnloadTerm - : PARSEOP_UNLOAD '(' {$$ = TrCreateLeafNode (PARSEOP_UNLOAD);} - SuperName - ')' {$$ = TrLinkChildren ($3,1,$4);} - | PARSEOP_UNLOAD '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -WhileTerm - : PARSEOP_WHILE '(' {$$ = TrCreateLeafNode (PARSEOP_WHILE);} - TermArg - ')' '{' TermList '}' - {$$ = TrLinkChildren ($3,2,$4,$7);} - | PARSEOP_WHILE '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - - -/******* Type 2 opcodes *******************************************************/ - -AcquireTerm - : PARSEOP_ACQUIRE '(' {$$ = TrCreateLeafNode (PARSEOP_ACQUIRE);} - SuperName - ',' WordConstExpr - ')' {$$ = TrLinkChildren ($3,2,$4,$6);} - | PARSEOP_ACQUIRE '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -AddTerm - : PARSEOP_ADD '(' {$$ = TrCreateLeafNode (PARSEOP_ADD);} - TermArg - TermArgItem - Target - ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} - | PARSEOP_ADD '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -AndTerm - : PARSEOP_AND '(' {$$ = TrCreateLeafNode (PARSEOP_AND);} - TermArg - TermArgItem - Target - ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} - | PARSEOP_AND '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -ConcatTerm - : PARSEOP_CONCATENATE '(' {$$ = TrCreateLeafNode (PARSEOP_CONCATENATE);} - TermArg - TermArgItem - Target - ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} - | PARSEOP_CONCATENATE '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -ConcatResTerm - : PARSEOP_CONCATENATERESTEMPLATE '(' {$$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);} - TermArg - TermArgItem - Target - ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} - | PARSEOP_CONCATENATERESTEMPLATE '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -CondRefOfTerm - : PARSEOP_CONDREFOF '(' {$$ = TrCreateLeafNode (PARSEOP_CONDREFOF);} - SuperName - Target - ')' {$$ = TrLinkChildren ($3,2,$4,$5);} - | PARSEOP_CONDREFOF '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -CopyObjectTerm - : PARSEOP_COPYOBJECT '(' {$$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);} - TermArg - ',' SimpleTarget - ')' {$$ = TrLinkChildren ($3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));} - | PARSEOP_COPYOBJECT '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -DecTerm - : PARSEOP_DECREMENT '(' {$$ = TrCreateLeafNode (PARSEOP_DECREMENT);} - SuperName - ')' {$$ = TrLinkChildren ($3,1,$4);} - | PARSEOP_DECREMENT '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -DerefOfTerm - : PARSEOP_DEREFOF '(' {$$ = TrCreateLeafNode (PARSEOP_DEREFOF);} - TermArg - ')' {$$ = TrLinkChildren ($3,1,$4);} - | PARSEOP_DEREFOF '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -DivideTerm - : PARSEOP_DIVIDE '(' {$$ = TrCreateLeafNode (PARSEOP_DIVIDE);} - TermArg - TermArgItem - Target - Target - ')' {$$ = TrLinkChildren ($3,4,$4,$5,$6,$7);} - | PARSEOP_DIVIDE '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -FindSetLeftBitTerm - : PARSEOP_FINDSETLEFTBIT '(' {$$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);} - TermArg - Target - ')' {$$ = TrLinkChildren ($3,2,$4,$5);} - | PARSEOP_FINDSETLEFTBIT '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -FindSetRightBitTerm - : PARSEOP_FINDSETRIGHTBIT '(' {$$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);} - TermArg - Target - ')' {$$ = TrLinkChildren ($3,2,$4,$5);} - | PARSEOP_FINDSETRIGHTBIT '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -FromBCDTerm - : PARSEOP_FROMBCD '(' {$$ = TrCreateLeafNode (PARSEOP_FROMBCD);} - TermArg - Target - ')' {$$ = TrLinkChildren ($3,2,$4,$5);} - | PARSEOP_FROMBCD '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -IncTerm - : PARSEOP_INCREMENT '(' {$$ = TrCreateLeafNode (PARSEOP_INCREMENT);} - SuperName - ')' {$$ = TrLinkChildren ($3,1,$4);} - | PARSEOP_INCREMENT '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -IndexTerm - : PARSEOP_INDEX '(' {$$ = TrCreateLeafNode (PARSEOP_INDEX);} - TermArg - TermArgItem - Target - ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} - | PARSEOP_INDEX '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -LAndTerm - : PARSEOP_LAND '(' {$$ = TrCreateLeafNode (PARSEOP_LAND);} - TermArg - TermArgItem - ')' {$$ = TrLinkChildren ($3,2,$4,$5);} - | PARSEOP_LAND '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -LEqualTerm - : PARSEOP_LEQUAL '(' {$$ = TrCreateLeafNode (PARSEOP_LEQUAL);} - TermArg - TermArgItem - ')' {$$ = TrLinkChildren ($3,2,$4,$5);} - | PARSEOP_LEQUAL '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -LGreaterTerm - : PARSEOP_LGREATER '(' {$$ = TrCreateLeafNode (PARSEOP_LGREATER);} - TermArg - TermArgItem - ')' {$$ = TrLinkChildren ($3,2,$4,$5);} - | PARSEOP_LGREATER '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -LGreaterEqualTerm - : PARSEOP_LGREATEREQUAL '(' {$$ = TrCreateLeafNode (PARSEOP_LLESS);} - TermArg - TermArgItem - ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($3,2,$4,$5));} - | PARSEOP_LGREATEREQUAL '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -LLessTerm - : PARSEOP_LLESS '(' {$$ = TrCreateLeafNode (PARSEOP_LLESS);} - TermArg - TermArgItem - ')' {$$ = TrLinkChildren ($3,2,$4,$5);} - | PARSEOP_LLESS '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -LLessEqualTerm - : PARSEOP_LLESSEQUAL '(' {$$ = TrCreateLeafNode (PARSEOP_LGREATER);} - TermArg - TermArgItem - ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($3,2,$4,$5));} - | PARSEOP_LLESSEQUAL '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -LNotTerm - : PARSEOP_LNOT '(' {$$ = TrCreateLeafNode (PARSEOP_LNOT);} - TermArg - ')' {$$ = TrLinkChildren ($3,1,$4);} - | PARSEOP_LNOT '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -LNotEqualTerm - : PARSEOP_LNOTEQUAL '(' {$$ = TrCreateLeafNode (PARSEOP_LEQUAL);} - TermArg - TermArgItem - ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($3,2,$4,$5));} - | PARSEOP_LNOTEQUAL '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -LoadTableTerm - : PARSEOP_LOADTABLE '(' {$$ = TrCreateLeafNode (PARSEOP_LOADTABLE);} - TermArg - TermArgItem - TermArgItem - OptionalListString - OptionalListString - OptionalReference - ')' {$$ = TrLinkChildren ($3,6,$4,$5,$6,$7,$8,$9);} - | PARSEOP_LOADTABLE '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -LOrTerm - : PARSEOP_LOR '(' {$$ = TrCreateLeafNode (PARSEOP_LOR);} - TermArg - TermArgItem - ')' {$$ = TrLinkChildren ($3,2,$4,$5);} - | PARSEOP_LOR '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -MatchTerm - : PARSEOP_MATCH '(' {$$ = TrCreateLeafNode (PARSEOP_MATCH);} - TermArg - ',' MatchOpKeyword - TermArgItem - ',' MatchOpKeyword - TermArgItem - TermArgItem - ')' {$$ = TrLinkChildren ($3,6,$4,$6,$7,$9,$10,$11);} - | PARSEOP_MATCH '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -MidTerm - : PARSEOP_MID '(' {$$ = TrCreateLeafNode (PARSEOP_MID);} - TermArg - TermArgItem - TermArgItem - Target - ')' {$$ = TrLinkChildren ($3,4,$4,$5,$6,$7);} - | PARSEOP_MID '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -ModTerm - : PARSEOP_MOD '(' {$$ = TrCreateLeafNode (PARSEOP_MOD);} - TermArg - TermArgItem - Target - ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} - | PARSEOP_MOD '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -MultiplyTerm - : PARSEOP_MULTIPLY '(' {$$ = TrCreateLeafNode (PARSEOP_MULTIPLY);} - TermArg - TermArgItem - Target - ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} - | PARSEOP_MULTIPLY '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -NAndTerm - : PARSEOP_NAND '(' {$$ = TrCreateLeafNode (PARSEOP_NAND);} - TermArg - TermArgItem - Target - ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} - | PARSEOP_NAND '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -NOrTerm - : PARSEOP_NOR '(' {$$ = TrCreateLeafNode (PARSEOP_NOR);} - TermArg - TermArgItem - Target - ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} - | PARSEOP_NOR '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -NotTerm - : PARSEOP_NOT '(' {$$ = TrCreateLeafNode (PARSEOP_NOT);} - TermArg - Target - ')' {$$ = TrLinkChildren ($3,2,$4,$5);} - | PARSEOP_NOT '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -ObjectTypeTerm - : PARSEOP_OBJECTTYPE '(' {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);} - SuperName - ')' {$$ = TrLinkChildren ($3,1,$4);} - | PARSEOP_OBJECTTYPE '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -OrTerm - : PARSEOP_OR '(' {$$ = TrCreateLeafNode (PARSEOP_OR);} - TermArg - TermArgItem - Target - ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} - | PARSEOP_OR '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -/* - * In RefOf, the node isn't really a target, but we can't keep track of it after - * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.) - */ -RefOfTerm - : PARSEOP_REFOF '(' {$$ = TrCreateLeafNode (PARSEOP_REFOF);} - SuperName - ')' {$$ = TrLinkChildren ($3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));} - | PARSEOP_REFOF '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -ShiftLeftTerm - : PARSEOP_SHIFTLEFT '(' {$$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);} - TermArg - TermArgItem - Target - ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} - | PARSEOP_SHIFTLEFT '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -ShiftRightTerm - : PARSEOP_SHIFTRIGHT '(' {$$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);} - TermArg - TermArgItem - Target - ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} - | PARSEOP_SHIFTRIGHT '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -SizeOfTerm - : PARSEOP_SIZEOF '(' {$$ = TrCreateLeafNode (PARSEOP_SIZEOF);} - SuperName - ')' {$$ = TrLinkChildren ($3,1,$4);} - | PARSEOP_SIZEOF '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -StoreTerm - : PARSEOP_STORE '(' {$$ = TrCreateLeafNode (PARSEOP_STORE);} - TermArg - ',' SuperName - ')' {$$ = TrLinkChildren ($3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));} - | PARSEOP_STORE '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -SubtractTerm - : PARSEOP_SUBTRACT '(' {$$ = TrCreateLeafNode (PARSEOP_SUBTRACT);} - TermArg - TermArgItem - Target - ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} - | PARSEOP_SUBTRACT '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -TimerTerm - : PARSEOP_TIMER '(' {$$ = TrCreateLeafNode (PARSEOP_TIMER);} - ')' {$$ = TrLinkChildren ($3,0);} - | PARSEOP_TIMER {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);} - | PARSEOP_TIMER '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -ToBCDTerm - : PARSEOP_TOBCD '(' {$$ = TrCreateLeafNode (PARSEOP_TOBCD);} - TermArg - Target - ')' {$$ = TrLinkChildren ($3,2,$4,$5);} - | PARSEOP_TOBCD '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -ToBufferTerm - : PARSEOP_TOBUFFER '(' {$$ = TrCreateLeafNode (PARSEOP_TOBUFFER);} - TermArg - Target - ')' {$$ = TrLinkChildren ($3,2,$4,$5);} - | PARSEOP_TOBUFFER '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -ToDecimalStringTerm - : PARSEOP_TODECIMALSTRING '(' {$$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);} - TermArg - Target - ')' {$$ = TrLinkChildren ($3,2,$4,$5);} - | PARSEOP_TODECIMALSTRING '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -ToHexStringTerm - : PARSEOP_TOHEXSTRING '(' {$$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);} - TermArg - Target - ')' {$$ = TrLinkChildren ($3,2,$4,$5);} - | PARSEOP_TOHEXSTRING '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -ToIntegerTerm - : PARSEOP_TOINTEGER '(' {$$ = TrCreateLeafNode (PARSEOP_TOINTEGER);} - TermArg - Target - ')' {$$ = TrLinkChildren ($3,2,$4,$5);} - | PARSEOP_TOINTEGER '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -ToStringTerm - : PARSEOP_TOSTRING '(' {$$ = TrCreateLeafNode (PARSEOP_TOSTRING);} - TermArg - OptionalCount - Target - ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} - | PARSEOP_TOSTRING '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -ToUUIDTerm - : PARSEOP_TOUUID '(' - StringData ')' {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);} - | PARSEOP_TOUUID '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -WaitTerm - : PARSEOP_WAIT '(' {$$ = TrCreateLeafNode (PARSEOP_WAIT);} - SuperName - TermArgItem - ')' {$$ = TrLinkChildren ($3,2,$4,$5);} - | PARSEOP_WAIT '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -XOrTerm - : PARSEOP_XOR '(' {$$ = TrCreateLeafNode (PARSEOP_XOR);} - TermArg - TermArgItem - Target - ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} - | PARSEOP_XOR '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - - -/******* Keywords *************************************************************/ - - -ObjectTypeKeyword - : PARSEOP_OBJECTTYPE_UNK {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);} - | PARSEOP_OBJECTTYPE_INT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);} - | PARSEOP_OBJECTTYPE_STR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);} - | PARSEOP_OBJECTTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);} - | PARSEOP_OBJECTTYPE_PKG {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);} - | PARSEOP_OBJECTTYPE_FLD {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);} - | PARSEOP_OBJECTTYPE_DEV {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);} - | PARSEOP_OBJECTTYPE_EVT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);} - | PARSEOP_OBJECTTYPE_MTH {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);} - | PARSEOP_OBJECTTYPE_MTX {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);} - | PARSEOP_OBJECTTYPE_OPR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);} - | PARSEOP_OBJECTTYPE_POW {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);} - | PARSEOP_OBJECTTYPE_PRO {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);} - | PARSEOP_OBJECTTYPE_THZ {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);} - | PARSEOP_OBJECTTYPE_BFF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);} - | PARSEOP_OBJECTTYPE_DDB {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);} - ; - -AccessTypeKeyword - : PARSEOP_ACCESSTYPE_ANY {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_ANY);} - | PARSEOP_ACCESSTYPE_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BYTE);} - | PARSEOP_ACCESSTYPE_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_WORD);} - | PARSEOP_ACCESSTYPE_DWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_DWORD);} - | PARSEOP_ACCESSTYPE_QWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_QWORD);} - | PARSEOP_ACCESSTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);} - ; - -AccessAttribKeyword - : PARSEOP_ACCESSATTRIB_QUICK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );} - | PARSEOP_ACCESSATTRIB_SND_RCV {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);} - | PARSEOP_ACCESSATTRIB_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);} - | PARSEOP_ACCESSATTRIB_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);} - | PARSEOP_ACCESSATTRIB_BLOCK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);} - | PARSEOP_ACCESSATTRIB_WORD_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);} - | PARSEOP_ACCESSATTRIB_BLOCK_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);} - ; - -LockRuleKeyword - : PARSEOP_LOCKRULE_LOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);} - | PARSEOP_LOCKRULE_NOLOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);} - ; - -UpdateRuleKeyword - : PARSEOP_UPDATERULE_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);} - | PARSEOP_UPDATERULE_ONES {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);} - | PARSEOP_UPDATERULE_ZEROS {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);} - ; - - -RegionSpaceKeyword - : PARSEOP_REGIONSPACE_IO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);} - | PARSEOP_REGIONSPACE_MEM {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);} - | PARSEOP_REGIONSPACE_PCI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);} - | PARSEOP_REGIONSPACE_EC {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);} - | PARSEOP_REGIONSPACE_SMBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);} - | PARSEOP_REGIONSPACE_CMOS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);} - | PARSEOP_REGIONSPACE_PCIBAR {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);} - ; - -AddressSpaceKeyword - : ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);} - | RegionSpaceKeyword {} - | PARSEOP_ADDRESSSPACE_FFIXEDHW {$$ = TrCreateLeafNode (PARSEOP_ADDRESSSPACE_FFIXEDHW);} - ; - - -SerializeRuleKeyword - : PARSEOP_SERIALIZERULE_SERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);} - | PARSEOP_SERIALIZERULE_NOTSERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);} - ; - -MatchOpKeyword - : PARSEOP_MATCHTYPE_MTR {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR);} - | PARSEOP_MATCHTYPE_MEQ {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ);} - | PARSEOP_MATCHTYPE_MLE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLE);} - | PARSEOP_MATCHTYPE_MLT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLT);} - | PARSEOP_MATCHTYPE_MGE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGE);} - | PARSEOP_MATCHTYPE_MGT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);} - ; - -DMATypeKeyword - : PARSEOP_DMATYPE_A {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);} - | PARSEOP_DMATYPE_COMPATIBILITY {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);} - | PARSEOP_DMATYPE_B {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);} - | PARSEOP_DMATYPE_F {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);} - ; - -XferTypeKeyword - : PARSEOP_XFERTYPE_8 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);} - | PARSEOP_XFERTYPE_8_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);} - | PARSEOP_XFERTYPE_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);} - ; - -ResourceTypeKeyword - : PARSEOP_RESOURCETYPE_CONSUMER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} - | PARSEOP_RESOURCETYPE_PRODUCER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);} - ; - -MinKeyword - : PARSEOP_MINTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);} - | PARSEOP_MINTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);} - ; - -MaxKeyword - : PARSEOP_MAXTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);} - | PARSEOP_MAXTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);} - ; - -DecodeKeyword - : PARSEOP_DECODETYPE_POS {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);} - | PARSEOP_DECODETYPE_SUB {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);} - ; - -RangeTypeKeyword - : PARSEOP_RANGETYPE_ISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ISAONLY);} - | PARSEOP_RANGETYPE_NONISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_NONISAONLY);} - | PARSEOP_RANGETYPE_ENTIRE {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);} - ; - -MemTypeKeyword - : PARSEOP_MEMTYPE_CACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);} - | PARSEOP_MEMTYPE_WRITECOMBINING {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);} - | PARSEOP_MEMTYPE_PREFETCHABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);} - | PARSEOP_MEMTYPE_NONCACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);} - ; - -OptionalReadWriteKeyword - : {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);} - | PARSEOP_READWRITETYPE_BOTH {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);} - | PARSEOP_READWRITETYPE_READONLY {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);} - ; - -InterruptTypeKeyword - : PARSEOP_INTTYPE_EDGE {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);} - | PARSEOP_INTTYPE_LEVEL {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);} - ; - -InterruptLevel - : PARSEOP_INTLEVEL_ACTIVEHIGH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);} - | PARSEOP_INTLEVEL_ACTIVELOW {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);} - ; - -ShareTypeKeyword - : PARSEOP_SHARETYPE_SHARED {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);} - | PARSEOP_SHARETYPE_EXCLUSIVE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);} - ; - -IODecodeKeyword - : PARSEOP_IODECODETYPE_16 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);} - | PARSEOP_IODECODETYPE_10 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);} - ; - -TypeKeyword - : PARSEOP_TYPE_TRANSLATION {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);} - | PARSEOP_TYPE_STATIC {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);} - ; - -TranslationKeyword - : PARSEOP_TRANSLATIONTYPE_SPARSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);} - | PARSEOP_TRANSLATIONTYPE_DENSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);} - ; - -AddressKeyword - : PARSEOP_ADDRESSTYPE_MEMORY {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);} - | PARSEOP_ADDRESSTYPE_RESERVED {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);} - | PARSEOP_ADDRESSTYPE_NVS {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);} - | PARSEOP_ADDRESSTYPE_ACPI {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);} - ; - - -/******* Miscellaneous Types **************************************************/ - - -SuperName - : NameString {} - | ArgTerm {} - | LocalTerm {} - | DebugTerm {} - | Type6Opcode {} -/* | UserTerm {} */ /* Caused reduce/reduce with Type6Opcode->UserTerm */ - ; - -ArgTerm - : PARSEOP_ARG0 {$$ = TrCreateLeafNode (PARSEOP_ARG0);} - | PARSEOP_ARG1 {$$ = TrCreateLeafNode (PARSEOP_ARG1);} - | PARSEOP_ARG2 {$$ = TrCreateLeafNode (PARSEOP_ARG2);} - | PARSEOP_ARG3 {$$ = TrCreateLeafNode (PARSEOP_ARG3);} - | PARSEOP_ARG4 {$$ = TrCreateLeafNode (PARSEOP_ARG4);} - | PARSEOP_ARG5 {$$ = TrCreateLeafNode (PARSEOP_ARG5);} - | PARSEOP_ARG6 {$$ = TrCreateLeafNode (PARSEOP_ARG6);} - ; - -LocalTerm - : PARSEOP_LOCAL0 {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);} - | PARSEOP_LOCAL1 {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);} - | PARSEOP_LOCAL2 {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);} - | PARSEOP_LOCAL3 {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);} - | PARSEOP_LOCAL4 {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);} - | PARSEOP_LOCAL5 {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);} - | PARSEOP_LOCAL6 {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);} - | PARSEOP_LOCAL7 {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);} - ; - -DebugTerm - : PARSEOP_DEBUG {$$ = TrCreateLeafNode (PARSEOP_DEBUG);} - ; - - -ByteConst - : Integer {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);} - ; - -WordConst - : Integer {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);} - ; - -DWordConst - : Integer {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);} - ; - -QWordConst - : Integer {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);} - ; - -Integer - : PARSEOP_INTEGER {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);} - ; - -String - : PARSEOP_STRING_LITERAL {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);} - ; - -ConstTerm - : ConstExprTerm {} - | PARSEOP_REVISION {$$ = TrCreateLeafNode (PARSEOP_REVISION);} - ; - -ByteConstExpr - : Type3Opcode {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);} - | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);} - | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);} - | ByteConst {} - ; - -WordConstExpr - : Type3Opcode {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);} - | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);} - | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);} - | WordConst {} - ; - -DWordConstExpr - : Type3Opcode {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);} - | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);} - | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);} - | DWordConst {} - ; - -QWordConstExpr - : Type3Opcode {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);} - | Type2IntegerOpcode {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);} - | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);} - | QWordConst {} - ; - -ConstExprTerm - : PARSEOP_ZERO {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);} - | PARSEOP_ONE {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);} - | PARSEOP_ONES {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_INTEGER_MAX);} - ; - -/* OptionalCount must appear before ByteList or an incorrect reduction will result */ - -OptionalCount - : {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */ - | ',' {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */ - | ',' TermArg {$$ = $2;} - ; - - -BufferTerm - : PARSEOP_BUFFER '(' {$$ = TrCreateLeafNode (PARSEOP_BUFFER);} - OptionalTermArg - ')' '{' - BufferTermData '}' {$$ = TrLinkChildren ($3,2,$4,$7);} - | PARSEOP_BUFFER '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -BufferTermData - : ByteList {} - | StringData {} - ; - -ByteList - : {$$ = NULL;} - | ByteConstExpr - | ByteList ',' /* Allows a trailing comma at list end */ - | ByteList ',' - ByteConstExpr {$$ = TrLinkPeerNode ($1,$3);} - ; - -DWordList - : {$$ = NULL;} - | DWordConstExpr - | DWordList ',' /* Allows a trailing comma at list end */ - | DWordList ',' - DWordConstExpr {$$ = TrLinkPeerNode ($1,$3);} - ; - -PackageTerm - : PARSEOP_PACKAGE '(' {$$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);} - VarPackageLengthTerm - ')' '{' - PackageList '}' {$$ = TrLinkChildren ($3,2,$4,$7);} - | PARSEOP_PACKAGE '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -VarPackageLengthTerm - : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);} - | TermArg {$$ = $1;} - ; - -PackageList - : {$$ = NULL;} - | PackageElement - | PackageList ',' /* Allows a trailing comma at list end */ - | PackageList ',' - PackageElement {$$ = TrLinkPeerNode ($1,$3);} - ; - -PackageElement - : DataObject {} - | NameString {} - ; - -EISAIDTerm - : PARSEOP_EISAID '(' - StringData ')' {$$ = TrUpdateNode (PARSEOP_EISAID, $3);} - | PARSEOP_EISAID '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - - -/******* Resources and Memory ***********************************************/ - - -/* - * Note: Create two default nodes to allow conversion to a Buffer AML opcode - * Also, insert the EndTag at the end of the template. - */ -ResourceTemplateTerm - : PARSEOP_RESOURCETEMPLATE '(' ')' - '{' - ResourceMacroList '}' {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4, - TrCreateLeafNode (PARSEOP_DEFAULT_ARG), - TrCreateLeafNode (PARSEOP_DEFAULT_ARG), - $5, - TrCreateLeafNode (PARSEOP_ENDTAG));} - ; - -UnicodeTerm - : PARSEOP_UNICODE '(' {$$ = TrCreateLeafNode (PARSEOP_UNICODE);} - StringData - ')' {$$ = TrLinkChildren ($3,2,0,$4);} - | PARSEOP_UNICODE '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -ResourceMacroList - : {$$ = NULL;} - | ResourceMacroList - ResourceMacroTerm {$$ = TrLinkPeerNode ($1,$2);} - ; - -ResourceMacroTerm - : DMATerm {} - | DWordIOTerm {} - | DWordMemoryTerm {} - | DWordSpaceTerm {} - | EndDependentFnTerm {} - | ExtendedIOTerm {} - | ExtendedMemoryTerm {} - | ExtendedSpaceTerm {} - | FixedIOTerm {} - | InterruptTerm {} - | IOTerm {} - | IRQNoFlagsTerm {} - | IRQTerm {} - | Memory24Term {} - | Memory32FixedTerm {} - | Memory32Term {} - | QWordIOTerm {} - | QWordMemoryTerm {} - | QWordSpaceTerm {} - | RegisterTerm {} - | StartDependentFnTerm {} - | StartDependentFnNoPriTerm {} - | VendorLongTerm {} - | VendorShortTerm {} - | WordBusNumberTerm {} - | WordIOTerm {} - | WordSpaceTerm {} - ; - -DMATerm - : PARSEOP_DMA '(' {$$ = TrCreateLeafNode (PARSEOP_DMA);} - DMATypeKeyword - OptionalBusMasterKeyword - ',' XferTypeKeyword - OptionalNameString_Last - ')' '{' - ByteList '}' {$$ = TrLinkChildren ($3,5,$4,$5,$7,$8,$11);} - | PARSEOP_DMA '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -DWordIOTerm - : PARSEOP_DWORDIO '(' {$$ = TrCreateLeafNode (PARSEOP_DWORDIO);} - OptionalResourceType_First - OptionalMinType - OptionalMaxType - OptionalDecodeType - OptionalRangeType - ',' DWordConstExpr - ',' DWordConstExpr - ',' DWordConstExpr - ',' DWordConstExpr - ',' DWordConstExpr - OptionalByteConstExpr - OptionalStringData - OptionalNameString - OptionalType - OptionalTranslationType_Last - ')' {$$ = TrLinkChildren ($3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);} - | PARSEOP_DWORDIO '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -DWordMemoryTerm - : PARSEOP_DWORDMEMORY '(' {$$ = TrCreateLeafNode (PARSEOP_DWORDMEMORY);} - OptionalResourceType_First - OptionalDecodeType - OptionalMinType - OptionalMaxType - OptionalMemType - ',' OptionalReadWriteKeyword - ',' DWordConstExpr - ',' DWordConstExpr - ',' DWordConstExpr - ',' DWordConstExpr - ',' DWordConstExpr - OptionalByteConstExpr - OptionalStringData - OptionalNameString - OptionalAddressRange - OptionalType_Last - ')' {$$ = TrLinkChildren ($3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);} - | PARSEOP_DWORDMEMORY '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -DWordSpaceTerm - : PARSEOP_DWORDSPACE '(' {$$ = TrCreateLeafNode (PARSEOP_DWORDSPACE);} - ByteConstExpr {$$ = UtCheckIntegerRange ($4, 0xC0, 0xFF);} - OptionalResourceType - OptionalDecodeType - OptionalMinType - OptionalMaxType - ',' ByteConstExpr - ',' DWordConstExpr - ',' DWordConstExpr - ',' DWordConstExpr - ',' DWordConstExpr - ',' DWordConstExpr - OptionalByteConstExpr - OptionalStringData - OptionalNameString_Last - ')' {$$ = TrLinkChildren ($3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);} - | PARSEOP_DWORDSPACE '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - - -EndDependentFnTerm - : PARSEOP_ENDDEPENDENTFN '(' - ')' {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);} - | PARSEOP_ENDDEPENDENTFN '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -ExtendedIOTerm - : PARSEOP_EXTENDEDIO '(' {$$ = TrCreateLeafNode (PARSEOP_EXTENDEDIO);} - OptionalResourceType_First - OptionalMinType - OptionalMaxType - OptionalDecodeType - OptionalRangeType - ',' QWordConstExpr - ',' QWordConstExpr - ',' QWordConstExpr - ',' QWordConstExpr - ',' QWordConstExpr - OptionalQWordConstExpr - OptionalNameString - OptionalType - OptionalTranslationType_Last - ')' {$$ = TrLinkChildren ($3,14,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);} - | PARSEOP_EXTENDEDIO '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -ExtendedMemoryTerm - : PARSEOP_EXTENDEDMEMORY '(' {$$ = TrCreateLeafNode (PARSEOP_EXTENDEDMEMORY);} - OptionalResourceType_First - OptionalDecodeType - OptionalMinType - OptionalMaxType - OptionalMemType - ',' OptionalReadWriteKeyword - ',' QWordConstExpr - ',' QWordConstExpr - ',' QWordConstExpr - ',' QWordConstExpr - ',' QWordConstExpr - OptionalQWordConstExpr - OptionalNameString - OptionalAddressRange - OptionalType_Last - ')' {$$ = TrLinkChildren ($3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);} - | PARSEOP_EXTENDEDMEMORY '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -ExtendedSpaceTerm - : PARSEOP_EXTENDEDSPACE '(' {$$ = TrCreateLeafNode (PARSEOP_EXTENDEDSPACE);} - ByteConstExpr {$$ = UtCheckIntegerRange ($4, 0xC0, 0xFF);} - OptionalResourceType - OptionalDecodeType - OptionalMinType - OptionalMaxType - ',' ByteConstExpr - ',' QWordConstExpr - ',' QWordConstExpr - ',' QWordConstExpr - ',' QWordConstExpr - ',' QWordConstExpr - OptionalQWordConstExpr - OptionalNameString_Last - ')' {$$ = TrLinkChildren ($3,13,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);} - | PARSEOP_EXTENDEDSPACE '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -FixedIOTerm - : PARSEOP_FIXEDIO '(' {$$ = TrCreateLeafNode (PARSEOP_FIXEDIO);} - WordConstExpr - ',' ByteConstExpr - OptionalNameString_Last - ')' {$$ = TrLinkChildren ($3,3,$4,$6,$7);} - | PARSEOP_FIXEDIO '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -InterruptTerm - : PARSEOP_INTERRUPT '(' {$$ = TrCreateLeafNode (PARSEOP_INTERRUPT);} - OptionalResourceType_First - ',' InterruptTypeKeyword - ',' InterruptLevel - OptionalShareType - OptionalByteConstExpr - OptionalStringData - OptionalNameString_Last - ')' '{' - DWordList '}' {$$ = TrLinkChildren ($3,8,$4,$6,$8,$9,$10,$11,$12,$15);} - | PARSEOP_INTERRUPT '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -IOTerm - : PARSEOP_IO '(' {$$ = TrCreateLeafNode (PARSEOP_IO);} - IODecodeKeyword - ',' WordConstExpr - ',' WordConstExpr - ',' ByteConstExpr - ',' ByteConstExpr - OptionalNameString_Last - ')' {$$ = TrLinkChildren ($3,6,$4,$6,$8,$10,$12,$13);} - | PARSEOP_IO '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -IRQNoFlagsTerm - : PARSEOP_IRQNOFLAGS '(' {$$ = TrCreateLeafNode (PARSEOP_IRQNOFLAGS);} - OptionalNameString_First - ')' '{' - ByteList '}' {$$ = TrLinkChildren ($3,2,$4,$7);} - | PARSEOP_IRQNOFLAGS '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -IRQTerm - : PARSEOP_IRQ '(' {$$ = TrCreateLeafNode (PARSEOP_IRQ);} - InterruptTypeKeyword - ',' InterruptLevel - OptionalShareType - OptionalNameString_Last - ')' '{' - ByteList '}' {$$ = TrLinkChildren ($3,5,$4,$6,$7,$8,$11);} - | PARSEOP_IRQ '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -Memory24Term - : PARSEOP_MEMORY24 '(' {$$ = TrCreateLeafNode (PARSEOP_MEMORY24);} - OptionalReadWriteKeyword - ',' WordConstExpr - ',' WordConstExpr - ',' WordConstExpr - ',' WordConstExpr - OptionalNameString_Last - ')' {$$ = TrLinkChildren ($3,6,$4,$6,$8,$10,$12,$13);} - | PARSEOP_MEMORY24 '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -Memory32FixedTerm - : PARSEOP_MEMORY32FIXED '(' {$$ = TrCreateLeafNode (PARSEOP_MEMORY32FIXED);} - OptionalReadWriteKeyword - ',' DWordConstExpr - ',' DWordConstExpr - OptionalNameString_Last - ')' {$$ = TrLinkChildren ($3,4,$4,$6,$8,$9);} - | PARSEOP_MEMORY32FIXED '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -Memory32Term - : PARSEOP_MEMORY32 '(' {$$ = TrCreateLeafNode (PARSEOP_MEMORY32);} - OptionalReadWriteKeyword - ',' DWordConstExpr - ',' DWordConstExpr - ',' DWordConstExpr - ',' DWordConstExpr - OptionalNameString_Last - ')' {$$ = TrLinkChildren ($3,6,$4,$6,$8,$10,$12,$13);} - | PARSEOP_MEMORY32 '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -QWordIOTerm - : PARSEOP_QWORDIO '(' {$$ = TrCreateLeafNode (PARSEOP_QWORDIO);} - OptionalResourceType_First - OptionalMinType - OptionalMaxType - OptionalDecodeType - OptionalRangeType - ',' QWordConstExpr - ',' QWordConstExpr - ',' QWordConstExpr - ',' QWordConstExpr - ',' QWordConstExpr - OptionalByteConstExpr - OptionalStringData - OptionalNameString - OptionalType - OptionalTranslationType_Last - ')' {$$ = TrLinkChildren ($3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);} - | PARSEOP_QWORDIO '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -QWordMemoryTerm - : PARSEOP_QWORDMEMORY '(' {$$ = TrCreateLeafNode (PARSEOP_QWORDMEMORY);} - OptionalResourceType_First - OptionalDecodeType - OptionalMinType - OptionalMaxType - OptionalMemType - ',' OptionalReadWriteKeyword - ',' QWordConstExpr - ',' QWordConstExpr - ',' QWordConstExpr - ',' QWordConstExpr - ',' QWordConstExpr - OptionalByteConstExpr - OptionalStringData - OptionalNameString - OptionalAddressRange - OptionalType_Last - ')' {$$ = TrLinkChildren ($3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);} - | PARSEOP_QWORDMEMORY '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -QWordSpaceTerm - : PARSEOP_QWORDSPACE '(' {$$ = TrCreateLeafNode (PARSEOP_QWORDSPACE);} - ByteConstExpr {$$ = UtCheckIntegerRange ($4, 0xC0, 0xFF);} - OptionalResourceType - OptionalDecodeType - OptionalMinType - OptionalMaxType - ',' ByteConstExpr - ',' QWordConstExpr - ',' QWordConstExpr - ',' QWordConstExpr - ',' QWordConstExpr - ',' QWordConstExpr - OptionalByteConstExpr - OptionalStringData - OptionalNameString_Last - ')' {$$ = TrLinkChildren ($3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);} - | PARSEOP_QWORDSPACE '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -RegisterTerm - : PARSEOP_REGISTER '(' {$$ = TrCreateLeafNode (PARSEOP_REGISTER);} - AddressSpaceKeyword - ',' ByteConstExpr - ',' ByteConstExpr - ',' QWordConstExpr - OptionalAccessSize - OptionalNameString_Last - ')' {$$ = TrLinkChildren ($3,6,$4,$6,$8,$10,$11,$12);} - | PARSEOP_REGISTER '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -StartDependentFnTerm - : PARSEOP_STARTDEPENDENTFN '(' {$$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);} - ByteConstExpr - ',' ByteConstExpr - ')' '{' - ResourceMacroList '}' {$$ = TrLinkChildren ($3,3,$4,$6,$9);} - | PARSEOP_STARTDEPENDENTFN '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -StartDependentFnNoPriTerm - : PARSEOP_STARTDEPENDENTFN_NOPRI '(' {$$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);} - ')' '{' - ResourceMacroList '}' {$$ = TrLinkChildren ($3,1,$6);} - | PARSEOP_STARTDEPENDENTFN_NOPRI '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -VendorLongTerm - : PARSEOP_VENDORLONG '(' {$$ = TrCreateLeafNode (PARSEOP_VENDORLONG);} - OptionalNameString_First - ')' '{' - ByteList '}' {$$ = TrLinkChildren ($3,2,$4,$7);} - | PARSEOP_VENDORLONG '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -VendorShortTerm - : PARSEOP_VENDORSHORT '(' {$$ = TrCreateLeafNode (PARSEOP_VENDORSHORT);} - OptionalNameString_First - ')' '{' - ByteList '}' {$$ = TrLinkChildren ($3,2,$4,$7);} - | PARSEOP_VENDORSHORT '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -WordBusNumberTerm - : PARSEOP_WORDBUSNUMBER '(' {$$ = TrCreateLeafNode (PARSEOP_WORDBUSNUMBER);} - OptionalResourceType_First - OptionalMinType - OptionalMaxType - OptionalDecodeType - ',' WordConstExpr - ',' WordConstExpr - ',' WordConstExpr - ',' WordConstExpr - ',' WordConstExpr - OptionalByteConstExpr - OptionalStringData - OptionalNameString_Last - ')' {$$ = TrLinkChildren ($3,12,$4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);} - | PARSEOP_WORDBUSNUMBER '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -WordIOTerm - : PARSEOP_WORDIO '(' {$$ = TrCreateLeafNode (PARSEOP_WORDIO);} - OptionalResourceType_First - OptionalMinType - OptionalMaxType - OptionalDecodeType - OptionalRangeType - ',' WordConstExpr - ',' WordConstExpr - ',' WordConstExpr - ',' WordConstExpr - ',' WordConstExpr - OptionalByteConstExpr - OptionalStringData - OptionalNameString - OptionalType - OptionalTranslationType_Last - ')' {$$ = TrLinkChildren ($3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);} - | PARSEOP_WORDIO '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - -WordSpaceTerm - : PARSEOP_WORDSPACE '(' {$$ = TrCreateLeafNode (PARSEOP_WORDSPACE);} - ByteConstExpr {$$ = UtCheckIntegerRange ($4, 0xC0, 0xFF);} - OptionalResourceType - OptionalDecodeType - OptionalMinType - OptionalMaxType - ',' ByteConstExpr - ',' WordConstExpr - ',' WordConstExpr - ',' WordConstExpr - ',' WordConstExpr - ',' WordConstExpr - OptionalByteConstExpr - OptionalStringData - OptionalNameString_Last - ')' {$$ = TrLinkChildren ($3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);} - | PARSEOP_WORDSPACE '(' - error ')' {$$ = AslDoError(); yyclearin;} - ; - - -/******* Object References ***********************************************/ - -/* Allow IO, DMA, IRQ Resource macro names to also be used as identifiers */ - -NameString - : NameSeg {} - | PARSEOP_NAMESTRING {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) AslCompilerlval.s);} - | PARSEOP_IO {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");} - | PARSEOP_DMA {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");} - | PARSEOP_IRQ {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");} - ; - -NameSeg - : PARSEOP_NAMESEG {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);} - ; - - -/******* Helper rules ****************************************************/ - - -AmlPackageLengthTerm - : Integer {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);} - ; - -OptionalBusMasterKeyword - : ',' {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);} - | ',' PARSEOP_BUSMASTERTYPE_MASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);} - | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);} - ; - -OptionalAccessAttribTerm - : {$$ = NULL;} - | ',' {$$ = NULL;} - | ',' ByteConstExpr {$$ = $2;} - | ',' AccessAttribKeyword {$$ = $2;} - ; - -OptionalAccessSize - : {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);} - | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);} - | ',' ByteConstExpr {$$ = $2;} - ; - -OptionalAddressRange - : {$$ = NULL;} - | ',' {$$ = NULL;} - | ',' AddressKeyword {$$ = $2;} - ; - -OptionalByteConstExpr - : {$$ = NULL;} - | ',' {$$ = NULL;} - | ',' ByteConstExpr {$$ = $2;} - ; - -OptionalDecodeType - : ',' {$$ = NULL;} - | ',' DecodeKeyword {$$ = $2;} - ; - -OptionalDWordConstExpr - : {$$ = NULL;} - | ',' {$$ = NULL;} - | ',' DWordConstExpr {$$ = $2;} - ; - -OptionalListString - : {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */ - | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */ - | ',' TermArg {$$ = $2;} - ; - -OptionalMaxType - : ',' {$$ = NULL;} - | ',' MaxKeyword {$$ = $2;} - ; - -OptionalMemType - : ',' {$$ = NULL;} - | ',' MemTypeKeyword {$$ = $2;} - ; - -OptionalMinType - : ',' {$$ = NULL;} - | ',' MinKeyword {$$ = $2;} - ; - -OptionalNameString - : {$$ = NULL;} - | ',' {$$ = NULL;} - | ',' NameString {$$ = $2;} - ; - -OptionalNameString_Last - : {$$ = NULL;} - | ',' {$$ = NULL;} - | ',' NameString {$$ = $2;} - ; - -OptionalNameString_First - : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} - | NameString {$$ = $1;} - ; - -OptionalObjectTypeKeyword - : {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);} - | ',' ObjectTypeKeyword {$$ = $2;} - ; - -OptionalQWordConstExpr - : {$$ = NULL;} - | ',' {$$ = NULL;} - | ',' QWordConstExpr {$$ = $2;} - ; - -OptionalRangeType - : ',' {$$ = NULL;} - | ',' RangeTypeKeyword {$$ = $2;} - ; - -OptionalReference - : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */ - | ',' {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */ - | ',' DataObject {$$ = $2;} - | ',' NameString {$$ = $2;} - ; - -OptionalResourceType_First - : {$$ = NULL;} - | ResourceTypeKeyword {$$ = $1;} - ; - -OptionalResourceType - : {$$ = NULL;} - | ',' {$$ = NULL;} - | ',' ResourceTypeKeyword {$$ = $2;} - ; - -OptionalSerializeRuleKeyword - : {$$ = NULL;} - | ',' {$$ = NULL;} - | ',' SerializeRuleKeyword {$$ = $2;} - ; - -OptionalShareType - : {$$ = NULL;} - | ',' {$$ = NULL;} - | ',' ShareTypeKeyword {$$ = $2;} - ; - -OptionalStringData - : {$$ = NULL;} - | ',' {$$ = NULL;} - | ',' StringData {$$ = $2;} - ; - -OptionalTermArg - : {$$ = NULL;} - | TermArg {$$ = $1;} - ; - -OptionalReturnArg - : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */ - | TermArg {$$ = $1;} - ; - -OptionalType - : {$$ = NULL;} - | ',' {$$ = NULL;} - | ',' TypeKeyword {$$ = $2;} - ; - -OptionalType_Last - : {$$ = NULL;} - | ',' {$$ = NULL;} - | ',' TypeKeyword {$$ = $2;} - ; - -OptionalTranslationType_Last - : {$$ = NULL;} - | ',' {$$ = NULL;} - | ',' TranslationKeyword {$$ = $2;} - ; - - -TermArgItem - : ',' TermArg {$$ = $2;} - | ',' error {$$ = AslDoError (); yyclearin;} - ; - -NameStringItem - : ',' NameString {$$ = $2;} - | ',' error {$$ = AslDoError (); yyclearin;} - ; - - -%% - - -/* - * Local support functions - */ - -int -AslCompilerwrap(void) -{ - return 1; -} - -/*! [End] no source code translation !*/ - -void * -AslLocalAllocate (unsigned int Size) -{ - void *Mem; - - - DbgPrint (ASL_PARSE_OUTPUT, "\nAslLocalAllocate: Expanding Stack to %d\n\n", Size); - - Mem = ACPI_ALLOCATE_ZEROED (Size); - if (!Mem) - { - AslCommonError (ASL_ERROR, ASL_MSG_MEMORY_ALLOCATION, - Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, - Gbl_InputByteCount, Gbl_CurrentColumn, - Gbl_Files[ASL_FILE_INPUT].Filename, NULL); - exit (1); - } - - return (Mem); -} - -ACPI_PARSE_OBJECT * -AslDoError (void) -{ - - - return (TrCreateLeafNode (PARSEOP_ERRORNODE)); - -} diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/asldefine.h b/sys/contrib/dev/acpica-unix-20061109/compiler/asldefine.h deleted file mode 100644 index d7fd756c2d..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/asldefine.h +++ /dev/null @@ -1,211 +0,0 @@ - -/****************************************************************************** - * - * Module Name: asldefine.h - Common defines for the iASL compiler - * $Revision: 1.6 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#ifndef __ASLDEFINE_H -#define __ASLDEFINE_H - - -/* - * Compiler versions and names - */ -#define CompilerCreatorRevision ACPI_CA_VERSION - -#define IntelAcpiCA "Intel ACPI Component Architecture" -#define CompilerId "ASL Optimizing Compiler" -#define DisassemblerId "AML Disassembler" -#define CompilerCopyright "Copyright (C) 2000 - 2006 Intel Corporation" -#define CompilerCompliance "Supports ACPI Specification Revision 3.0a" -#define CompilerName "iasl" -#define CompilerCreatorId "INTL" - - -/* Configuration constants */ - -#define ASL_MAX_ERROR_COUNT 200 -#define ASL_NODE_CACHE_SIZE 1024 -#define ASL_STRING_CACHE_SIZE 32768 - -#define ASL_FIRST_PARSE_OPCODE PARSEOP_ACCESSAS -#define ASL_YYTNAME_START 3 - -#define ASL_PARSE_OPCODE_BASE PARSEOP_ACCESSAS /* First Lex type */ - - -/* - * Macros - */ -#define ASL_RESDESC_OFFSET(m) ACPI_OFFSET (AML_RESOURCE, m) -#define ASL_PTR_DIFF(a,b) ((UINT8 *)(b) - (UINT8 *)(a)) -#define ASL_PTR_ADD(a,b) ((UINT8 *)(a) = ((UINT8 *)(a) + (b))) -#define ASL_GET_CHILD_NODE(a) (a)->Asl.Child -#define ASL_GET_PEER_NODE(a) (a)->Asl.Next -#define OP_TABLE_ENTRY(a,b,c,d) {b,d,a,c} - - -/* Internal AML opcodes */ - -#define AML_RAW_DATA_BYTE (UINT16) 0xAA01 /* write one raw byte */ -#define AML_RAW_DATA_WORD (UINT16) 0xAA02 /* write 2 raw bytes */ -#define AML_RAW_DATA_DWORD (UINT16) 0xAA04 /* write 4 raw bytes */ -#define AML_RAW_DATA_QWORD (UINT16) 0xAA08 /* write 8 raw bytes */ -#define AML_RAW_DATA_BUFFER (UINT16) 0xAA0B /* raw buffer with length */ -#define AML_RAW_DATA_CHAIN (UINT16) 0xAA0C /* chain of raw buffers */ -#define AML_PACKAGE_LENGTH (UINT16) 0xAA10 -#define AML_UNASSIGNED_OPCODE (UINT16) 0xEEEE -#define AML_DEFAULT_ARG_OP (UINT16) 0xDDDD - - -/* filename suffixes for output files */ - -#define FILE_SUFFIX_AML_CODE "aml" -#define FILE_SUFFIX_LISTING "lst" -#define FILE_SUFFIX_HEX_DUMP "hex" -#define FILE_SUFFIX_DEBUG "txt" -#define FILE_SUFFIX_SOURCE "src" -#define FILE_SUFFIX_NAMESPACE "nsp" -#define FILE_SUFFIX_ASM_SOURCE "asm" -#define FILE_SUFFIX_C_SOURCE "c" -#define FILE_SUFFIX_DISASSEMBLY "dsl" -#define FILE_SUFFIX_ASM_INCLUDE "inc" -#define FILE_SUFFIX_C_INCLUDE "h" - - -/* Misc */ - -#define ASL_EXTERNAL_METHOD 255 -#define ASL_ABORT TRUE -#define ASL_NO_ABORT FALSE - - -/* Support for reserved method names */ - -#define ACPI_VALID_RESERVED_NAME_MAX 0x80000000 -#define ACPI_NOT_RESERVED_NAME ACPI_UINT32_MAX -#define ACPI_PREDEFINED_NAME (ACPI_UINT32_MAX - 1) -#define ACPI_EVENT_RESERVED_NAME (ACPI_UINT32_MAX - 2) -#define ACPI_COMPILER_RESERVED_NAME (ACPI_UINT32_MAX - 3) - - -/* String to Integer conversion */ - -#define NEGATIVE 1 -#define POSITIVE 0 - - -#endif /* ASLDEFINE.H */ - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/aslerror.c b/sys/contrib/dev/acpica-unix-20061109/compiler/aslerror.c deleted file mode 100644 index 3fab09cac6..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/aslerror.c +++ /dev/null @@ -1,647 +0,0 @@ - -/****************************************************************************** - * - * Module Name: aslerror - Error handling and statistics - * $Revision: 1.91 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define ASL_EXCEPTIONS -#include "aslcompiler.h" - -#define _COMPONENT ACPI_COMPILER - ACPI_MODULE_NAME ("aslerror") - -/* Local prototypes */ - -static void -AeAddToErrorLog ( - ASL_ERROR_MSG *Enode); - - -/******************************************************************************* - * - * FUNCTION: AeAddToErrorLog - * - * PARAMETERS: Enode - An error node to add to the log - * - * RETURN: None - * - * DESCRIPTION: Add a new error node to the error log. The error log is - * ordered by the "logical" line number (cumulative line number - * including all include files.) - * - ******************************************************************************/ - -static void -AeAddToErrorLog ( - ASL_ERROR_MSG *Enode) -{ - ASL_ERROR_MSG *Next; - ASL_ERROR_MSG *Prev; - - - if (!Gbl_ErrorLog) - { - Gbl_ErrorLog = Enode; - return; - } - - /* List is sorted according to line number */ - - if (!Gbl_ErrorLog) - { - Gbl_ErrorLog = Enode; - return; - } - - /* Walk error list until we find a line number greater than ours */ - - Prev = NULL; - Next = Gbl_ErrorLog; - - while ((Next) && - (Next->LogicalLineNumber <= Enode->LogicalLineNumber)) - { - Prev = Next; - Next = Next->Next; - } - - /* Found our place in the list */ - - Enode->Next = Next; - - if (Prev) - { - Prev->Next = Enode; - } - else - { - Gbl_ErrorLog = Enode; - } -} - - -/******************************************************************************* - * - * FUNCTION: AePrintException - * - * PARAMETERS: FileId - ID of output file - * Enode - Error node to print - * Header - Additional text before each message - * - * RETURN: None - * - * DESCRIPTION: Print the contents of an error node. - * - * NOTE: We don't use the FlxxxFile I/O functions here because on error - * they abort the compiler and call this function! Since we - * are reporting errors here, we ignore most output errors and - * just try to get out as much as we can. - * - ******************************************************************************/ - -void -AePrintException ( - UINT32 FileId, - ASL_ERROR_MSG *Enode, - char *Header) -{ - UINT8 SourceByte; - int Actual; - size_t RActual; - UINT32 MsgLength; - char *MainMessage; - char *ExtraMessage; - UINT32 SourceColumn; - UINT32 ErrorColumn; - FILE *OutputFile; - FILE *SourceFile; - - - /* - * Only listing files have a header, and remarks/optimizations - * are always output - */ - if (!Header) - { - /* Ignore remarks if requested */ - - switch (Enode->Level) - { - case ASL_REMARK: - if (!Gbl_DisplayRemarks) - { - return; - } - break; - - case ASL_OPTIMIZATION: - if (!Gbl_DisplayOptimizations) - { - return; - } - break; - - default: - break; - } - } - - /* Get the file handles */ - - OutputFile = Gbl_Files[FileId].Handle; - SourceFile = Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Handle; - - if (Header) - { - fprintf (OutputFile, "%s", Header); - } - - /* Print filename and line number if present and valid */ - - if (Enode->Filename) - { - if (Gbl_VerboseErrors) - { - fprintf (OutputFile, "%6s", Enode->Filename); - - if (Enode->LineNumber) - { - fprintf (OutputFile, "%6u: ", Enode->LineNumber); - - /* - * Seek to the offset in the combined source file, read the source - * line, and write it to the output. - */ - Actual = fseek (SourceFile, (long) Enode->LogicalByteOffset, - (int) SEEK_SET); - if (Actual) - { - fprintf (OutputFile, - "[*** iASL: Seek error on source code temp file ***]"); - } - else - { - RActual = fread (&SourceByte, 1, 1, SourceFile); - if (!RActual) - { - fprintf (OutputFile, - "[*** iASL: Read error on source code temp file ***]"); - } - - else while (RActual && SourceByte && (SourceByte != '\n')) - { - fwrite (&SourceByte, 1, 1, OutputFile); - RActual = fread (&SourceByte, 1, 1, SourceFile); - } - } - fprintf (OutputFile, "\n"); - } - } - else - { - fprintf (OutputFile, "%s", Enode->Filename); - - if (Enode->LineNumber) - { - fprintf (OutputFile, "(%u) : ", Enode->LineNumber); - } - } - } - - /* NULL message ID, just print the raw message */ - - if (Enode->MessageId == 0) - { - fprintf (OutputFile, "%s\n", Enode->Message); - } - else - { - /* Decode the message ID */ - - fprintf (OutputFile, "%s %4.4d -", - AslErrorLevel[Enode->Level], - Enode->MessageId + ((Enode->Level+1) * 1000)); - - MainMessage = AslMessages[Enode->MessageId]; - ExtraMessage = Enode->Message; - - if (Enode->LineNumber) - { - MsgLength = strlen (MainMessage); - if (MsgLength == 0) - { - MainMessage = Enode->Message; - - MsgLength = strlen (MainMessage); - ExtraMessage = NULL; - } - - if (Gbl_VerboseErrors) - { - SourceColumn = Enode->Column + Enode->FilenameLength + 6 + 2; - ErrorColumn = ASL_ERROR_LEVEL_LENGTH + 5 + 2 + 1; - - if ((MsgLength + ErrorColumn) < (SourceColumn - 1)) - { - fprintf (OutputFile, "%*s%s", - (int) ((SourceColumn - 1) - ErrorColumn), - MainMessage, " ^ "); - } - else - { - fprintf (OutputFile, "%*s %s", - (int) ((SourceColumn - ErrorColumn) + 1), "^", - MainMessage); - } - } - else - { - fprintf (OutputFile, " %s", MainMessage); - } - - /* Print the extra info message if present */ - - if (ExtraMessage) - { - fprintf (OutputFile, " (%s)", ExtraMessage); - } - - fprintf (OutputFile, "\n"); - if (Gbl_VerboseErrors) - { - fprintf (OutputFile, "\n"); - } - } - else - { - fprintf (OutputFile, " %s %s\n\n", MainMessage, ExtraMessage); - } - } -} - - -/******************************************************************************* - * - * FUNCTION: AePrintErrorLog - * - * PARAMETERS: FileId - Where to output the error log - * - * RETURN: None - * - * DESCRIPTION: Print the entire contents of the error log - * - ******************************************************************************/ - -void -AePrintErrorLog ( - UINT32 FileId) -{ - ASL_ERROR_MSG *Enode = Gbl_ErrorLog; - - - /* Walk the error node list */ - - while (Enode) - { - AePrintException (FileId, Enode, NULL); - Enode = Enode->Next; - } -} - - -/******************************************************************************* - * - * FUNCTION: AslCommonError - * - * PARAMETERS: Level - Seriousness (Warning/error, etc.) - * MessageId - Index into global message buffer - * CurrentLineNumber - Actual file line number - * LogicalLineNumber - Cumulative line number - * LogicalByteOffset - Byte offset in source file - * Column - Column in current line - * Filename - source filename - * ExtraMessage - additional error message - * - * RETURN: None - * - * DESCRIPTION: Create a new error node and add it to the error log - * - ******************************************************************************/ - -void -AslCommonError ( - UINT8 Level, - UINT8 MessageId, - UINT32 CurrentLineNumber, - UINT32 LogicalLineNumber, - UINT32 LogicalByteOffset, - UINT32 Column, - char *Filename, - char *ExtraMessage) -{ - UINT32 MessageSize; - char *MessageBuffer = NULL; - ASL_ERROR_MSG *Enode; - - - Enode = UtLocalCalloc (sizeof (ASL_ERROR_MSG)); - - if (ExtraMessage) - { - /* Allocate a buffer for the message and a new error node */ - - MessageSize = strlen (ExtraMessage) + 1; - MessageBuffer = UtLocalCalloc (MessageSize); - - /* Keep a copy of the extra message */ - - ACPI_STRCPY (MessageBuffer, ExtraMessage); - } - - /* Initialize the error node */ - - if (Filename) - { - Enode->Filename = Filename; - Enode->FilenameLength = strlen (Filename); - if (Enode->FilenameLength < 6) - { - Enode->FilenameLength = 6; - } - } - - Enode->MessageId = MessageId; - Enode->Level = Level; - Enode->LineNumber = CurrentLineNumber; - Enode->LogicalLineNumber = LogicalLineNumber; - Enode->LogicalByteOffset = LogicalByteOffset; - Enode->Column = Column; - Enode->Message = MessageBuffer; - - /* Add the new node to the error node list */ - - AeAddToErrorLog (Enode); - - if (Gbl_DebugFlag) - { - /* stderr is a file, send error to it immediately */ - - AePrintException (ASL_FILE_STDERR, Enode, NULL); - } - - Gbl_ExceptionCount[Level]++; - if (Gbl_ExceptionCount[ASL_ERROR] > ASL_MAX_ERROR_COUNT) - { - printf ("\nMaximum error count (%d) exceeded\n", ASL_MAX_ERROR_COUNT); - - Gbl_SourceLine = 0; - Gbl_NextError = Gbl_ErrorLog; - CmDoOutputFiles (); - CmCleanupAndExit (); - } - - return; -} - - -/******************************************************************************* - * - * FUNCTION: AslError - * - * PARAMETERS: Level - Seriousness (Warning/error, etc.) - * MessageId - Index into global message buffer - * Op - Parse node where error happened - * ExtraMessage - additional error message - * - * RETURN: None - * - * DESCRIPTION: Main error reporting routine for the ASL compiler (all code - * except the parser.) - * - ******************************************************************************/ - -void -AslError ( - UINT8 Level, - UINT8 MessageId, - ACPI_PARSE_OBJECT *Op, - char *ExtraMessage) -{ - - switch (Level) - { - case ASL_WARNING2: - case ASL_WARNING3: - if (Gbl_WarningLevel < Level) - { - return; - } - break; - - default: - break; - } - - - if (Op) - { - AslCommonError (Level, MessageId, Op->Asl.LineNumber, - Op->Asl.LogicalLineNumber, - Op->Asl.LogicalByteOffset, - Op->Asl.Column, - Op->Asl.Filename, ExtraMessage); - } - else - { - AslCommonError (Level, MessageId, 0, - 0, 0, 0, NULL, ExtraMessage); - } -} - - -/******************************************************************************* - * - * FUNCTION: AslCoreSubsystemError - * - * PARAMETERS: Op - Parse node where error happened - * Status - The ACPI CA Exception - * ExtraMessage - additional error message - * Abort - TRUE -> Abort compilation - * - * RETURN: None - * - * DESCRIPTION: Error reporting routine for exceptions returned by the ACPI - * CA core subsystem. - * - ******************************************************************************/ - -void -AslCoreSubsystemError ( - ACPI_PARSE_OBJECT *Op, - ACPI_STATUS Status, - char *ExtraMessage, - BOOLEAN Abort) -{ - - sprintf (MsgBuffer, "%s %s", AcpiFormatException (Status), ExtraMessage); - - if (Op) - { - AslCommonError (ASL_ERROR, ASL_MSG_CORE_EXCEPTION, Op->Asl.LineNumber, - Op->Asl.LogicalLineNumber, - Op->Asl.LogicalByteOffset, - Op->Asl.Column, - Op->Asl.Filename, MsgBuffer); - } - else - { - AslCommonError (ASL_ERROR, ASL_MSG_CORE_EXCEPTION, 0, - 0, 0, 0, NULL, MsgBuffer); - } - - if (Abort) - { - AslAbort (); - } -} - - -/******************************************************************************* - * - * FUNCTION: AslCompilererror - * - * PARAMETERS: CompilerMessage - Error message from the parser - * - * RETURN: Status (0 for now) - * - * DESCRIPTION: Report an error situation discovered in a production - * NOTE: don't change the name of this function, it is called - * from the auto-generated parser. - * - ******************************************************************************/ - -int -AslCompilererror ( - char *CompilerMessage) -{ - - AslCommonError (ASL_ERROR, ASL_MSG_SYNTAX, Gbl_CurrentLineNumber, - Gbl_LogicalLineNumber, Gbl_CurrentLineOffset, - Gbl_CurrentColumn, Gbl_Files[ASL_FILE_INPUT].Filename, - CompilerMessage); - - return 0; -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/aslfiles.c b/sys/contrib/dev/acpica-unix-20061109/compiler/aslfiles.c deleted file mode 100644 index 616fdd4bd4..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/aslfiles.c +++ /dev/null @@ -1,873 +0,0 @@ - -/****************************************************************************** - * - * Module Name: aslfiles - file I/O suppoert - * $Revision: 1.53 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "aslcompiler.h" -#include "acapps.h" - -#define _COMPONENT ACPI_COMPILER - ACPI_MODULE_NAME ("aslfiles") - -/* Local prototypes */ - -static void -FlOpenFile ( - UINT32 FileId, - char *Filename, - char *Mode); - -static FILE * -FlOpenLocalFile ( - char *LocalName, - char *Mode); - -#ifdef ACPI_OBSOLETE_FUNCTIONS -ACPI_STATUS -FlParseInputPathname ( - char *InputFilename); -#endif - - -/******************************************************************************* - * - * FUNCTION: AslAbort - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Dump the error log and abort the compiler. Used for serious - * I/O errors - * - ******************************************************************************/ - -void -AslAbort ( - void) -{ - - AePrintErrorLog (ASL_FILE_STDOUT); - if (Gbl_DebugFlag) - { - /* Print error summary to the debug file */ - - AePrintErrorLog (ASL_FILE_STDERR); - } - - exit (1); -} - - -/******************************************************************************* - * - * FUNCTION: FlOpenLocalFile - * - * PARAMETERS: LocalName - Single filename (not a pathname) - * Mode - Open mode for fopen - * - * RETURN: File descriptor - * - * DESCRIPTION: Build a complete pathname for the input filename and open - * the file. - * - ******************************************************************************/ - -static FILE * -FlOpenLocalFile ( - char *LocalName, - char *Mode) -{ - - strcpy (StringBuffer, Gbl_DirectoryPath); - strcat (StringBuffer, LocalName); - - DbgPrint (ASL_PARSE_OUTPUT, "FlOpenLocalFile: %s\n", StringBuffer); - return (fopen (StringBuffer, (const char *) Mode)); -} - - -/******************************************************************************* - * - * FUNCTION: FlFileError - * - * PARAMETERS: FileId - Index into file info array - * ErrorId - Index into error message array - * - * RETURN: None - * - * DESCRIPTION: Decode errno to an error message and add the entire error - * to the error log. - * - ******************************************************************************/ - -void -FlFileError ( - UINT32 FileId, - UINT8 ErrorId) -{ - - sprintf (MsgBuffer, "\"%s\" (%s)", Gbl_Files[FileId].Filename, - strerror (errno)); - AslCommonError (ASL_ERROR, ErrorId, 0, 0, 0, 0, NULL, MsgBuffer); -} - - -/******************************************************************************* - * - * FUNCTION: FlOpenFile - * - * PARAMETERS: FileId - Index into file info array - * Filename - file pathname to open - * Mode - Open mode for fopen - * - * RETURN: None - * - * DESCRIPTION: Open a file. - * NOTE: Aborts compiler on any error. - * - ******************************************************************************/ - -static void -FlOpenFile ( - UINT32 FileId, - char *Filename, - char *Mode) -{ - FILE *File; - - - File = fopen (Filename, Mode); - - Gbl_Files[FileId].Filename = Filename; - Gbl_Files[FileId].Handle = File; - - if (!File) - { - FlFileError (FileId, ASL_MSG_OPEN); - AslAbort (); - } -} - - -/******************************************************************************* - * - * FUNCTION: FlReadFile - * - * PARAMETERS: FileId - Index into file info array - * Buffer - Where to place the data - * Length - Amount to read - * - * RETURN: Status. AE_ERROR indicates EOF. - * - * DESCRIPTION: Read data from an open file. - * NOTE: Aborts compiler on any error. - * - ******************************************************************************/ - -ACPI_STATUS -FlReadFile ( - UINT32 FileId, - void *Buffer, - UINT32 Length) -{ - UINT32 Actual; - - - /* Read and check for error */ - - Actual = fread (Buffer, 1, Length, Gbl_Files[FileId].Handle); - if (Actual != Length) - { - if (feof (Gbl_Files[FileId].Handle)) - { - /* End-of-file, just return error */ - - return (AE_ERROR); - } - - FlFileError (FileId, ASL_MSG_READ); - AslAbort (); - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: FlWriteFile - * - * PARAMETERS: FileId - Index into file info array - * Buffer - Data to write - * Length - Amount of data to write - * - * RETURN: None - * - * DESCRIPTION: Write data to an open file. - * NOTE: Aborts compiler on any error. - * - ******************************************************************************/ - -void -FlWriteFile ( - UINT32 FileId, - void *Buffer, - UINT32 Length) -{ - UINT32 Actual; - - - /* Write and check for error */ - - Actual = fwrite ((char *) Buffer, 1, Length, Gbl_Files[FileId].Handle); - if (Actual != Length) - { - FlFileError (FileId, ASL_MSG_WRITE); - AslAbort (); - } -} - - -/******************************************************************************* - * - * FUNCTION: FlPrintFile - * - * PARAMETERS: FileId - Index into file info array - * Format - Printf format string - * ... - Printf arguments - * - * RETURN: None - * - * DESCRIPTION: Formatted write to an open file. - * NOTE: Aborts compiler on any error. - * - ******************************************************************************/ - -void -FlPrintFile ( - UINT32 FileId, - char *Format, - ...) -{ - INT32 Actual; - va_list Args; - - - va_start (Args, Format); - - Actual = vfprintf (Gbl_Files[FileId].Handle, Format, Args); - if (Actual == -1) - { - FlFileError (FileId, ASL_MSG_WRITE); - AslAbort (); - } -} - - -/******************************************************************************* - * - * FUNCTION: FlSeekFile - * - * PARAMETERS: FileId - Index into file info array - * Offset - Absolute byte offset in file - * - * RETURN: None - * - * DESCRIPTION: Seek to absolute offset - * NOTE: Aborts compiler on any error. - * - ******************************************************************************/ - -void -FlSeekFile ( - UINT32 FileId, - long Offset) -{ - int Error; - - - Error = fseek (Gbl_Files[FileId].Handle, Offset, SEEK_SET); - if (Error) - { - FlFileError (FileId, ASL_MSG_SEEK); - AslAbort (); - } -} - - -/******************************************************************************* - * - * FUNCTION: FlCloseFile - * - * PARAMETERS: FileId - Index into file info array - * - * RETURN: None - * - * DESCRIPTION: Close an open file. Aborts compiler on error - * - ******************************************************************************/ - -void -FlCloseFile ( - UINT32 FileId) -{ - int Error; - - - if (!Gbl_Files[FileId].Handle) - { - return; - } - - Error = fclose (Gbl_Files[FileId].Handle); - Gbl_Files[FileId].Handle = NULL; - - if (Error) - { - FlFileError (FileId, ASL_MSG_CLOSE); - AslAbort (); - } - - return; -} - - -/******************************************************************************* - * - * FUNCTION: FlSetLineNumber - * - * PARAMETERS: Op - Parse node for the LINE asl statement - * - * RETURN: None. - * - * DESCRIPTION: Set the current line number - * - ******************************************************************************/ - -void -FlSetLineNumber ( - ACPI_PARSE_OBJECT *Op) -{ - - Gbl_CurrentLineNumber = (UINT32) Op->Asl.Value.Integer; - Gbl_LogicalLineNumber = (UINT32) Op->Asl.Value.Integer; -} - - -/******************************************************************************* - * - * FUNCTION: FlOpenIncludeFile - * - * PARAMETERS: Op - Parse node for the INCLUDE ASL statement - * - * RETURN: None. - * - * DESCRIPTION: Open an include file and push it on the input file stack. - * - ******************************************************************************/ - -void -FlOpenIncludeFile ( - ACPI_PARSE_OBJECT *Op) -{ - FILE *IncFile; - - - /* Op must be valid */ - - if (!Op) - { - AslCommonError (ASL_ERROR, ASL_MSG_INCLUDE_FILE_OPEN, - Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, - Gbl_InputByteCount, Gbl_CurrentColumn, - Gbl_Files[ASL_FILE_INPUT].Filename, " - Null parse node"); - - return; - } - - /* - * Flush out the "include ()" statement on this line, start - * the actual include file on the next line - */ - ResetCurrentLineBuffer (); - FlPrintFile (ASL_FILE_SOURCE_OUTPUT, "\n"); - Gbl_CurrentLineOffset++; - - /* Prepend the directory pathname and open the include file */ - - DbgPrint (ASL_PARSE_OUTPUT, "\nOpen include file: path %s\n\n", - Op->Asl.Value.String); - IncFile = FlOpenLocalFile (Op->Asl.Value.String, "r"); - if (!IncFile) - { - sprintf (MsgBuffer, "%s (%s)", Op->Asl.Value.String, strerror (errno)); - AslError (ASL_ERROR, ASL_MSG_INCLUDE_FILE_OPEN, Op, MsgBuffer); - return; - } - - /* Push the include file on the open input file stack */ - - AslPushInputFileStack (IncFile, Op->Asl.Value.String); -} - - -/******************************************************************************* - * - * FUNCTION: FlOpenInputFile - * - * PARAMETERS: InputFilename - The user-specified ASL source file to be - * compiled - * - * RETURN: Status - * - * DESCRIPTION: Open the specified input file, and save the directory path to - * the file so that include files can be opened in - * the same directory. - * - ******************************************************************************/ - -ACPI_STATUS -FlOpenInputFile ( - char *InputFilename) -{ - - /* Open the input ASL file, text mode */ - - FlOpenFile (ASL_FILE_INPUT, InputFilename, "r"); - AslCompilerin = Gbl_Files[ASL_FILE_INPUT].Handle; - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: FlOpenAmlOutputFile - * - * PARAMETERS: FilenamePrefix - The user-specified ASL source file - * - * RETURN: Status - * - * DESCRIPTION: Create the output filename (*.AML) and open the file. The file - * is created in the same directory as the parent input file. - * - ******************************************************************************/ - -ACPI_STATUS -FlOpenAmlOutputFile ( - char *FilenamePrefix) -{ - char *Filename; - - - /* Output filename usually comes from the ASL itself */ - - Filename = Gbl_Files[ASL_FILE_AML_OUTPUT].Filename; - if (!Filename) - { - /* Create the output AML filename */ - - Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_AML_CODE); - if (!Filename) - { - AslCommonError (ASL_ERROR, ASL_MSG_OUTPUT_FILENAME, - 0, 0, 0, 0, NULL, NULL); - return (AE_ERROR); - } - } - - /* Open the output AML file in binary mode */ - - FlOpenFile (ASL_FILE_AML_OUTPUT, Filename, "w+b"); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: FlOpenMiscOutputFiles - * - * PARAMETERS: FilenamePrefix - The user-specified ASL source file - * - * RETURN: Status - * - * DESCRIPTION: Create and open the various output files needed, depending on - * the command line options - * - ******************************************************************************/ - -ACPI_STATUS -FlOpenMiscOutputFiles ( - char *FilenamePrefix) -{ - char *Filename; - - - /* Create/Open a combined source output file */ - - Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_SOURCE); - if (!Filename) - { - AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME, - 0, 0, 0, 0, NULL, NULL); - return (AE_ERROR); - } - - /* - * Open the source output file, binary mode (so that LF does not get - * expanded to CR/LF on some systems, messing up our seek - * calculations.) - */ - FlOpenFile (ASL_FILE_SOURCE_OUTPUT, Filename, "w+b"); - - /* Create/Open a listing output file if asked */ - - if (Gbl_ListingFlag) - { - Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_LISTING); - if (!Filename) - { - AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME, - 0, 0, 0, 0, NULL, NULL); - return (AE_ERROR); - } - - /* Open the listing file, text mode */ - - FlOpenFile (ASL_FILE_LISTING_OUTPUT, Filename, "w+"); - - AslCompilerSignon (ASL_FILE_LISTING_OUTPUT); - AslCompilerFileHeader (ASL_FILE_LISTING_OUTPUT); - } - - /* Create/Open a assembly code source output file if asked */ - - if (Gbl_AsmOutputFlag) - { - Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_ASM_SOURCE); - if (!Filename) - { - AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME, - 0, 0, 0, 0, NULL, NULL); - return (AE_ERROR); - } - - /* Open the assembly code source file, text mode */ - - FlOpenFile (ASL_FILE_ASM_SOURCE_OUTPUT, Filename, "w+"); - - AslCompilerSignon (ASL_FILE_ASM_SOURCE_OUTPUT); - AslCompilerFileHeader (ASL_FILE_ASM_SOURCE_OUTPUT); - } - - /* Create/Open a C code source output file if asked */ - - if (Gbl_C_OutputFlag) - { - Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_C_SOURCE); - if (!Filename) - { - AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME, - 0, 0, 0, 0, NULL, NULL); - return (AE_ERROR); - } - - /* Open the C code source file, text mode */ - - FlOpenFile (ASL_FILE_C_SOURCE_OUTPUT, Filename, "w+"); - - FlPrintFile (ASL_FILE_C_SOURCE_OUTPUT, "/*\n"); - AslCompilerSignon (ASL_FILE_C_SOURCE_OUTPUT); - AslCompilerFileHeader (ASL_FILE_C_SOURCE_OUTPUT); - } - - /* Create/Open a assembly include output file if asked */ - - if (Gbl_AsmIncludeOutputFlag) - { - Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_ASM_INCLUDE); - if (!Filename) - { - AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME, - 0, 0, 0, 0, NULL, NULL); - return (AE_ERROR); - } - - /* Open the assembly include file, text mode */ - - FlOpenFile (ASL_FILE_ASM_INCLUDE_OUTPUT, Filename, "w+"); - - AslCompilerSignon (ASL_FILE_ASM_INCLUDE_OUTPUT); - AslCompilerFileHeader (ASL_FILE_ASM_INCLUDE_OUTPUT); - } - - /* Create/Open a C include output file if asked */ - - if (Gbl_C_IncludeOutputFlag) - { - Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_C_INCLUDE); - if (!Filename) - { - AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME, - 0, 0, 0, 0, NULL, NULL); - return (AE_ERROR); - } - - /* Open the C include file, text mode */ - - FlOpenFile (ASL_FILE_C_INCLUDE_OUTPUT, Filename, "w+"); - - FlPrintFile (ASL_FILE_C_INCLUDE_OUTPUT, "/*\n"); - AslCompilerSignon (ASL_FILE_C_INCLUDE_OUTPUT); - AslCompilerFileHeader (ASL_FILE_C_INCLUDE_OUTPUT); - } - - /* Create/Open a hex output file if asked */ - - if (Gbl_HexOutputFlag) - { - Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_HEX_DUMP); - if (!Filename) - { - AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME, - 0, 0, 0, 0, NULL, NULL); - return (AE_ERROR); - } - - /* Open the hex file, text mode */ - - FlOpenFile (ASL_FILE_HEX_OUTPUT, Filename, "w+"); - - AslCompilerSignon (ASL_FILE_HEX_OUTPUT); - AslCompilerFileHeader (ASL_FILE_HEX_OUTPUT); - } - - /* Create a namespace output file if asked */ - - if (Gbl_NsOutputFlag) - { - Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_NAMESPACE); - if (!Filename) - { - AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME, - 0, 0, 0, 0, NULL, NULL); - return (AE_ERROR); - } - - /* Open the namespace file, text mode */ - - FlOpenFile (ASL_FILE_NAMESPACE_OUTPUT, Filename, "w+"); - - AslCompilerSignon (ASL_FILE_NAMESPACE_OUTPUT); - AslCompilerFileHeader (ASL_FILE_NAMESPACE_OUTPUT); - } - - /* Create/Open a debug output file if asked */ - - if (Gbl_DebugFlag) - { - Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_DEBUG); - if (!Filename) - { - AslCommonError (ASL_ERROR, ASL_MSG_DEBUG_FILENAME, - 0, 0, 0, 0, NULL, NULL); - return (AE_ERROR); - } - - /* Open the debug file as STDERR, text mode */ - - /* TBD: hide this behind a FlReopenFile function */ - - Gbl_Files[ASL_FILE_DEBUG_OUTPUT].Filename = Filename; - Gbl_Files[ASL_FILE_DEBUG_OUTPUT].Handle = - freopen (Filename, "w+t", stderr); - - AslCompilerSignon (ASL_FILE_DEBUG_OUTPUT); - AslCompilerFileHeader (ASL_FILE_DEBUG_OUTPUT); - } - - return (AE_OK); -} - - -#ifdef ACPI_OBSOLETE_FUNCTIONS -/******************************************************************************* - * - * FUNCTION: FlParseInputPathname - * - * PARAMETERS: InputFilename - The user-specified ASL source file to be - * compiled - * - * RETURN: Status - * - * DESCRIPTION: Split the input path into a directory and filename part - * 1) Directory part used to open include files - * 2) Filename part used to generate output filenames - * - ******************************************************************************/ - -ACPI_STATUS -FlParseInputPathname ( - char *InputFilename) -{ - char *Substring; - - - if (!InputFilename) - { - return (AE_OK); - } - - /* Get the path to the input filename's directory */ - - Gbl_DirectoryPath = strdup (InputFilename); - if (!Gbl_DirectoryPath) - { - return (AE_NO_MEMORY); - } - - Substring = strrchr (Gbl_DirectoryPath, '\\'); - if (!Substring) - { - Substring = strrchr (Gbl_DirectoryPath, '/'); - if (!Substring) - { - Substring = strrchr (Gbl_DirectoryPath, ':'); - } - } - - if (!Substring) - { - Gbl_DirectoryPath[0] = 0; - if (Gbl_UseDefaultAmlFilename) - { - Gbl_OutputFilenamePrefix = strdup (InputFilename); - } - } - else - { - if (Gbl_UseDefaultAmlFilename) - { - Gbl_OutputFilenamePrefix = strdup (Substring + 1); - } - *(Substring+1) = 0; - } - - return (AE_OK); -} -#endif - - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/aslfold.c b/sys/contrib/dev/acpica-unix-20061109/compiler/aslfold.c deleted file mode 100644 index 0f19e5c1f7..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/aslfold.c +++ /dev/null @@ -1,564 +0,0 @@ - -/****************************************************************************** - * - * Module Name: aslfold - Constant folding - * $Revision: 1.19 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "aslcompiler.h" -#include "aslcompiler.y.h" -#include "amlcode.h" - -#include "acdispat.h" -#include "acparser.h" - -#define _COMPONENT ACPI_COMPILER - ACPI_MODULE_NAME ("aslfold") - -/* Local prototypes */ - -static ACPI_STATUS -OpcAmlEvaluationWalk1 ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -static ACPI_STATUS -OpcAmlEvaluationWalk2 ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -static ACPI_STATUS -OpcAmlCheckForConstant ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - - -/******************************************************************************* - * - * FUNCTION: OpcAmlEvaluationWalk1 - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Descending callback for AML execution of constant subtrees - * - ******************************************************************************/ - -static ACPI_STATUS -OpcAmlEvaluationWalk1 ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - ACPI_WALK_STATE *WalkState = Context; - ACPI_STATUS Status; - ACPI_PARSE_OBJECT *OutOp; - - - WalkState->Op = Op; - WalkState->Opcode = Op->Common.AmlOpcode; - WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - - /* Copy child pointer to Arg for compatibility with Interpreter */ - - if (Op->Asl.Child) - { - Op->Common.Value.Arg = Op->Asl.Child; - } - - /* Call AML dispatcher */ - - Status = AcpiDsExecBeginOp (WalkState, &OutOp); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Constant interpretation failed - %s\n", - AcpiFormatException (Status)); - } - - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: OpcAmlEvaluationWalk2 - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Ascending callback for AML execution of constant subtrees - * - ******************************************************************************/ - -static ACPI_STATUS -OpcAmlEvaluationWalk2 ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - ACPI_WALK_STATE *WalkState = Context; - ACPI_STATUS Status; - - - WalkState->Op = Op; - WalkState->Opcode = Op->Common.AmlOpcode; - WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - - /* Copy child pointer to Arg for compatibility with Interpreter */ - - if (Op->Asl.Child) - { - Op->Common.Value.Arg = Op->Asl.Child; - } - - /* Call AML dispatcher */ - - Status = AcpiDsExecEndOp (WalkState); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Constant interpretation failed - %s\n", - AcpiFormatException (Status)); - } - - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: OpcAmlCheckForConstant - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Check one Op for a type 3/4/5 AML opcode - * - ******************************************************************************/ - -static ACPI_STATUS -OpcAmlCheckForConstant ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - ACPI_WALK_STATE *WalkState = Context; - - - WalkState->Op = Op; - WalkState->Opcode = Op->Common.AmlOpcode; - WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - - DbgPrint (ASL_PARSE_OUTPUT, "[%.4d] Opcode: %12.12s ", - Op->Asl.LogicalLineNumber, Op->Asl.ParseOpName); - - if (!(WalkState->OpInfo->Flags & AML_CONSTANT)) - { - /* The opcode is not a Type 3/4/5 opcode */ - - if (Op->Asl.CompileFlags & NODE_IS_TARGET) - { - DbgPrint (ASL_PARSE_OUTPUT, - "**** Valid Target, cannot reduce ****\n"); - } - else - { - DbgPrint (ASL_PARSE_OUTPUT, - "**** Not a Type 3/4/5 opcode ****\n"); - } - - if (WalkState->WalkType == ACPI_WALK_CONST_OPTIONAL) - { - /* - * We are looking at at normal expression to see if it can be - * reduced. It can't. No error - */ - return (AE_TYPE); - } - - /* - * This is an expression that MUST reduce to a constant, and it - * can't be reduced. This is an error - */ - if (Op->Asl.CompileFlags & NODE_IS_TARGET) - { - AslError (ASL_ERROR, ASL_MSG_INVALID_TARGET, Op, - Op->Asl.ParseOpName); - } - else - { - AslError (ASL_ERROR, ASL_MSG_INVALID_CONSTANT_OP, Op, - Op->Asl.ParseOpName); - } - - return (AE_TYPE); - } - - /* Debug output */ - - DbgPrint (ASL_PARSE_OUTPUT, "TYPE_345"); - - if (Op->Asl.CompileFlags & NODE_IS_TARGET) - { - DbgPrint (ASL_PARSE_OUTPUT, " TARGET"); - } - if (Op->Asl.CompileFlags & NODE_IS_TERM_ARG) - { - DbgPrint (ASL_PARSE_OUTPUT, " TERMARG"); - } - DbgPrint (ASL_PARSE_OUTPUT, "\n"); - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: OpcAmlConstantWalk - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Reduce an Op and its subtree to a constant if possible - * - ******************************************************************************/ - -ACPI_STATUS -OpcAmlConstantWalk ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - ACPI_WALK_STATE *WalkState; - ACPI_STATUS Status = AE_OK; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_PARSE_OBJECT *RootOp; - ACPI_PARSE_OBJECT *OriginalParentOp; - UINT8 WalkType; - - - /* - * Only interested in subtrees that could possibly contain - * expressions that can be evaluated at this time - */ - if ((!(Op->Asl.CompileFlags & NODE_COMPILE_TIME_CONST)) || - (Op->Asl.CompileFlags & NODE_IS_TARGET)) - { - return (AE_OK); - } - - /* Set the walk type based on the reduction used for this op */ - - if (Op->Asl.CompileFlags & NODE_IS_TERM_ARG) - { - /* Op is a TermArg, constant folding is merely optional */ - - if (!Gbl_FoldConstants) - { - return (AE_CTRL_DEPTH); - } - - WalkType = ACPI_WALK_CONST_OPTIONAL; - } - else - { - /* Op is a DataObject, the expression MUST reduced to a constant */ - - WalkType = ACPI_WALK_CONST_REQUIRED; - } - - /* Create a new walk state */ - - WalkState = AcpiDsCreateWalkState (0, NULL, NULL, NULL); - if (!WalkState) - { - return AE_NO_MEMORY; - } - - WalkState->NextOp = NULL; - WalkState->Params = NULL; - WalkState->CallerReturnDesc = &ObjDesc; - WalkState->WalkType = WalkType; - - /* - * Examine the entire subtree -- all nodes must be constants - * or type 3/4/5 opcodes - */ - Status = TrWalkParseTree (Op, ASL_WALK_VISIT_DOWNWARD, - OpcAmlCheckForConstant, NULL, WalkState); - - /* - * Did we find an entire subtree that contains all constants and type 3/4/5 - * opcodes? (Only AE_OK or AE_TYPE returned from above) - */ - if (Status == AE_TYPE) - { - /* Subtree cannot be reduced to a constant */ - - if (WalkState->WalkType == ACPI_WALK_CONST_OPTIONAL) - { - AcpiDsDeleteWalkState (WalkState); - return (AE_OK); - } - - /* Don't descend any further, and use a default "constant" value */ - - Status = AE_CTRL_DEPTH; - } - else - { - /* Subtree can be reduced */ - - /* Allocate a new temporary root for this subtree */ - - RootOp = TrAllocateNode (PARSEOP_INTEGER); - if (!RootOp) - { - return (AE_NO_MEMORY); - } - - RootOp->Common.AmlOpcode = AML_INT_EVAL_SUBTREE_OP; - - OriginalParentOp = Op->Common.Parent; - Op->Common.Parent = RootOp; - - /* Hand off the subtree to the AML interpreter */ - - Status = TrWalkParseTree (Op, ASL_WALK_VISIT_TWICE, - OpcAmlEvaluationWalk1, OpcAmlEvaluationWalk2, WalkState); - Op->Common.Parent = OriginalParentOp; - - /* TBD: we really *should* release the RootOp node */ - - if (ACPI_SUCCESS (Status)) - { - TotalFolds++; - - /* Get the final result */ - - Status = AcpiDsResultPop (&ObjDesc, WalkState); - } - } - - if (ACPI_FAILURE (Status)) - { - /* We could not resolve the subtree for some reason */ - - AslCoreSubsystemError (Op, Status, - "Failure during constant evaluation", FALSE); - AslError (ASL_ERROR, ASL_MSG_CONSTANT_EVALUATION, Op, - Op->Asl.ParseOpName); - - /* Set the subtree value to ZERO anyway. Eliminates further errors */ - - Op->Asl.ParseOpcode = PARSEOP_INTEGER; - Op->Common.Value.Integer = 0; - OpcSetOptimalIntegerSize (Op); - } - else - { - AslError (ASL_OPTIMIZATION, ASL_MSG_CONSTANT_FOLDED, Op, - Op->Asl.ParseOpName); - - /* - * Because we know we executed type 3/4/5 opcodes above, we know that - * the result must be either an Integer, String, or Buffer. - */ - switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) - { - case ACPI_TYPE_INTEGER: - - Op->Asl.ParseOpcode = PARSEOP_INTEGER; - Op->Common.Value.Integer = ObjDesc->Integer.Value; - OpcSetOptimalIntegerSize (Op); - - DbgPrint (ASL_PARSE_OUTPUT, - "Constant expression reduced to (INTEGER) %8.8X%8.8X\n", - ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value)); - break; - - - case ACPI_TYPE_STRING: - - Op->Asl.ParseOpcode = PARSEOP_STRING_LITERAL; - Op->Common.AmlOpcode = AML_STRING_OP; - Op->Asl.AmlLength = ACPI_STRLEN (ObjDesc->String.Pointer) + 1; - Op->Common.Value.String = ObjDesc->String.Pointer; - - DbgPrint (ASL_PARSE_OUTPUT, - "Constant expression reduced to (STRING) %s\n", - Op->Common.Value.String); - - break; - - - case ACPI_TYPE_BUFFER: - - Op->Asl.ParseOpcode = PARSEOP_BUFFER; - Op->Common.AmlOpcode = AML_BUFFER_OP; - Op->Asl.CompileFlags = NODE_AML_PACKAGE; - UtSetParseOpName (Op); - - /* Child node is the buffer length */ - - RootOp = TrAllocateNode (PARSEOP_INTEGER); - - RootOp->Asl.AmlOpcode = AML_DWORD_OP; - RootOp->Asl.Value.Integer = ObjDesc->Buffer.Length; - RootOp->Asl.Parent = Op; - - (void) OpcSetOptimalIntegerSize (RootOp); - - Op->Asl.Child = RootOp; - Op = RootOp; - UtSetParseOpName (Op); - - /* Peer to the child is the raw buffer data */ - - RootOp = TrAllocateNode (PARSEOP_RAW_DATA); - RootOp->Asl.AmlOpcode = AML_RAW_DATA_BUFFER; - RootOp->Asl.AmlLength = ObjDesc->Buffer.Length; - RootOp->Asl.Value.String = (char *) ObjDesc->Buffer.Pointer; - RootOp->Asl.Parent = Op->Asl.Parent; - - Op->Asl.Next = RootOp; - Op = RootOp; - - DbgPrint (ASL_PARSE_OUTPUT, - "Constant expression reduced to (BUFFER) length %X\n", - ObjDesc->Buffer.Length); - break; - - - default: - printf ("Unsupported return type: %s\n", - AcpiUtGetObjectTypeName (ObjDesc)); - break; - } - } - - UtSetParseOpName (Op); - Op->Asl.Child = NULL; - - AcpiDsDeleteWalkState (WalkState); - - return (AE_CTRL_DEPTH); -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/aslglobal.h b/sys/contrib/dev/acpica-unix-20061109/compiler/aslglobal.h deleted file mode 100644 index d31fc541f8..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/aslglobal.h +++ /dev/null @@ -1,278 +0,0 @@ - - -/****************************************************************************** - * - * Module Name: aslglobal.h - Global variable definitions - * $Revision: 1.55 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#ifndef __ASLGLOBAL_H -#define __ASLGLOBAL_H - - -/* - * Global variables. Defined in aslmain.c only, externed in all other files - */ - -#undef ASL_EXTERN - -#ifdef _DECLARE_GLOBALS -#define ASL_EXTERN -#define ASL_INIT_GLOBAL(a,b) (a)=(b) -#else -#define ASL_EXTERN extern -#define ASL_INIT_GLOBAL(a,b) (a) -#endif - - -/* - * Parser and other externals - */ -extern int yydebug; -extern FILE *AslCompilerin; -extern int AslCompilerdebug; -extern const ASL_MAPPING_ENTRY AslKeywordMapping[]; -extern char *AslCompilertext; -extern char hex[]; - -#define ASL_LINE_BUFFER_SIZE 512 -#define ASL_MSG_BUFFER_SIZE 4096 -#define HEX_TABLE_LINE_SIZE 8 -#define HEX_LISTING_LINE_SIZE 16 - - -/* Source code buffers and pointers for error reporting */ - -ASL_EXTERN char Gbl_CurrentLineBuffer[ASL_LINE_BUFFER_SIZE]; -ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_CurrentColumn, 0); -ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_CurrentLineNumber, 1); -ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_LogicalLineNumber, 1); -ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_CurrentLineOffset, 0); -ASL_EXTERN char ASL_INIT_GLOBAL (*Gbl_LineBufPtr, Gbl_CurrentLineBuffer); - - -/* Exception reporting */ - -ASL_EXTERN ASL_ERROR_MSG ASL_INIT_GLOBAL (*Gbl_ErrorLog,NULL); -ASL_EXTERN ASL_ERROR_MSG ASL_INIT_GLOBAL (*Gbl_NextError,NULL); -extern UINT32 Gbl_ExceptionCount[]; - - -/* Option flags */ - -ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_Acpi2, FALSE); -ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_UseDefaultAmlFilename, TRUE); -ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_NsOutputFlag, FALSE); -ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_DebugFlag, FALSE); -ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_AsmOutputFlag, FALSE); -ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_C_OutputFlag, FALSE); -ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_AsmIncludeOutputFlag, FALSE); -ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_C_IncludeOutputFlag, FALSE); -ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_ListingFlag, FALSE); -ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_IgnoreErrors, FALSE); -ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_SourceOutputFlag, FALSE); -ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_ParseOnlyFlag, FALSE); -ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_CompileTimesFlag, FALSE); -ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_FoldConstants, TRUE); -ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_VerboseErrors, TRUE); -ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_DisasmFlag, FALSE); -ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_GetAllTables, FALSE); -ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_IntegerOptimizationFlag, TRUE); -ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_ReferenceOptimizationFlag, TRUE); -ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_DisplayRemarks, TRUE); -ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_DisplayOptimizations, FALSE); -ASL_EXTERN UINT8 ASL_INIT_GLOBAL (Gbl_WarningLevel, ASL_WARNING); - - -#define HEX_OUTPUT_NONE 0 -#define HEX_OUTPUT_C 1 -#define HEX_OUTPUT_ASM 2 -ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_HexOutputFlag, HEX_OUTPUT_NONE); - - -/* Files */ - -ASL_EXTERN ASL_FILE_INFO Gbl_Files [ASL_NUM_FILES]; - -ASL_EXTERN char *Gbl_DirectoryPath; -ASL_EXTERN char ASL_INIT_GLOBAL (*Gbl_ExternalFilename, NULL); -ASL_EXTERN char ASL_INIT_GLOBAL (*Gbl_IncludeFilename, NULL); -ASL_EXTERN char ASL_INIT_GLOBAL (*Gbl_OutputFilenamePrefix, NULL); -ASL_EXTERN char *Gbl_CurrentInputFilename; - -ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_HasIncludeFiles, FALSE); - - -/* Statistics */ - -ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_InputByteCount, 0); -ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_NsLookupCount, 0); -ASL_EXTERN UINT32 ASL_INIT_GLOBAL (TotalKeywords, 0); -ASL_EXTERN UINT32 ASL_INIT_GLOBAL (TotalNamedObjects, 0); -ASL_EXTERN UINT32 ASL_INIT_GLOBAL (TotalExecutableOpcodes, 0); -ASL_EXTERN UINT32 ASL_INIT_GLOBAL (TotalParseNodes, 0); -ASL_EXTERN UINT32 ASL_INIT_GLOBAL (TotalMethods, 0); -ASL_EXTERN UINT32 ASL_INIT_GLOBAL (TotalAllocations, 0); -ASL_EXTERN UINT32 ASL_INIT_GLOBAL (TotalAllocated, 0); -ASL_EXTERN UINT32 ASL_INIT_GLOBAL (TotalFolds, 0); - - -/* Misc */ - -ASL_EXTERN UINT8 ASL_INIT_GLOBAL (Gbl_RevisionOverride, 0); -ASL_EXTERN UINT8 ASL_INIT_GLOBAL (Gbl_TempCount, 0); -ASL_EXTERN ACPI_PARSE_OBJECT ASL_INIT_GLOBAL (*RootNode, NULL); -ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_TableLength, 0); -ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_SourceLine, 0); -ASL_EXTERN ASL_LISTING_NODE ASL_INIT_GLOBAL (*Gbl_ListingNode, NULL); -ASL_EXTERN ACPI_PARSE_OBJECT ASL_INIT_GLOBAL (*Gbl_NodeCacheNext, NULL); -ASL_EXTERN ACPI_PARSE_OBJECT ASL_INIT_GLOBAL (*Gbl_NodeCacheLast, NULL); -ASL_EXTERN char ASL_INIT_GLOBAL (*Gbl_StringCacheNext, NULL); -ASL_EXTERN char ASL_INIT_GLOBAL (*Gbl_StringCacheLast, NULL); -ASL_EXTERN ACPI_PARSE_OBJECT *Gbl_FirstLevelInsertionNode; - - -ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_CurrentHexColumn, 0); -ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_CurrentAmlOffset, 0); -ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_CurrentLine, 0); -ASL_EXTERN UINT8 ASL_INIT_GLOBAL (Gbl_HexBytesWereWritten, FALSE); -ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_NumNamespaceObjects, 0); -ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_ReservedMethods, 0); -ASL_EXTERN char ASL_INIT_GLOBAL (*Gbl_TableSignature, "NO_SIG"); -ASL_EXTERN char ASL_INIT_GLOBAL (*Gbl_TableId, "NO_ID"); -ASL_EXTERN FILE *AcpiGbl_DebugFile; /* Placeholder for oswinxf only */ - - -/* Static structures */ - -ASL_EXTERN ASL_ANALYSIS_WALK_INFO AnalysisWalkInfo; -ASL_EXTERN ACPI_TABLE_HEADER TableHeader; -extern const ASL_RESERVED_INFO ReservedMethods[]; - -/* Event timing */ - -#define ASL_NUM_EVENTS 19 -ASL_EXTERN ASL_EVENT_INFO AslGbl_Events[ASL_NUM_EVENTS]; -ASL_EXTERN UINT8 AslGbl_NextEvent; -ASL_EXTERN UINT8 AslGbl_NamespaceEvent; - -/* Scratch buffers */ - -ASL_EXTERN UINT8 Gbl_AmlBuffer[HEX_LISTING_LINE_SIZE]; -ASL_EXTERN char MsgBuffer[ASL_MSG_BUFFER_SIZE]; -ASL_EXTERN char StringBuffer[ASL_MSG_BUFFER_SIZE]; -ASL_EXTERN char StringBuffer2[ASL_MSG_BUFFER_SIZE]; - -#endif /* __ASLGLOBAL_H */ - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/asllength.c b/sys/contrib/dev/acpica-unix-20061109/compiler/asllength.c deleted file mode 100644 index 6ebe2a2d32..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/asllength.c +++ /dev/null @@ -1,531 +0,0 @@ - -/****************************************************************************** - * - * Module Name: asllength - Tree walk to determine package and opcode lengths - * $Revision: 1.36 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "aslcompiler.h" -#include "aslcompiler.y.h" -#include "amlcode.h" - - -#define _COMPONENT ACPI_COMPILER - ACPI_MODULE_NAME ("asllength") - -/* Local prototypes */ - -static UINT8 -CgGetPackageLenByteCount ( - ACPI_PARSE_OBJECT *Op, - UINT32 PackageLength); - -static void -CgGenerateAmlOpcodeLength ( - ACPI_PARSE_OBJECT *Op); - - -#ifdef ACPI_OBSOLETE_FUNCTIONS -void -LnAdjustLengthToRoot ( - ACPI_PARSE_OBJECT *Op, - UINT32 LengthDelta); -#endif - - -/******************************************************************************* - * - * FUNCTION: LnInitLengthsWalk - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Walk callback to initialize (and re-initialize) the node - * subtree length(s) to zero. The Subtree lengths are bubbled - * up to the root node in order to get a total AML length. - * - ******************************************************************************/ - -ACPI_STATUS -LnInitLengthsWalk ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - - Op->Asl.AmlSubtreeLength = 0; - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: LnPackageLengthWalk - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Walk callback to calculate the total AML length. - * 1) Calculate the AML lengths (opcode, package length, etc.) for - * THIS node. - * 2) Bubbble up all of these lengths to the parent node by summing - * them all into the parent subtree length. - * - * Note: The SubtreeLength represents the total AML length of all child nodes - * in all subtrees under a given node. Therefore, once this walk is - * complete, the Root Node subtree length is the AML length of the entire - * tree (and thus, the entire ACPI table) - * - ******************************************************************************/ - -ACPI_STATUS -LnPackageLengthWalk ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - - /* Generate the AML lengths for this node */ - - CgGenerateAmlLengths (Op); - - /* Bubble up all lengths (this node and all below it) to the parent */ - - if ((Op->Asl.Parent) && - (Op->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG)) - { - Op->Asl.Parent->Asl.AmlSubtreeLength += (Op->Asl.AmlLength + - Op->Asl.AmlOpcodeLength + - Op->Asl.AmlPkgLenBytes + - Op->Asl.AmlSubtreeLength); - } - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: CgGetPackageLenByteCount - * - * PARAMETERS: Op - Parse node - * PackageLength - Length to be encoded - * - * RETURN: Required length of the package length encoding - * - * DESCRIPTION: Calculate the number of bytes required to encode the given - * package length. - * - ******************************************************************************/ - -static UINT8 -CgGetPackageLenByteCount ( - ACPI_PARSE_OBJECT *Op, - UINT32 PackageLength) -{ - - /* - * Determine the number of bytes required to encode the package length - * Note: the package length includes the number of bytes used to encode - * the package length, so we must account for this also. - */ - if (PackageLength <= (0x0000003F - 1)) - { - return (1); - } - else if (PackageLength <= (0x00000FFF - 2)) - { - return (2); - } - else if (PackageLength <= (0x000FFFFF - 3)) - { - return (3); - } - else if (PackageLength <= (0x0FFFFFFF - 4)) - { - return (4); - } - else - { - /* Fatal error - the package length is too large to encode */ - - AslError (ASL_ERROR, ASL_MSG_ENCODING_LENGTH, Op, NULL); - } - - return (0); -} - - -/******************************************************************************* - * - * FUNCTION: CgGenerateAmlOpcodeLength - * - * PARAMETERS: Op - Parse node whose AML opcode lengths will be - * calculated - * - * RETURN: None. - * - * DESCRIPTION: Calculate the AmlOpcodeLength, AmlPkgLenBytes, and AmlLength - * fields for this node. - * - ******************************************************************************/ - -static void -CgGenerateAmlOpcodeLength ( - ACPI_PARSE_OBJECT *Op) -{ - - /* Check for two-byte opcode */ - - if (Op->Asl.AmlOpcode > 0x00FF) - { - Op->Asl.AmlOpcodeLength = 2; - } - else - { - Op->Asl.AmlOpcodeLength = 1; - } - - /* Does this opcode have an associated "PackageLength" field? */ - - Op->Asl.AmlPkgLenBytes = 0; - if (Op->Asl.CompileFlags & NODE_AML_PACKAGE) - { - Op->Asl.AmlPkgLenBytes = CgGetPackageLenByteCount ( - Op, Op->Asl.AmlSubtreeLength); - } - - /* Data opcode lengths are easy */ - - switch (Op->Asl.AmlOpcode) - { - case AML_BYTE_OP: - - Op->Asl.AmlLength = 1; - break; - - case AML_WORD_OP: - - Op->Asl.AmlLength = 2; - break; - - case AML_DWORD_OP: - - Op->Asl.AmlLength = 4; - break; - - case AML_QWORD_OP: - - Op->Asl.AmlLength = 8; - break; - - default: - /* All data opcodes must be above */ - break; - } -} - - -/******************************************************************************* - * - * FUNCTION: CgGenerateAmlLengths - * - * PARAMETERS: Op - Parse node - * - * RETURN: None. - * - * DESCRIPTION: Generate internal length fields based on the AML opcode or - * parse opcode. - * - ******************************************************************************/ - -void -CgGenerateAmlLengths ( - ACPI_PARSE_OBJECT *Op) -{ - char *Buffer; - ACPI_STATUS Status; - - - switch (Op->Asl.AmlOpcode) - { - case AML_RAW_DATA_BYTE: - - Op->Asl.AmlOpcodeLength = 0; - Op->Asl.AmlLength = 1; - return; - - case AML_RAW_DATA_WORD: - - Op->Asl.AmlOpcodeLength = 0; - Op->Asl.AmlLength = 2; - return; - - case AML_RAW_DATA_DWORD: - - Op->Asl.AmlOpcodeLength = 0; - Op->Asl.AmlLength = 4; - return; - - case AML_RAW_DATA_QWORD: - - Op->Asl.AmlOpcodeLength = 0; - Op->Asl.AmlLength = 8; - return; - - case AML_RAW_DATA_BUFFER: - - /* Aml length is/was set by creator */ - - Op->Asl.AmlOpcodeLength = 0; - return; - - case AML_RAW_DATA_CHAIN: - - /* Aml length is/was set by creator */ - - Op->Asl.AmlOpcodeLength = 0; - return; - - default: - break; - } - - switch (Op->Asl.ParseOpcode) - { - case PARSEOP_DEFINITIONBLOCK: - - Gbl_TableLength = sizeof (ACPI_TABLE_HEADER) + - Op->Asl.AmlSubtreeLength; - break; - - case PARSEOP_NAMESEG: - - Op->Asl.AmlOpcodeLength = 0; - Op->Asl.AmlLength = 4; - Op->Asl.ExternalName = Op->Asl.Value.String; - break; - - case PARSEOP_NAMESTRING: - case PARSEOP_METHODCALL: - - if (Op->Asl.CompileFlags & NODE_NAME_INTERNALIZED) - { - break; - } - - Op->Asl.AmlOpcodeLength = 0; - Status = UtInternalizeName (Op->Asl.Value.String, &Buffer); - if (ACPI_FAILURE (Status)) - { - DbgPrint (ASL_DEBUG_OUTPUT, - "Failure from internalize name %X\n", Status); - break; - } - - Op->Asl.ExternalName = Op->Asl.Value.String; - Op->Asl.Value.String = Buffer; - Op->Asl.CompileFlags |= NODE_NAME_INTERNALIZED; - - Op->Asl.AmlLength = strlen (Buffer); - - /* - * Check for single backslash reference to root, - * make it a null terminated string in the AML - */ - if (Op->Asl.AmlLength == 1) - { - Op->Asl.AmlLength = 2; - } - break; - - case PARSEOP_STRING_LITERAL: - - Op->Asl.AmlOpcodeLength = 1; - - /* Get null terminator */ - - Op->Asl.AmlLength = strlen (Op->Asl.Value.String) + 1; - break; - - case PARSEOP_PACKAGE_LENGTH: - - Op->Asl.AmlOpcodeLength = 0; - Op->Asl.AmlPkgLenBytes = CgGetPackageLenByteCount (Op, - (UINT32) Op->Asl.Value.Integer); - break; - - case PARSEOP_RAW_DATA: - - Op->Asl.AmlOpcodeLength = 0; - break; - - case PARSEOP_DEFAULT_ARG: - case PARSEOP_EXTERNAL: - case PARSEOP_INCLUDE: - case PARSEOP_INCLUDE_END: - - /* Ignore the "default arg" nodes, they are extraneous at this point */ - - break; - - default: - - CgGenerateAmlOpcodeLength (Op); - break; - } -} - - -#ifdef ACPI_OBSOLETE_FUNCTIONS -/******************************************************************************* - * - * FUNCTION: LnAdjustLengthToRoot - * - * PARAMETERS: Op - Node whose Length was changed - * - * RETURN: None. - * - * DESCRIPTION: Change the Subtree length of the given node, and bubble the - * change all the way up to the root node. This allows for - * last second changes to a package length (for example, if the - * package length encoding gets shorter or longer.) - * - ******************************************************************************/ - -void -LnAdjustLengthToRoot ( - ACPI_PARSE_OBJECT *SubtreeOp, - UINT32 LengthDelta) -{ - ACPI_PARSE_OBJECT *Op; - - - /* Adjust all subtree lengths up to the root */ - - Op = SubtreeOp->Asl.Parent; - while (Op) - { - Op->Asl.AmlSubtreeLength -= LengthDelta; - Op = Op->Asl.Parent; - } - - /* Adjust the global table length */ - - Gbl_TableLength -= LengthDelta; -} -#endif - - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/asllisting.c b/sys/contrib/dev/acpica-unix-20061109/compiler/asllisting.c deleted file mode 100644 index b8e6492220..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/asllisting.c +++ /dev/null @@ -1,1494 +0,0 @@ - -/****************************************************************************** - * - * Module Name: asllisting - Listing file generation - * $Revision: 1.62 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "aslcompiler.h" -#include "aslcompiler.y.h" -#include "amlcode.h" -#include "acparser.h" -#include "acnamesp.h" - -#define _COMPONENT ACPI_COMPILER - ACPI_MODULE_NAME ("aslisting") - -/* Local prototypes */ - -static void -LsDumpAscii ( - UINT32 FileId, - UINT32 Count, - UINT8 *Buffer); - -static void -LsDumpAsciiInComment ( - UINT32 FileId, - UINT32 Count, - UINT8 *Buffer); - -static ACPI_STATUS -LsAmlListingWalk ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -static void -LsGenerateListing ( - UINT32 FileId); - -static void -LsPushNode ( - char *Filename); - -static ASL_LISTING_NODE * -LsPopNode ( - void); - -static void -LsCheckException ( - UINT32 LineNumber, - UINT32 FileId); - -static void -LsFlushListingBuffer ( - UINT32 FileId); - -static void -LsWriteListingHexBytes ( - UINT8 *Buffer, - UINT32 Length, - UINT32 FileId); - -static UINT32 -LsWriteOneSourceLine ( - UINT32 FileId); - -static void -LsFinishSourceListing ( - UINT32 FileId); - -static void -LsWriteSourceLines ( - UINT32 ToLineNumber, - UINT32 ToLogicalLineNumber, - UINT32 FileId); - -static void -LsWriteNodeToListing ( - ACPI_PARSE_OBJECT *Op, - UINT32 FileId); - -static void -LsDoHexOutputC ( - void); - -static void -LsDoHexOutputAsm ( - void); - - -/******************************************************************************* - * - * FUNCTION: LsTreeWriteWalk - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * - * RETURN: None. - * - * DESCRIPTION: Dump entire parse tree, for compiler debug only - * - ******************************************************************************/ - -ACPI_STATUS -LsTreeWriteWalk ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - - /* Debug output */ - - DbgPrint (ASL_TREE_OUTPUT, - "%5.5d [%2d]", Op->Asl.LogicalLineNumber, Level); - UtPrintFormattedName (Op->Asl.ParseOpcode, Level); - - - DbgPrint (ASL_TREE_OUTPUT, "\n"); - return (AE_OK); -} - - -void -LsDumpParseTree ( - void) -{ - - if (!Gbl_DebugFlag) - { - return; - } - - DbgPrint (ASL_TREE_OUTPUT, "\nOriginal parse tree from parser:\n\n"); - TrWalkParseTree (RootNode, ASL_WALK_VISIT_DOWNWARD, - LsTreeWriteWalk, NULL, NULL); -} - - -/******************************************************************************* - * - * FUNCTION: LsDumpAscii - * - * PARAMETERS: FileId - ID of current listing file - * Count - Number of bytes to convert - * Buffer - Buffer of bytes to convert - * - * RETURN: None. - * - * DESCRIPTION: Convert hex bytes to ascii - * - ******************************************************************************/ - -static void -LsDumpAscii ( - UINT32 FileId, - UINT32 Count, - UINT8 *Buffer) -{ - UINT8 BufChar; - UINT32 i; - - - FlPrintFile (FileId, " \""); - for (i = 0; i < Count; i++) - { - BufChar = Buffer[i]; - if (isprint (BufChar)) - { - FlPrintFile (FileId, "%c", BufChar); - } - else - { - /* Not a printable character, just put out a dot */ - - FlPrintFile (FileId, "."); - } - } - FlPrintFile (FileId, "\""); -} - - -/******************************************************************************* - * - * FUNCTION: LsDumpAsciiInComment - * - * PARAMETERS: FileId - ID of current listing file - * Count - Number of bytes to convert - * Buffer - Buffer of bytes to convert - * - * RETURN: None. - * - * DESCRIPTION: Convert hex bytes to ascii - * - ******************************************************************************/ - -static void -LsDumpAsciiInComment ( - UINT32 FileId, - UINT32 Count, - UINT8 *Buffer) -{ - UINT8 BufChar = 0; - UINT8 LastChar; - UINT32 i; - - - FlPrintFile (FileId, " \""); - for (i = 0; i < Count; i++) - { - LastChar = BufChar; - BufChar = Buffer[i]; - - if (isprint (BufChar)) - { - /* Handle embedded C comment sequences */ - - if (((LastChar == '*') && (BufChar == '/')) || - ((LastChar == '/') && (BufChar == '*'))) - { - /* Insert a space to break the sequence */ - - FlPrintFile (FileId, ".", BufChar); - } - - FlPrintFile (FileId, "%c", BufChar); - } - else - { - /* Not a printable character, just put out a dot */ - - FlPrintFile (FileId, "."); - } - } - FlPrintFile (FileId, "\""); -} - - -/******************************************************************************* - * - * FUNCTION: LsAmlListingWalk - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Process one node during a listing file generation. - * - ******************************************************************************/ - -static ACPI_STATUS -LsAmlListingWalk ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - UINT8 FileByte; - UINT32 i; - UINT32 FileId = (UINT32) ACPI_TO_INTEGER (Context); - - - LsWriteNodeToListing (Op, FileId); - - if (Op->Asl.CompileFlags & NODE_IS_RESOURCE_DATA) - { - /* Buffer is a resource template, don't dump the data all at once */ - - return (AE_OK); - } - - /* Write the hex bytes to the listing file(s) (if requested) */ - - for (i = 0; i < Op->Asl.FinalAmlLength; i++) - { - if (ACPI_FAILURE (FlReadFile (ASL_FILE_AML_OUTPUT, &FileByte, 1))) - { - FlFileError (ASL_FILE_AML_OUTPUT, ASL_MSG_READ); - AslAbort (); - } - LsWriteListingHexBytes (&FileByte, 1, FileId); - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: LsGenerateListing - * - * PARAMETERS: FileId - ID of listing file - * - * RETURN: None - * - * DESCRIPTION: Generate a listing file. This can be one of the several types - * of "listings" supported. - * - ******************************************************************************/ - -static void -LsGenerateListing ( - UINT32 FileId) -{ - - /* Start at the beginning of both the source and AML files */ - - FlSeekFile (ASL_FILE_SOURCE_OUTPUT, 0); - FlSeekFile (ASL_FILE_AML_OUTPUT, 0); - Gbl_SourceLine = 0; - Gbl_CurrentHexColumn = 0; - LsPushNode (Gbl_Files[ASL_FILE_INPUT].Filename); - - /* Process all parse nodes */ - - TrWalkParseTree (RootNode, ASL_WALK_VISIT_DOWNWARD, LsAmlListingWalk, - NULL, (void *) ACPI_TO_POINTER (FileId)); - - /* Final processing */ - - LsFinishSourceListing (FileId); -} - - -/******************************************************************************* - * - * FUNCTION: LsDoListings - * - * PARAMETERS: None. - * - * RETURN: None - * - * DESCRIPTION: Generate all requested listing files. - * - ******************************************************************************/ - -void -LsDoListings ( - void) -{ - - if (Gbl_C_OutputFlag) - { - LsGenerateListing (ASL_FILE_C_SOURCE_OUTPUT); - } - - if (Gbl_ListingFlag) - { - LsGenerateListing (ASL_FILE_LISTING_OUTPUT); - } - - if (Gbl_AsmOutputFlag) - { - LsGenerateListing (ASL_FILE_ASM_SOURCE_OUTPUT); - } - - if (Gbl_C_IncludeOutputFlag) - { - LsGenerateListing (ASL_FILE_C_INCLUDE_OUTPUT); - } - - if (Gbl_AsmIncludeOutputFlag) - { - LsGenerateListing (ASL_FILE_ASM_INCLUDE_OUTPUT); - } -} - - -/******************************************************************************* - * - * FUNCTION: LsPushNode - * - * PARAMETERS: Filename - Pointer to the include filename - * - * RETURN: None - * - * DESCRIPTION: Push a listing node on the listing/include file stack. This - * stack enables tracking of include files (infinitely nested) - * and resumption of the listing of the parent file when the - * include file is finished. - * - ******************************************************************************/ - -static void -LsPushNode ( - char *Filename) -{ - ASL_LISTING_NODE *Lnode; - - - /* Create a new node */ - - Lnode = UtLocalCalloc (sizeof (ASL_LISTING_NODE)); - - /* Initialize */ - - Lnode->Filename = Filename; - Lnode->LineNumber = 0; - - /* Link (push) */ - - Lnode->Next = Gbl_ListingNode; - Gbl_ListingNode = Lnode; -} - - -/******************************************************************************* - * - * FUNCTION: LsPopNode - * - * PARAMETERS: None - * - * RETURN: List head after current head is popped off - * - * DESCRIPTION: Pop the current head of the list, free it, and return the - * next node on the stack (the new current node). - * - ******************************************************************************/ - -static ASL_LISTING_NODE * -LsPopNode ( - void) -{ - ASL_LISTING_NODE *Lnode; - - - /* Just grab the node at the head of the list */ - - Lnode = Gbl_ListingNode; - if ((!Lnode) || - (!Lnode->Next)) - { - AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, NULL, - "Could not pop empty listing stack"); - return Gbl_ListingNode; - } - - Gbl_ListingNode = Lnode->Next; - ACPI_FREE (Lnode); - - /* New "Current" node is the new head */ - - return (Gbl_ListingNode); -} - - -/******************************************************************************* - * - * FUNCTION: LsCheckException - * - * PARAMETERS: LineNumber - Current logical (cumulative) line # - * FileId - ID of output listing file - * - * RETURN: None - * - * DESCRIPTION: Check if there is an exception for this line, and if there is, - * put it in the listing immediately. Handles multiple errors - * per line. Gbl_NextError points to the next error in the - * sorted (by line #) list of compile errors/warnings. - * - ******************************************************************************/ - -static void -LsCheckException ( - UINT32 LineNumber, - UINT32 FileId) -{ - - if ((!Gbl_NextError) || - (LineNumber < Gbl_NextError->LogicalLineNumber )) - { - return; - } - - /* Handle multiple errors per line */ - - if (FileId == ASL_FILE_LISTING_OUTPUT) - { - while (Gbl_NextError && - (LineNumber >= Gbl_NextError->LogicalLineNumber)) - { - AePrintException (FileId, Gbl_NextError, "\n[****iasl****]\n"); - - Gbl_NextError = Gbl_NextError->Next; - } - - FlPrintFile (FileId, "\n"); - } -} - - -/******************************************************************************* - * - * FUNCTION: LsFlushListingBuffer - * - * PARAMETERS: FileId - ID of the listing file - * - * RETURN: None - * - * DESCRIPTION: Flush out the current contents of the 16-byte hex AML code - * buffer. Usually called at the termination of a single line - * of source code or when the buffer is full. - * - ******************************************************************************/ - -static void -LsFlushListingBuffer ( - UINT32 FileId) -{ - UINT32 i; - - - if (Gbl_CurrentHexColumn == 0) - { - return; - } - - /* Write the hex bytes */ - - switch (FileId) - { - case ASL_FILE_LISTING_OUTPUT: - - for (i = 0; i < Gbl_CurrentHexColumn; i++) - { - FlPrintFile (FileId, "%2.2X ", Gbl_AmlBuffer[i]); - } - - for (i = 0; i < ((HEX_LISTING_LINE_SIZE - Gbl_CurrentHexColumn) * 3); i++) - { - FlWriteFile (FileId, ".", 1); - } - - /* Write the ASCII character associated with each of the bytes */ - - LsDumpAscii (FileId, Gbl_CurrentHexColumn, Gbl_AmlBuffer); - break; - - - case ASL_FILE_ASM_SOURCE_OUTPUT: - - for (i = 0; i < Gbl_CurrentHexColumn; i++) - { - if (i > 0) - { - FlPrintFile (FileId, ","); - } - FlPrintFile (FileId, "0%2.2Xh", Gbl_AmlBuffer[i]); - } - - for (i = 0; i < ((HEX_LISTING_LINE_SIZE - Gbl_CurrentHexColumn) * 5); i++) - { - FlWriteFile (FileId, " ", 1); - } - - FlPrintFile (FileId, " ;%8.8X", - Gbl_CurrentAmlOffset - HEX_LISTING_LINE_SIZE); - - /* Write the ASCII character associated with each of the bytes */ - - LsDumpAscii (FileId, Gbl_CurrentHexColumn, Gbl_AmlBuffer); - break; - - - case ASL_FILE_C_SOURCE_OUTPUT: - - for (i = 0; i < Gbl_CurrentHexColumn; i++) - { - FlPrintFile (FileId, "0x%2.2X,", Gbl_AmlBuffer[i]); - } - - for (i = 0; i < ((HEX_LISTING_LINE_SIZE - Gbl_CurrentHexColumn) * 5); i++) - { - FlWriteFile (FileId, " ", 1); - } - - FlPrintFile (FileId, " /* %8.8X", - Gbl_CurrentAmlOffset - HEX_LISTING_LINE_SIZE); - - /* Write the ASCII character associated with each of the bytes */ - - LsDumpAsciiInComment (FileId, Gbl_CurrentHexColumn, Gbl_AmlBuffer); - FlPrintFile (FileId, " */"); - break; - - default: - /* No other types supported */ - return; - } - - FlPrintFile (FileId, "\n"); - - Gbl_CurrentHexColumn = 0; - Gbl_HexBytesWereWritten = TRUE; -} - - -/******************************************************************************* - * - * FUNCTION: LsWriteListingHexBytes - * - * PARAMETERS: Buffer - AML code buffer - * Length - Number of AML bytes to write - * FileId - ID of current listing file. - * - * RETURN: None - * - * DESCRIPTION: Write the contents of the AML buffer to the listing file via - * the listing buffer. The listing buffer is flushed every 16 - * AML bytes. - * - ******************************************************************************/ - -static void -LsWriteListingHexBytes ( - UINT8 *Buffer, - UINT32 Length, - UINT32 FileId) -{ - UINT32 i; - - - /* Transfer all requested bytes */ - - for (i = 0; i < Length; i++) - { - /* Print line header when buffer is empty */ - - if (Gbl_CurrentHexColumn == 0) - { - if (Gbl_HasIncludeFiles) - { - FlPrintFile (FileId, "%*s", 10, " "); - } - - switch (FileId) - { - case ASL_FILE_LISTING_OUTPUT: - - FlPrintFile (FileId, "%8.8X....", Gbl_CurrentAmlOffset); - break; - - case ASL_FILE_ASM_SOURCE_OUTPUT: - - FlPrintFile (FileId, " db "); - break; - - case ASL_FILE_C_SOURCE_OUTPUT: - - FlPrintFile (FileId, " "); - break; - - default: - /* No other types supported */ - return; - } - } - - /* Transfer AML byte and update counts */ - - Gbl_AmlBuffer[Gbl_CurrentHexColumn] = Buffer[i]; - - Gbl_CurrentHexColumn++; - Gbl_CurrentAmlOffset++; - - /* Flush buffer when it is full */ - - if (Gbl_CurrentHexColumn >= HEX_LISTING_LINE_SIZE) - { - LsFlushListingBuffer (FileId); - } - } -} - - -/******************************************************************************* - * - * FUNCTION: LsWriteOneSourceLine - * - * PARAMETERS: FileID - ID of current listing file - * - * RETURN: FALSE on EOF (input source file), TRUE otherwise - * - * DESCRIPTION: Read one line from the input source file and echo it to the - * listing file, prefixed with the line number, and if the source - * file contains include files, prefixed with the current filename - * - ******************************************************************************/ - -static UINT32 -LsWriteOneSourceLine ( - UINT32 FileId) -{ - UINT8 FileByte; - - - Gbl_SourceLine++; - Gbl_ListingNode->LineNumber++; - - if (FileId == ASL_FILE_C_SOURCE_OUTPUT) - { - FlPrintFile (FileId, " *"); - } - if (FileId == ASL_FILE_ASM_SOURCE_OUTPUT) - { - FlPrintFile (FileId, "; "); - } - - if (Gbl_HasIncludeFiles) - { - /* - * This file contains "include" statements, print the current - * filename and line number within the current file - */ - FlPrintFile (FileId, "%12s %5d....", - Gbl_ListingNode->Filename, Gbl_ListingNode->LineNumber); - } - else - { - /* No include files, just print the line number */ - - FlPrintFile (FileId, "%8d....", Gbl_SourceLine); - } - - /* Read one line (up to a newline or EOF) */ - - while (FlReadFile (ASL_FILE_SOURCE_OUTPUT, &FileByte, 1) == AE_OK) - { - if (FileId == ASL_FILE_C_SOURCE_OUTPUT) - { - if (FileByte == '/') - { - FileByte = '*'; - } - } - - FlWriteFile (FileId, &FileByte, 1); - if (FileByte == '\n') - { - /* - * Check if an error occurred on this source line during the compile. - * If so, we print the error message after the source line. - */ - LsCheckException (Gbl_SourceLine, FileId); - return (1); - } - } - - /* EOF on the input file was reached */ - - return (0); -} - - -/******************************************************************************* - * - * FUNCTION: LsFinishSourceListing - * - * PARAMETERS: FileId - ID of current listing file. - * - * RETURN: None - * - * DESCRIPTION: Cleanup routine for the listing file. Flush the hex AML - * listing buffer, and flush out any remaining lines in the - * source input file. - * - ******************************************************************************/ - -static void -LsFinishSourceListing ( - UINT32 FileId) -{ - - if ((FileId == ASL_FILE_ASM_INCLUDE_OUTPUT) || - (FileId == ASL_FILE_C_INCLUDE_OUTPUT)) - { - return; - } - - LsFlushListingBuffer (FileId); - Gbl_CurrentAmlOffset = 0; - - /* Flush any remaining text in the source file */ - - if (FileId == ASL_FILE_C_SOURCE_OUTPUT) - { - FlPrintFile (FileId, " /*\n"); - } - - while (LsWriteOneSourceLine (FileId)) - { ; } - - if (FileId == ASL_FILE_C_SOURCE_OUTPUT) - { - FlPrintFile (FileId, "\n */\n };\n"); - } - - FlPrintFile (FileId, "\n"); - - if (FileId == ASL_FILE_LISTING_OUTPUT) - { - /* Print a summary of the compile exceptions */ - - FlPrintFile (FileId, "\n\nSummary of errors and warnings\n\n"); - AePrintErrorLog (FileId); - FlPrintFile (FileId, "\n\n"); - UtDisplaySummary (FileId); - FlPrintFile (FileId, "\n\n"); - } -} - - -/******************************************************************************* - * - * FUNCTION: LsWriteSourceLines - * - * PARAMETERS: ToLineNumber - - * ToLogicalLineNumber - Write up to this source line number - * FileId - ID of current listing file - * - * RETURN: None - * - * DESCRIPTION: Read then write source lines to the listing file until we have - * reached the specified logical (cumulative) line number. This - * automatically echos out comment blocks and other non-AML - * generating text until we get to the actual AML-generating line - * of ASL code specified by the logical line number. - * - ******************************************************************************/ - -static void -LsWriteSourceLines ( - UINT32 ToLineNumber, - UINT32 ToLogicalLineNumber, - UINT32 FileId) -{ - - if ((FileId == ASL_FILE_ASM_INCLUDE_OUTPUT) || - (FileId == ASL_FILE_C_INCLUDE_OUTPUT)) - { - return; - } - - Gbl_CurrentLine = ToLogicalLineNumber; - - /* Flush any hex bytes remaining from the last opcode */ - - LsFlushListingBuffer (FileId); - - /* Read lines and write them as long as we are not caught up */ - - if (Gbl_SourceLine < Gbl_CurrentLine) - { - /* - * If we just completed writing some AML hex bytes, output a linefeed - * to add some whitespace for readability. - */ - if (Gbl_HexBytesWereWritten) - { - FlPrintFile (FileId, "\n"); - Gbl_HexBytesWereWritten = FALSE; - } - - if (FileId == ASL_FILE_C_SOURCE_OUTPUT) - { - FlPrintFile (FileId, " /*\n"); - } - - /* Write one line at a time until we have reached the target line # */ - - while ((Gbl_SourceLine < Gbl_CurrentLine) && - LsWriteOneSourceLine (FileId)) - { ; } - - if (FileId == ASL_FILE_C_SOURCE_OUTPUT) - { - FlPrintFile (FileId, " */"); - } - FlPrintFile (FileId, "\n"); - } -} - - -/******************************************************************************* - * - * FUNCTION: LsWriteNodeToListing - * - * PARAMETERS: Op - Parse node to write to the listing file. - * FileId - ID of current listing file - * - * RETURN: None. - * - * DESCRIPTION: Write "a node" to the listing file. This means to - * 1) Write out all of the source text associated with the node - * 2) Write out all of the AML bytes associated with the node - * 3) Write any compiler exceptions associated with the node - * - ******************************************************************************/ - -static void -LsWriteNodeToListing ( - ACPI_PARSE_OBJECT *Op, - UINT32 FileId) -{ - const ACPI_OPCODE_INFO *OpInfo; - UINT32 OpClass; - char *Pathname; - UINT32 Length; - UINT32 i; - - - OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode); - OpClass = OpInfo->Class; - - /* TBD: clean this up with a single flag that says: - * I start a named output block - */ - if (FileId == ASL_FILE_C_SOURCE_OUTPUT) - { - switch (Op->Asl.ParseOpcode) - { - case PARSEOP_DEFINITIONBLOCK: - case PARSEOP_METHODCALL: - case PARSEOP_INCLUDE: - case PARSEOP_INCLUDE_END: - case PARSEOP_DEFAULT_ARG: - - break; - - default: - switch (OpClass) - { - case AML_CLASS_NAMED_OBJECT: - switch (Op->Asl.AmlOpcode) - { - case AML_SCOPE_OP: - case AML_ALIAS_OP: - break; - - default: - if (Op->Asl.ExternalName) - { - LsFlushListingBuffer (FileId); - FlPrintFile (FileId, " };\n"); - } - break; - } - break; - - default: - /* Don't care about other objects */ - break; - } - break; - } - } - - /* These cases do not have a corresponding AML opcode */ - - switch (Op->Asl.ParseOpcode) - { - case PARSEOP_DEFINITIONBLOCK: - - LsWriteSourceLines (Op->Asl.EndLine, Op->Asl.EndLogicalLine, FileId); - - /* Use the table Signature and TableId to build a unique name */ - - if (FileId == ASL_FILE_ASM_SOURCE_OUTPUT) - { - FlPrintFile (FileId, - "%s_%s_Header \\\n", - Gbl_TableSignature, Gbl_TableId); - } - if (FileId == ASL_FILE_C_SOURCE_OUTPUT) - { - FlPrintFile (FileId, - " unsigned char %s_%s_Header [] =\n {\n", - Gbl_TableSignature, Gbl_TableId); - } - if (FileId == ASL_FILE_ASM_INCLUDE_OUTPUT) - { - FlPrintFile (FileId, - "extrn %s_%s_Header : byte\n", - Gbl_TableSignature, Gbl_TableId); - } - if (FileId == ASL_FILE_C_INCLUDE_OUTPUT) - { - FlPrintFile (FileId, - "extern unsigned char %s_%s_Header [];\n", - Gbl_TableSignature, Gbl_TableId); - } - return; - - - case PARSEOP_METHODCALL: - - LsWriteSourceLines (Op->Asl.LineNumber, Op->Asl.LogicalLineNumber, - FileId); - return; - - - case PARSEOP_INCLUDE: - - /* Flush everything up to and including the include source line */ - - LsWriteSourceLines (Op->Asl.LineNumber, Op->Asl.LogicalLineNumber, - FileId); - - /* Create a new listing node and push it */ - - LsPushNode (Op->Asl.Child->Asl.Value.String); - return; - - - case PARSEOP_INCLUDE_END: - - /* Flush out the rest of the include file */ - - LsWriteSourceLines (Op->Asl.LineNumber, Op->Asl.LogicalLineNumber, - FileId); - - /* Pop off this listing node and go back to the parent file */ - - (void) LsPopNode (); - return; - - - case PARSEOP_DEFAULT_ARG: - - if (Op->Asl.CompileFlags & NODE_IS_RESOURCE_DESC) - { - LsWriteSourceLines (Op->Asl.LineNumber, Op->Asl.EndLogicalLine, - FileId); - } - return; - - - default: - /* All other opcodes have an AML opcode */ - break; - } - - /* - * Otherwise, we look at the AML opcode because we can - * switch on the opcode type, getting an entire class - * at once - */ - switch (OpClass) - { - case AML_CLASS_ARGUMENT: /* argument type only */ - case AML_CLASS_INTERNAL: - - break; - - - case AML_CLASS_NAMED_OBJECT: - - switch (Op->Asl.AmlOpcode) - { - case AML_FIELD_OP: - case AML_INDEX_FIELD_OP: - case AML_BANK_FIELD_OP: - - /* - * For fields, we want to dump all the AML after the - * entire definition - */ - LsWriteSourceLines (Op->Asl.EndLine, Op->Asl.EndLogicalLine, - FileId); - break; - - case AML_NAME_OP: - - if (Op->Asl.CompileFlags & NODE_IS_RESOURCE_DESC) - { - LsWriteSourceLines (Op->Asl.LineNumber, Op->Asl.LogicalLineNumber, - FileId); - } - else - { - /* - * For fields, we want to dump all the AML after the - * entire definition - */ - LsWriteSourceLines (Op->Asl.EndLine, Op->Asl.EndLogicalLine, - FileId); - } - break; - - default: - LsWriteSourceLines (Op->Asl.LineNumber, Op->Asl.LogicalLineNumber, - FileId); - break; - } - - switch (Op->Asl.AmlOpcode) - { - case AML_SCOPE_OP: - case AML_ALIAS_OP: - - /* These opcodes do not declare a new object, ignore them */ - - break; - - default: - - /* All other named object opcodes come here */ - - switch (FileId) - { - case ASL_FILE_ASM_SOURCE_OUTPUT: - case ASL_FILE_C_SOURCE_OUTPUT: - case ASL_FILE_ASM_INCLUDE_OUTPUT: - case ASL_FILE_C_INCLUDE_OUTPUT: - - /* - * For named objects, we will create a valid symbol so that the - * AML code can be referenced from C or ASM - */ - if (Op->Asl.ExternalName) - { - /* Get the full pathname associated with this node */ - - Pathname = AcpiNsGetExternalPathname (Op->Asl.Node); - Length = strlen (Pathname); - if (Length >= 4) - { - /* Convert all dots in the path to underscores */ - - for (i = 0; i < Length; i++) - { - if (Pathname[i] == '.') - { - Pathname[i] = '_'; - } - } - - /* Create the appropriate symbol in the output file */ - - if (FileId == ASL_FILE_ASM_SOURCE_OUTPUT) - { - FlPrintFile (FileId, - "%s_%s_%s \\\n", - Gbl_TableSignature, Gbl_TableId, &Pathname[1]); - } - if (FileId == ASL_FILE_C_SOURCE_OUTPUT) - { - FlPrintFile (FileId, - " unsigned char %s_%s_%s [] =\n {\n", - Gbl_TableSignature, Gbl_TableId, &Pathname[1]); - } - if (FileId == ASL_FILE_ASM_INCLUDE_OUTPUT) - { - FlPrintFile (FileId, - "extrn %s_%s_%s : byte\n", - Gbl_TableSignature, Gbl_TableId, &Pathname[1]); - } - if (FileId == ASL_FILE_C_INCLUDE_OUTPUT) - { - FlPrintFile (FileId, - "extern unsigned char %s_%s_%s [];\n", - Gbl_TableSignature, Gbl_TableId, &Pathname[1]); - } - } - ACPI_FREE (Pathname); - } - break; - - default: - /* Nothing to do for listing file */ - break; - } - } - break; - - case AML_CLASS_EXECUTE: - case AML_CLASS_CREATE: - default: - - if ((Op->Asl.ParseOpcode == PARSEOP_BUFFER) && - (Op->Asl.CompileFlags & NODE_IS_RESOURCE_DESC)) - { - return; - } - - LsWriteSourceLines (Op->Asl.LineNumber, Op->Asl.LogicalLineNumber, - FileId); - break; - - case AML_CLASS_UNKNOWN: - break; - } -} - - -/******************************************************************************* - * - * FUNCTION: LsDoHexOutput - * - * PARAMETERS: None - * - * RETURN: None. - * - * DESCRIPTION: Create the hex output file. - * - ******************************************************************************/ - -void -LsDoHexOutput ( - void) -{ - - switch (Gbl_HexOutputFlag) - { - case HEX_OUTPUT_C: - - LsDoHexOutputC (); - break; - - case HEX_OUTPUT_ASM: - - LsDoHexOutputAsm (); - break; - - default: - /* No other output types supported */ - break; - } -} - - -/******************************************************************************* - * - * FUNCTION: LsDoHexOutputC - * - * PARAMETERS: None - * - * RETURN: None. - * - * DESCRIPTION: Create the hex output file. This is the same data as the AML - * output file, but formatted into hex/ascii bytes suitable for - * inclusion into a C source file. - * - ******************************************************************************/ - -static void -LsDoHexOutputC ( - void) -{ - UINT32 j; - UINT8 FileByte[HEX_TABLE_LINE_SIZE]; - UINT8 Buffer[4]; - UINT32 Offset = 0; - - - FlPrintFile (ASL_FILE_HEX_OUTPUT, " * C source code output\n *\n */\n"); - FlPrintFile (ASL_FILE_HEX_OUTPUT, "unsigned char AmlCode[] =\n{\n"); - - /* Start at the beginning of the AML file */ - - FlSeekFile (ASL_FILE_AML_OUTPUT, 0); - - /* Process all AML bytes in the AML file */ - - j = 0; - while (FlReadFile (ASL_FILE_AML_OUTPUT, &FileByte[j], 1) == AE_OK) - { - if (j == 0) - { - FlPrintFile (ASL_FILE_HEX_OUTPUT, " "); - } - - /* Convert each AML byte to hex */ - - UtConvertByteToHex (FileByte[j], Buffer); - FlWriteFile (ASL_FILE_HEX_OUTPUT, Buffer, 4); - FlPrintFile (ASL_FILE_HEX_OUTPUT, ","); - - /* An occasional linefeed improves readability */ - - Offset++; - j++; - - if (j >= HEX_TABLE_LINE_SIZE) - { - /* End of line, emit the ascii dump of the entire line */ - - FlPrintFile (ASL_FILE_HEX_OUTPUT, - " /* %8.8X", Offset - HEX_TABLE_LINE_SIZE); - - /* Write the ASCII character associated with each of the bytes */ - - LsDumpAsciiInComment (ASL_FILE_HEX_OUTPUT, - HEX_TABLE_LINE_SIZE, FileByte); - FlPrintFile (ASL_FILE_HEX_OUTPUT, " */\n"); - - /* Start new line */ - - j = 0; - } - } - - FlPrintFile (ASL_FILE_HEX_OUTPUT, "\n};\n"); - FlCloseFile (ASL_FILE_HEX_OUTPUT); -} - - -/******************************************************************************* - * - * FUNCTION: LsDoHexOutputAsm - * - * PARAMETERS: None - * - * RETURN: None. - * - * DESCRIPTION: Create the hex output file. This is the same data as the AML - * output file, but formatted into hex/ascii bytes suitable for - * inclusion into a ASM source file. - * - ******************************************************************************/ - -static void -LsDoHexOutputAsm ( - void) -{ - UINT32 j; - UINT8 FileByte[HEX_TABLE_LINE_SIZE]; - UINT8 Buffer[4]; - UINT32 Offset = 0; - BOOLEAN DoComma = FALSE; - - - FlPrintFile (ASL_FILE_HEX_OUTPUT, "; Assembly code source output\n;\n"); - - /* Start at the beginning of the AML file */ - - FlSeekFile (ASL_FILE_AML_OUTPUT, 0); - - /* Process all AML bytes in the AML file */ - - j = 0; - while (FlReadFile (ASL_FILE_AML_OUTPUT, &FileByte[j], 1) == AE_OK) - { - if (j == 0) - { - FlPrintFile (ASL_FILE_HEX_OUTPUT, " db "); - } - else if (DoComma) - { - FlPrintFile (ASL_FILE_HEX_OUTPUT, ","); - DoComma = FALSE; - } - - /* Convert each AML byte to hex */ - - UtConvertByteToAsmHex (FileByte[j], Buffer); - FlWriteFile (ASL_FILE_HEX_OUTPUT, Buffer, 4); - - /* An occasional linefeed improves readability */ - - Offset++; - j++; - if (j >= HEX_TABLE_LINE_SIZE) - { - FlPrintFile (ASL_FILE_HEX_OUTPUT, - " ;%8.8X", Offset - HEX_TABLE_LINE_SIZE); - - /* Write the ASCII character associated with each of the bytes */ - - LsDumpAscii (ASL_FILE_HEX_OUTPUT, HEX_TABLE_LINE_SIZE, FileByte); - FlPrintFile (ASL_FILE_HEX_OUTPUT, "\n"); - j = 0; - } - else - { - DoComma = TRUE; - } - } - - FlPrintFile (ASL_FILE_HEX_OUTPUT, "\n"); - FlCloseFile (ASL_FILE_HEX_OUTPUT); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/aslload.c b/sys/contrib/dev/acpica-unix-20061109/compiler/aslload.c deleted file mode 100644 index d23e4e030b..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/aslload.c +++ /dev/null @@ -1,826 +0,0 @@ -/****************************************************************************** - * - * Module Name: dswload - Dispatcher namespace load callbacks - * $Revision: 1.76 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __ASLLOAD_C__ - -#include "aslcompiler.h" -#include "amlcode.h" -#include "acdispat.h" -#include "acnamesp.h" - -#include "aslcompiler.y.h" - -#define _COMPONENT ACPI_COMPILER - ACPI_MODULE_NAME ("aslload") - -/* Local prototypes */ - -static ACPI_STATUS -LdLoadFieldElements ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState); - -static ACPI_STATUS -LdLoadResourceElements ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState); - -static ACPI_STATUS -LdNamespace1Begin ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -static ACPI_STATUS -LdNamespace1End ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - - -/******************************************************************************* - * - * FUNCTION: LdLoadNamespace - * - * PARAMETERS: RootOp - Root of the parse tree - * - * RETURN: Status - * - * DESCRIPTION: Perform a walk of the parse tree that in turn loads all of the - * named ASL/AML objects into the namespace. The namespace is - * constructed in order to resolve named references and references - * to named fields within resource templates/descriptors. - * - ******************************************************************************/ - -ACPI_STATUS -LdLoadNamespace ( - ACPI_PARSE_OBJECT *RootOp) -{ - ACPI_WALK_STATE *WalkState; - - - DbgPrint (ASL_DEBUG_OUTPUT, "\nCreating namespace\n\n"); - - /* Create a new walk state */ - - WalkState = AcpiDsCreateWalkState (0, NULL, NULL, NULL); - if (!WalkState) - { - return AE_NO_MEMORY; - } - - /* Perform the walk of the parse tree */ - - TrWalkParseTree (RootOp, ASL_WALK_VISIT_TWICE, LdNamespace1Begin, - LdNamespace1End, WalkState); - - /* Dump the namespace if debug is enabled */ - - AcpiNsDumpTables (ACPI_NS_ALL, ACPI_UINT32_MAX); - return AE_OK; -} - - -/******************************************************************************* - * - * FUNCTION: LdLoadFieldElements - * - * PARAMETERS: Op - Parent node (Field) - * WalkState - Current walk state - * - * RETURN: Status - * - * DESCRIPTION: Enter the named elements of the field (children of the parent) - * into the namespace. - * - ******************************************************************************/ - -static ACPI_STATUS -LdLoadFieldElements ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState) -{ - ACPI_PARSE_OBJECT *Child = NULL; - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - - - /* Get the first named field element */ - - switch (Op->Asl.AmlOpcode) - { - case AML_BANK_FIELD_OP: - - Child = UtGetArg (Op, 6); - break; - - case AML_INDEX_FIELD_OP: - - Child = UtGetArg (Op, 5); - break; - - case AML_FIELD_OP: - - Child = UtGetArg (Op, 4); - break; - - default: - /* No other opcodes should arrive here */ - return (AE_BAD_PARAMETER); - } - - /* Enter all elements into the namespace */ - - while (Child) - { - switch (Child->Asl.AmlOpcode) - { - case AML_INT_RESERVEDFIELD_OP: - case AML_INT_ACCESSFIELD_OP: - - break; - - default: - - Status = AcpiNsLookup (WalkState->ScopeInfo, - Child->Asl.Value.String, - ACPI_TYPE_LOCAL_REGION_FIELD, - ACPI_IMODE_LOAD_PASS1, - ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | - ACPI_NS_ERROR_IF_FOUND, - NULL, &Node); - if (ACPI_FAILURE (Status)) - { - if (Status != AE_ALREADY_EXISTS) - { - AslError (ASL_ERROR, ASL_MSG_CORE_EXCEPTION, Child, - Child->Asl.Value.String); - return (Status); - } - - /* - * The name already exists in this scope - * But continue processing the elements - */ - AslError (ASL_ERROR, ASL_MSG_NAME_EXISTS, Child, - Child->Asl.Value.String); - } - else - { - Child->Asl.Node = Node; - Node->Op = Child; - } - break; - } - Child = Child->Asl.Next; - } - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: LdLoadResourceElements - * - * PARAMETERS: Op - Parent node (Resource Descriptor) - * WalkState - Current walk state - * - * RETURN: Status - * - * DESCRIPTION: Enter the named elements of the resource descriptor (children - * of the parent) into the namespace. - * - * NOTE: In the real AML namespace, these named elements never exist. But - * we simply use the namespace here as a symbol table so we can look - * them up as they are referenced. - * - ******************************************************************************/ - -static ACPI_STATUS -LdLoadResourceElements ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState) -{ - ACPI_PARSE_OBJECT *InitializerOp = NULL; - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - - - /* - * Enter the resource name into the namespace. Name must not already exist. - * This opens a scope, so later field names are guaranteed to be new/unique. - */ - Status = AcpiNsLookup (WalkState->ScopeInfo, Op->Asl.Namepath, - ACPI_TYPE_LOCAL_RESOURCE, ACPI_IMODE_LOAD_PASS1, - ACPI_NS_NO_UPSEARCH | ACPI_NS_ERROR_IF_FOUND, - WalkState, &Node); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_ALREADY_EXISTS) - { - /* Actual node causing the error was saved in ParentMethod */ - - AslError (ASL_ERROR, ASL_MSG_NAME_EXISTS, - (ACPI_PARSE_OBJECT *) Op->Asl.ParentMethod, Op->Asl.Namepath); - return (AE_OK); - } - return (Status); - } - - Node->Value = (UINT32) Op->Asl.Value.Integer; - Node->Op = Op; - - /* - * Now enter the predefined fields, for easy lookup when referenced - * by the source ASL - */ - InitializerOp = ASL_GET_CHILD_NODE (Op); - while (InitializerOp) - { - - if (InitializerOp->Asl.ExternalName) - { - Status = AcpiNsLookup (WalkState->ScopeInfo, - InitializerOp->Asl.ExternalName, - ACPI_TYPE_LOCAL_RESOURCE_FIELD, - ACPI_IMODE_LOAD_PASS1, - ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE, - NULL, &Node); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* - * Store the field offset in the namespace node so it - * can be used when the field is referenced - */ - Node->Value = (UINT32) InitializerOp->Asl.Value.Integer; - 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); - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: LdNamespace1Begin - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Descending callback used during the parse tree walk. If this - * is a named AML opcode, enter into the namespace - * - ******************************************************************************/ - -static ACPI_STATUS -LdNamespace1Begin ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - ACPI_WALK_STATE *WalkState = (ACPI_WALK_STATE *) Context; - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - ACPI_OBJECT_TYPE ObjectType; - ACPI_OBJECT_TYPE ActualObjectType = ACPI_TYPE_ANY; - char *Path; - UINT32 Flags = ACPI_NS_NO_UPSEARCH; - ACPI_PARSE_OBJECT *Arg; - UINT32 i; - BOOLEAN ForceNewScope = FALSE; - - - ACPI_FUNCTION_NAME (LdNamespace1Begin); - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op %p [%s]\n", - Op, Op->Asl.ParseOpName)); - - - /* - * We are only interested in opcodes that have an associated name - * (or multiple names) - */ - switch (Op->Asl.AmlOpcode) - { - case AML_BANK_FIELD_OP: - case AML_INDEX_FIELD_OP: - case AML_FIELD_OP: - - Status = LdLoadFieldElements (Op, WalkState); - return (Status); - - default: - - /* All other opcodes go below */ - break; - } - - /* Check if this object has already been installed in the namespace */ - - if (Op->Asl.Node) - { - return (AE_OK); - } - - Path = Op->Asl.Namepath; - if (!Path) - { - return (AE_OK); - } - - /* Map the raw opcode into an internal object type */ - - switch (Op->Asl.ParseOpcode) - { - case PARSEOP_NAME: - - Arg = Op->Asl.Child; /* Get the NameSeg/NameString node */ - Arg = Arg->Asl.Next; /* First peer is the object to be associated with the name */ - - /* - * If this name refers to a ResourceTemplate, we will need to open - * a new scope so that the resource subfield names can be entered into - * the namespace underneath this name - */ - if (Op->Asl.CompileFlags & NODE_IS_RESOURCE_DESC) - { - ForceNewScope = TRUE; - } - - /* Get the data type associated with the named object, not the name itself */ - - /* Log2 loop to convert from Btype (binary) to Etype (encoded) */ - - ObjectType = 1; - for (i = 1; i < Arg->Asl.AcpiBtype; i *= 2) - { - ObjectType++; - } - break; - - - case PARSEOP_EXTERNAL: - - /* - * "External" simply enters a name and type into the namespace. - * We must be careful to not open a new scope, however, no matter - * what type the external name refers to (e.g., a method) - * - * first child is name, next child is ObjectType - */ - ActualObjectType = (UINT8) Op->Asl.Child->Asl.Next->Asl.Value.Integer; - ObjectType = ACPI_TYPE_ANY; - - /* - * We will mark every new node along the path as "External". This - * allows some or all of the nodes to be created later in the ASL - * code. Handles cases like this: - * - * External (\_SB_.PCI0.ABCD, IntObj) - * Scope (_SB_) - * { - * Device (PCI0) - * { - * } - * } - * Method (X) - * { - * Store (\_SB_.PCI0.ABCD, Local0) - * } - */ - Flags |= ACPI_NS_EXTERNAL; - break; - - case PARSEOP_DEFAULT_ARG: - - if (Op->Asl.CompileFlags == NODE_IS_RESOURCE_DESC) - { - Status = LdLoadResourceElements (Op, WalkState); - goto Exit; - } - - ObjectType = AslMapNamedOpcodeToDataType (Op->Asl.AmlOpcode); - break; - - - case PARSEOP_SCOPE: - - /* - * The name referenced by Scope(Name) must already exist at this point. - * In other words, forward references for Scope() are not supported. - * The only real reason for this is that the MS interpreter cannot - * handle this case. Perhaps someday this case can go away. - */ - Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ACPI_TYPE_ANY, - ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, - WalkState, &(Node)); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_NOT_FOUND) - { - /* The name was not found, go ahead and create it */ - - Status = AcpiNsLookup (WalkState->ScopeInfo, Path, - ACPI_TYPE_LOCAL_SCOPE, - ACPI_IMODE_LOAD_PASS1, Flags, - WalkState, &(Node)); - - /* - * However, this is an error -- primarily because the MS - * interpreter can't handle a forward reference from the - * Scope() operator. - */ - AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op, - Op->Asl.ExternalName); - AslError (ASL_ERROR, ASL_MSG_SCOPE_FWD_REF, Op, - Op->Asl.ExternalName); - goto FinishNode; - } - - AslCoreSubsystemError (Op, Status, "Failure from lookup\n", FALSE); - goto Exit; - } - - /* We found a node with this name, now check the type */ - - switch (Node->Type) - { - case ACPI_TYPE_LOCAL_SCOPE: - case ACPI_TYPE_DEVICE: - case ACPI_TYPE_POWER: - case ACPI_TYPE_PROCESSOR: - case ACPI_TYPE_THERMAL: - - /* These are acceptable types - they all open a new scope */ - break; - - case ACPI_TYPE_INTEGER: - case ACPI_TYPE_STRING: - case ACPI_TYPE_BUFFER: - - /* - * These types we will allow, but we will change the type. - * This enables some existing code of the form: - * - * Name (DEB, 0) - * Scope (DEB) { ... } - * - * Which is used to workaround the fact that the MS interpreter - * does not allow Scope() forward references. - */ - sprintf (MsgBuffer, "%s [%s], changing type to [Scope]", - Op->Asl.ExternalName, AcpiUtGetTypeName (Node->Type)); - AslError (ASL_REMARK, ASL_MSG_SCOPE_TYPE, Op, MsgBuffer); - - /* Switch the type to scope, open the new scope */ - - Node->Type = ACPI_TYPE_LOCAL_SCOPE; - Status = AcpiDsScopeStackPush (Node, ACPI_TYPE_LOCAL_SCOPE, - WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - break; - - default: - - /* All other types are an error */ - - sprintf (MsgBuffer, "%s [%s]", Op->Asl.ExternalName, - AcpiUtGetTypeName (Node->Type)); - AslError (ASL_ERROR, ASL_MSG_SCOPE_TYPE, Op, MsgBuffer); - - /* - * However, switch the type to be an actual scope so - * that compilation can continue without generating a whole - * cascade of additional errors. Open the new scope. - */ - Node->Type = ACPI_TYPE_LOCAL_SCOPE; - Status = AcpiDsScopeStackPush (Node, ACPI_TYPE_LOCAL_SCOPE, - WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - break; - } - - Status = AE_OK; - goto FinishNode; - - - default: - - ObjectType = AslMapNamedOpcodeToDataType (Op->Asl.AmlOpcode); - break; - } - - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Loading name: %s, (%s)\n", - Op->Asl.ExternalName, AcpiUtGetTypeName (ObjectType))); - - /* The name must not already exist */ - - Flags |= ACPI_NS_ERROR_IF_FOUND; - - /* - * Enter the named type into the internal namespace. We enter the name - * as we go downward in the parse tree. Any necessary subobjects that - * involve arguments to the opcode must be created as we go back up the - * parse tree later. - */ - Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, - ACPI_IMODE_LOAD_PASS1, Flags, WalkState, &Node); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_ALREADY_EXISTS) - { - /* The name already exists in this scope */ - - if (Node->Type == ACPI_TYPE_LOCAL_SCOPE) - { - /* Allow multiple references to the same scope */ - - Node->Type = (UINT8) ObjectType; - Status = AE_OK; - } - else if (Node->Flags & ANOBJ_IS_EXTERNAL) - { - /* - * Allow one create on an object or segment that was - * previously declared External - */ - Node->Flags &= ~ANOBJ_IS_EXTERNAL; - Node->Type = (UINT8) ObjectType; - - /* Just retyped a node, probably will need to open a scope */ - - if (AcpiNsOpensScope (ObjectType)) - { - Status = AcpiDsScopeStackPush (Node, ObjectType, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - Status = AE_OK; - } - else - { - /* Valid error, object already exists */ - - AslError (ASL_ERROR, ASL_MSG_NAME_EXISTS, Op, - Op->Asl.ExternalName); - Status = AE_OK; - goto Exit; - } - } - else - { - AslCoreSubsystemError (Op, Status, - "Failure from lookup %s\n", FALSE); - goto Exit; - } - } - - if (ForceNewScope) - { - Status = AcpiDsScopeStackPush (Node, ObjectType, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - -FinishNode: - /* - * Point the parse node to the new namespace node, and point - * the Node back to the original Parse node - */ - Op->Asl.Node = Node; - Node->Op = Op; - - /* Set the actual data type if appropriate (EXTERNAL term only) */ - - if (ActualObjectType != ACPI_TYPE_ANY) - { - Node->Type = (UINT8) ActualObjectType; - Node->Value = ASL_EXTERNAL_METHOD; - } - - if (Op->Asl.ParseOpcode == PARSEOP_METHOD) - { - /* - * Get the method argument count from "Extra" and save - * it in the namespace node - */ - Node->Value = (UINT32) Op->Asl.Extra; - } - -Exit: - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: LdNamespace1End - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Ascending callback used during the loading of the namespace, - * We only need to worry about managing the scope stack here. - * - ******************************************************************************/ - -static ACPI_STATUS -LdNamespace1End ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - ACPI_WALK_STATE *WalkState = (ACPI_WALK_STATE *) Context; - ACPI_OBJECT_TYPE ObjectType; - BOOLEAN ForceNewScope = FALSE; - - - ACPI_FUNCTION_NAME (LdNamespace1End); - - - /* We are only interested in opcodes that have an associated name */ - - if (!Op->Asl.Namepath) - { - return (AE_OK); - } - - /* Get the type to determine if we should pop the scope */ - - if ((Op->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) && - (Op->Asl.CompileFlags == NODE_IS_RESOURCE_DESC)) - { - /* TBD: Merge into AcpiDsMapNamedOpcodeToDataType */ - - ObjectType = ACPI_TYPE_LOCAL_RESOURCE; - } - else - { - ObjectType = AslMapNamedOpcodeToDataType (Op->Asl.AmlOpcode); - } - - /* Pop scope that was pushed for Resource Templates */ - - if (Op->Asl.ParseOpcode == PARSEOP_NAME) - { - if (Op->Asl.CompileFlags & NODE_IS_RESOURCE_DESC) - { - ForceNewScope = TRUE; - } - } - - /* Pop the scope stack */ - - if (ForceNewScope || AcpiNsOpensScope (ObjectType)) - { - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "(%s): Popping scope for Op [%s] %p\n", - AcpiUtGetTypeName (ObjectType), Op->Asl.ParseOpName, Op)); - - (void) AcpiDsScopeStackPop (WalkState); - } - - return (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/asllookup.c b/sys/contrib/dev/acpica-unix-20061109/compiler/asllookup.c deleted file mode 100644 index ebc806ae9f..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/asllookup.c +++ /dev/null @@ -1,1370 +0,0 @@ -/****************************************************************************** - * - * Module Name: asllookup- Namespace lookup - * $Revision: 1.102 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "aslcompiler.h" -#include "aslcompiler.y.h" - -#include "acparser.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acdispat.h" - - -#define _COMPONENT ACPI_COMPILER - ACPI_MODULE_NAME ("asllookup") - -/* Local prototypes */ - -static ACPI_STATUS -LsCompareOneNamespaceObject ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue); - -static ACPI_STATUS -LsDoOneNamespaceObject ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue); - -static BOOLEAN -LkObjectExists ( - char *Name); - -static void -LkCheckFieldRange ( - ACPI_PARSE_OBJECT *Op, - UINT32 RegionBitLength, - UINT32 FieldBitOffset, - UINT32 FieldBitLength, - UINT32 AccessBitWidth); - -static ACPI_STATUS -LkNamespaceLocateBegin ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -static ACPI_STATUS -LkNamespaceLocateEnd ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -static ACPI_STATUS -LkIsObjectUsed ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue); - - -/******************************************************************************* - * - * FUNCTION: LsDoOneNamespaceObject - * - * PARAMETERS: ACPI_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Dump a namespace object to the namespace output file. - * Called during the walk of the namespace to dump all objects. - * - ******************************************************************************/ - -static ACPI_STATUS -LsDoOneNamespaceObject ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue) -{ - ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_PARSE_OBJECT *Op; - - - Gbl_NumNamespaceObjects++; - - FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "%5d [%d] %*s %4.4s - %s", - Gbl_NumNamespaceObjects, Level, (Level * 3), " ", - &Node->Name, - AcpiUtGetTypeName (Node->Type)); - - Op = Node->Op; - ObjDesc = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Node->Object); - - if (!Op) - { - FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "\n"); - return (AE_OK); - } - - - if ((ObjDesc) && - (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_OPERAND)) - { - switch (Node->Type) - { - case ACPI_TYPE_INTEGER: - - FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, - " [Initial Value 0x%8.8X%8.8X]", - ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value)); - break; - - - case ACPI_TYPE_STRING: - - FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, - " [Initial Value \"%s\"]", - ObjDesc->String.Pointer); - break; - - default: - /* Nothing to do for other types */ - break; - } - - } - else - { - switch (Node->Type) - { - case ACPI_TYPE_INTEGER: - - if (Op->Asl.ParseOpcode == PARSEOP_NAME) - { - Op = Op->Asl.Child; - } - if ((Op->Asl.ParseOpcode == PARSEOP_NAMESEG) || - (Op->Asl.ParseOpcode == PARSEOP_NAMESTRING)) - { - Op = Op->Asl.Next; - } - FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, - " [Initial Value 0x%8.8X%8.8X]", - ACPI_FORMAT_UINT64 (Op->Asl.Value.Integer)); - break; - - - case ACPI_TYPE_STRING: - - if (Op->Asl.ParseOpcode == PARSEOP_NAME) - { - Op = Op->Asl.Child; - } - if ((Op->Asl.ParseOpcode == PARSEOP_NAMESEG) || - (Op->Asl.ParseOpcode == PARSEOP_NAMESTRING)) - { - Op = Op->Asl.Next; - } - FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, - " [Initial Value \"%s\"]", - Op->Asl.Value.String); - break; - - - case ACPI_TYPE_LOCAL_REGION_FIELD: - - if ((Op->Asl.ParseOpcode == PARSEOP_NAMESEG) || - (Op->Asl.ParseOpcode == PARSEOP_NAMESTRING)) - { - Op = Op->Asl.Child; - } - FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, - " [Offset 0x%04X Length 0x%04X bits]", - Op->Asl.Parent->Asl.ExtraValue, (UINT32) Op->Asl.Value.Integer); - break; - - - case ACPI_TYPE_BUFFER_FIELD: - - switch (Op->Asl.ParseOpcode) - { - case PARSEOP_CREATEBYTEFIELD: - FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [BYTE ( 8 bit)]"); - break; - - case PARSEOP_CREATEDWORDFIELD: - FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [DWORD (32 bit)]"); - break; - - case PARSEOP_CREATEQWORDFIELD: - FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [QWORD (64 bit)]"); - break; - - case PARSEOP_CREATEWORDFIELD: - FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [WORD (16 bit)]"); - break; - - case PARSEOP_CREATEBITFIELD: - FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [BIT ( 1 bit)]"); - break; - - case PARSEOP_CREATEFIELD: - FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [Arbitrary Bit Field]"); - break; - - default: - break; - - } - break; - - - case ACPI_TYPE_PACKAGE: - - if (Op->Asl.ParseOpcode == PARSEOP_NAME) - { - Op = Op->Asl.Child; - } - if ((Op->Asl.ParseOpcode == PARSEOP_NAMESEG) || - (Op->Asl.ParseOpcode == PARSEOP_NAMESTRING)) - { - Op = Op->Asl.Next; - } - Op = Op->Asl.Child; - - if ((Op->Asl.ParseOpcode == PARSEOP_BYTECONST) || - (Op->Asl.ParseOpcode == PARSEOP_RAW_DATA)) - { - FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, - " [Initial Length 0x%.2X elements]", - Op->Asl.Value.Integer); - } - break; - - - case ACPI_TYPE_BUFFER: - - if (Op->Asl.ParseOpcode == PARSEOP_NAME) - { - Op = Op->Asl.Child; - } - if ((Op->Asl.ParseOpcode == PARSEOP_NAMESEG) || - (Op->Asl.ParseOpcode == PARSEOP_NAMESTRING)) - { - Op = Op->Asl.Next; - } - Op = Op->Asl.Child; - - if (Op && (Op->Asl.ParseOpcode == PARSEOP_INTEGER)) - { - FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, - " [Initial Length 0x%.2X bytes]", - Op->Asl.Value.Integer); - } - break; - - - case ACPI_TYPE_METHOD: - - FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, - " [Code Length 0x%.4X bytes]", - Op->Asl.AmlSubtreeLength); - break; - - - case ACPI_TYPE_LOCAL_RESOURCE: - - FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, - " [Desc Offset 0x%.4X Bytes]", Node->Value); - break; - - - case ACPI_TYPE_LOCAL_RESOURCE_FIELD: - - if (Node->Flags & 0x80) - { - FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, - " [Field Offset 0x%.4X Bits 0x%.4X Bytes]", - Node->Value, Node->Value / 8); - } - else - { - FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, - " [Field Offset 0x%.4X Bytes]", Node->Value); - } - break; - - - default: - /* Nothing to do for other types */ - break; - } - } - - FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "\n"); - return (AE_OK); -} - - -void -LsSetupNsList (void * Handle) -{ - - Gbl_NsOutputFlag = TRUE; - Gbl_Files[ASL_FILE_NAMESPACE_OUTPUT].Handle = Handle; -} - - -/******************************************************************************* - * - * FUNCTION: LsDisplayNamespace - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Walk the namespace an display information about each node - * in the tree. Information is written to the optional - * namespace output file. - * - ******************************************************************************/ - -ACPI_STATUS -LsDisplayNamespace ( - void) -{ - ACPI_STATUS Status; - - - if (!Gbl_NsOutputFlag) - { - return (AE_OK); - } - - Gbl_NumNamespaceObjects = 0; - - /* File header */ - - FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "Contents of ACPI Namespace\n\n"); - FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "Count Depth Name - Type\n\n"); - - /* Walk entire namespace from the root */ - - Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, FALSE, LsDoOneNamespaceObject, - NULL, NULL); - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: LsCompareOneNamespaceObject - * - * PARAMETERS: ACPI_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Compare name of one object. - * - ******************************************************************************/ - -static ACPI_STATUS -LsCompareOneNamespaceObject ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue) -{ - ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; - - - /* Simply check the name */ - - if (*((UINT32 *) (Context)) == Node->Name.Integer) - { - /* Abort walk if we found one instance */ - - return (AE_CTRL_TRUE); - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: LkObjectExists - * - * PARAMETERS: Name - 4 char ACPI name - * - * RETURN: TRUE if name exists in namespace - * - * DESCRIPTION: Walk the namespace to find an object - * - ******************************************************************************/ - -static BOOLEAN -LkObjectExists ( - char *Name) -{ - ACPI_STATUS Status; - - - /* Walk entire namespace from the supplied root */ - - Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, FALSE, LsCompareOneNamespaceObject, - Name, NULL); - if (Status == AE_CTRL_TRUE) - { - /* At least one instance of the name was found */ - - return (TRUE); - } - - return (FALSE); -} - - -/******************************************************************************* - * - * FUNCTION: LkGetNameOp - * - * PARAMETERS: Op - Current Op - * - * RETURN: NameOp associated with the input op - * - * DESCRIPTION: Find the name declaration op associated with the operator - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -LkGetNameOp ( - ACPI_PARSE_OBJECT *Op) -{ - const ACPI_OPCODE_INFO *OpInfo; - ACPI_PARSE_OBJECT *NameOp = Op; - - - OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode); - - - /* Get the NamePath from the appropriate place */ - - if (OpInfo->Flags & AML_NAMED) - { - /* For nearly all NAMED operators, the name reference is the first child */ - - NameOp = Op->Asl.Child; - if (Op->Asl.AmlOpcode == AML_ALIAS_OP) - { - /* - * ALIAS is the only oddball opcode, the name declaration - * (alias name) is the second operand - */ - NameOp = Op->Asl.Child->Asl.Next; - } - } - else if (OpInfo->Flags & AML_CREATE) - { - /* Name must appear as the last parameter */ - - NameOp = Op->Asl.Child; - while (!(NameOp->Asl.CompileFlags & NODE_IS_NAME_DECLARATION)) - { - NameOp = NameOp->Asl.Next; - } - } - - return (NameOp); -} - - -/******************************************************************************* - * - * FUNCTION: LkIsObjectUsed - * - * PARAMETERS: ACPI_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Check for an unreferenced namespace object and emit a warning. - * We have to be careful, because some types and names are - * typically or always unreferenced, we don't want to issue - * excessive warnings. - * - ******************************************************************************/ - -static ACPI_STATUS -LkIsObjectUsed ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue) -{ - ACPI_NAMESPACE_NODE *Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjHandle); - - - /* Referenced flag is set during the namespace xref */ - - if (Node->Flags & ANOBJ_IS_REFERENCED) - { - return (AE_OK); - } - - /* - * Ignore names that start with an underscore, - * these are the reserved ACPI names and are typically not referenced, - * they are called by the host OS. - */ - if (Node->Name.Ascii[0] == '_') - { - return (AE_OK); - } - - /* There are some types that are typically not referenced, ignore them */ - - switch (Node->Type) - { - case ACPI_TYPE_DEVICE: - case ACPI_TYPE_PROCESSOR: - case ACPI_TYPE_POWER: - case ACPI_TYPE_LOCAL_RESOURCE: - return (AE_OK); - - default: - break; - } - - /* All others are valid unreferenced namespace objects */ - - if (Node->Op) - { - AslError (ASL_WARNING2, ASL_MSG_NOT_REFERENCED, LkGetNameOp (Node->Op), NULL); - } - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: LkFindUnreferencedObjects - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Namespace walk to find objects that are not referenced in any - * way. Must be called after the namespace has been cross - * referenced. - * - ******************************************************************************/ - -void -LkFindUnreferencedObjects ( - void) -{ - - /* Walk entire namespace from the supplied root */ - - (void) AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, FALSE, LkIsObjectUsed, - NULL, NULL); -} - - -/******************************************************************************* - * - * FUNCTION: LkCrossReferenceNamespace - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Perform a cross reference check of the parse tree against the - * namespace. Every named referenced within the parse tree - * should be get resolved with a namespace lookup. If not, the - * original reference in the ASL code is invalid -- i.e., refers - * to a non-existent object. - * - * NOTE: The ASL "External" operator causes the name to be inserted into the - * namespace so that references to the external name will be resolved - * correctly here. - * - ******************************************************************************/ - -ACPI_STATUS -LkCrossReferenceNamespace ( - void) -{ - ACPI_WALK_STATE *WalkState; - - - DbgPrint (ASL_DEBUG_OUTPUT, "\nCross referencing namespace\n\n"); - - /* - * Create a new walk state for use when looking up names - * within the namespace (Passed as context to the callbacks) - */ - WalkState = AcpiDsCreateWalkState (0, NULL, NULL, NULL); - if (!WalkState) - { - return AE_NO_MEMORY; - } - - /* Walk the entire parse tree */ - - TrWalkParseTree (RootNode, ASL_WALK_VISIT_TWICE, LkNamespaceLocateBegin, - LkNamespaceLocateEnd, WalkState); - return AE_OK; -} - - -/******************************************************************************* - * - * FUNCTION: LkCheckFieldRange - * - * PARAMETERS: RegionBitLength - Length of entire parent region - * FieldBitOffset - Start of the field unit (within region) - * FieldBitLength - Entire length of field unit - * AccessBitWidth - Access width of the field unit - * - * RETURN: None - * - * DESCRIPTION: Check one field unit to make sure it fits in the parent - * op region. - * - * Note: AccessBitWidth must be either 8,16,32, or 64 - * - ******************************************************************************/ - -static void -LkCheckFieldRange ( - ACPI_PARSE_OBJECT *Op, - UINT32 RegionBitLength, - UINT32 FieldBitOffset, - UINT32 FieldBitLength, - UINT32 AccessBitWidth) -{ - UINT32 FieldEndBitOffset; - - - /* - * Check each field unit against the region size. The entire - * field unit (start offset plus length) must fit within the - * region. - */ - FieldEndBitOffset = FieldBitOffset + FieldBitLength; - - if (FieldEndBitOffset > RegionBitLength) - { - /* Field definition itself is beyond the end-of-region */ - - AslError (ASL_ERROR, ASL_MSG_FIELD_UNIT_OFFSET, Op, NULL); - return; - } - - /* - * Now check that the field plus AccessWidth doesn't go beyond - * the end-of-region. Assumes AccessBitWidth is a power of 2 - */ - FieldEndBitOffset = ACPI_ROUND_UP (FieldEndBitOffset, AccessBitWidth); - - if (FieldEndBitOffset > RegionBitLength) - { - /* Field definition combined with the access is beyond EOR */ - - AslError (ASL_ERROR, ASL_MSG_FIELD_UNIT_ACCESS_WIDTH, Op, NULL); - } -} - -/******************************************************************************* - * - * FUNCTION: LkNamespaceLocateBegin - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Descending callback used during cross-reference. For named - * object references, attempt to locate the name in the - * namespace. - * - * NOTE: ASL references to named fields within resource descriptors are - * resolved to integer values here. Therefore, this step is an - * important part of the code generation. We don't know that the - * name refers to a resource descriptor until now. - * - ******************************************************************************/ - -static ACPI_STATUS -LkNamespaceLocateBegin ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - ACPI_WALK_STATE *WalkState = (ACPI_WALK_STATE *) Context; - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - ACPI_OBJECT_TYPE ObjectType; - char *Path; - UINT8 PassedArgs; - ACPI_PARSE_OBJECT *NextOp; - ACPI_PARSE_OBJECT *OwningOp; - ACPI_PARSE_OBJECT *SpaceIdOp; - UINT32 MinimumLength; - UINT32 Temp; - const ACPI_OPCODE_INFO *OpInfo; - UINT32 Flags; - - - ACPI_FUNCTION_TRACE_PTR (LkNamespaceLocateBegin, Op); - - /* - * If this node is the actual declaration of a name - * [such as the XXXX name in "Method (XXXX)"], - * we are not interested in it here. We only care about names that are - * references to other objects within the namespace and the parent objects - * of name declarations - */ - if (Op->Asl.CompileFlags & NODE_IS_NAME_DECLARATION) - { - return (AE_OK); - } - - /* We are only interested in opcodes that have an associated name */ - - OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode); - - if ((!(OpInfo->Flags & AML_NAMED)) && - (!(OpInfo->Flags & AML_CREATE)) && - (Op->Asl.ParseOpcode != PARSEOP_NAMESTRING) && - (Op->Asl.ParseOpcode != PARSEOP_NAMESEG) && - (Op->Asl.ParseOpcode != PARSEOP_METHODCALL)) - { - return (AE_OK); - } - - /* - * We must enable the "search-to-root" for single NameSegs, but - * we have to be very careful about opening up scopes - */ - Flags = ACPI_NS_SEARCH_PARENT; - if ((Op->Asl.ParseOpcode == PARSEOP_NAMESTRING) || - (Op->Asl.ParseOpcode == PARSEOP_NAMESEG) || - (Op->Asl.ParseOpcode == PARSEOP_METHODCALL)) - { - /* - * These are name references, do not push the scope stack - * for them. - */ - Flags |= ACPI_NS_DONT_OPEN_SCOPE; - } - - /* Get the NamePath from the appropriate place */ - - if (OpInfo->Flags & AML_NAMED) - { - /* For nearly all NAMED operators, the name reference is the first child */ - - Path = Op->Asl.Child->Asl.Value.String; - if (Op->Asl.AmlOpcode == AML_ALIAS_OP) - { - /* - * ALIAS is the only oddball opcode, the name declaration - * (alias name) is the second operand - */ - Path = Op->Asl.Child->Asl.Next->Asl.Value.String; - } - } - else if (OpInfo->Flags & AML_CREATE) - { - /* Name must appear as the last parameter */ - - NextOp = Op->Asl.Child; - while (!(NextOp->Asl.CompileFlags & NODE_IS_NAME_DECLARATION)) - { - NextOp = NextOp->Asl.Next; - } - Path = NextOp->Asl.Value.String; - } - else - { - Path = Op->Asl.Value.String; - } - - ObjectType = AslMapNamedOpcodeToDataType (Op->Asl.AmlOpcode); - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "Type=%s\n", AcpiUtGetTypeName (ObjectType))); - - /* - * Lookup the name in the namespace. Name must exist at this point, or it - * is an invalid reference. - * - * The namespace is also used as a lookup table for references to resource - * descriptors and the fields within them. - */ - Gbl_NsLookupCount++; - - Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, - ACPI_IMODE_EXECUTE, Flags, WalkState, &(Node)); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_NOT_FOUND) - { - /* - * We didn't find the name reference by path -- we can qualify this - * a little better before we print an error message - */ - if (strlen (Path) == ACPI_NAME_SIZE) - { - /* A simple, one-segment ACPI name */ - - if (LkObjectExists (Path)) - { - /* - * There exists such a name, but we couldn't get to it - * from this scope - */ - AslError (ASL_ERROR, ASL_MSG_NOT_REACHABLE, Op, - Op->Asl.ExternalName); - } - else - { - /* The name doesn't exist, period */ - - if ((Op->Asl.Parent) && - (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_CONDREFOF)) - { - /* Ignore not found if parent is CondRefOf */ - - return (AE_OK); - } - - AslError (ASL_ERROR, ASL_MSG_NOT_EXIST, - Op, Op->Asl.ExternalName); - } - } - else - { - /* Check for a fully qualified path */ - - if (Path[0] == AML_ROOT_PREFIX) - { - /* Gave full path, the object does not exist */ - - if ((Op->Asl.Parent) && - (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_CONDREFOF)) - { - /* Ignore not found if parent is CondRefOf */ - - return (AE_OK); - } - - AslError (ASL_ERROR, ASL_MSG_NOT_EXIST, Op, - Op->Asl.ExternalName); - } - else - { - /* - * We can't tell whether it doesn't exist or just - * can't be reached. - */ - AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op, - Op->Asl.ExternalName); - } - } - - Status = AE_OK; - } - return (Status); - } - - /* Check for a reference vs. name declaration */ - - if (!(OpInfo->Flags & AML_NAMED) && - !(OpInfo->Flags & AML_CREATE)) - { - /* This node has been referenced, mark it for reference check */ - - Node->Flags |= ANOBJ_IS_REFERENCED; - } - - /* Attempt to optimize the NamePath */ - - OptOptimizeNamePath (Op, OpInfo->Flags, WalkState, Path, Node); - - /* - * 1) Dereference an alias (A name reference that is an alias) - * Aliases are not nested, the alias always points to the final object - */ - if ((Op->Asl.ParseOpcode != PARSEOP_ALIAS) && - (Node->Type == ACPI_TYPE_LOCAL_ALIAS)) - { - /* This node points back to the original PARSEOP_ALIAS */ - - NextOp = Node->Op; - - /* The first child is the alias target op */ - - NextOp = NextOp->Asl.Child; - - /* That in turn points back to original target alias node */ - - if (NextOp->Asl.Node) - { - Node = NextOp->Asl.Node; - } - - /* Else - forward reference to alias, will be resolved later */ - } - - /* 2) Check for a reference to a resource descriptor */ - - if ((Node->Type == ACPI_TYPE_LOCAL_RESOURCE_FIELD) || - (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 - */ - Temp = Node->Value; - if (Node->Flags & ANOBJ_IS_BIT_OFFSET) - { - Op->Asl.CompileFlags |= NODE_IS_BIT_OFFSET; - } - - /* Perform BitOffset <--> ByteOffset conversion if necessary */ - - switch (Op->Asl.Parent->Asl.AmlOpcode) - { - case AML_CREATE_FIELD_OP: - - /* We allow a Byte offset to Bit Offset conversion for this op */ - - if (!(Op->Asl.CompileFlags & NODE_IS_BIT_OFFSET)) - { - /* Simply multiply byte offset times 8 to get bit offset */ - - Temp = ACPI_MUL_8 (Temp); - } - break; - - - case AML_CREATE_BIT_FIELD_OP: - - /* This op requires a Bit Offset */ - - if (!(Op->Asl.CompileFlags & NODE_IS_BIT_OFFSET)) - { - AslError (ASL_ERROR, ASL_MSG_BYTES_TO_BITS, Op, NULL); - } - break; - - - 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); - } - 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; - - OpcGenerateAmlOpcode (Op); - } - - /* 3) Check for a method invocation */ - - else if ((((Op->Asl.ParseOpcode == PARSEOP_NAMESTRING) || (Op->Asl.ParseOpcode == PARSEOP_NAMESEG)) && - (Node->Type == ACPI_TYPE_METHOD) && - (Op->Asl.Parent) && - (Op->Asl.Parent->Asl.ParseOpcode != PARSEOP_METHOD)) || - - (Op->Asl.ParseOpcode == PARSEOP_METHODCALL)) - { - - /* - * A reference to a method within one of these opcodes is not an - * invocation of the method, it is simply a reference to the method. - */ - if ((Op->Asl.Parent) && - ((Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_REFOF) || - (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_DEREFOF) || - (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_OBJECTTYPE))) - { - return (AE_OK); - } - /* - * There are two types of method invocation: - * 1) Invocation with arguments -- the parser recognizes this - * as a METHODCALL. - * 2) Invocation with no arguments --the parser cannot determine that - * this is a method invocation, therefore we have to figure it out - * here. - */ - if (Node->Type != ACPI_TYPE_METHOD) - { - sprintf (MsgBuffer, "%s is a %s", - Op->Asl.ExternalName, AcpiUtGetTypeName (Node->Type)); - - AslError (ASL_ERROR, ASL_MSG_NOT_METHOD, Op, MsgBuffer); - return (AE_OK); - } - - /* Save the method node in the caller's op */ - - Op->Asl.Node = Node; - if (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_CONDREFOF) - { - return (AE_OK); - } - - /* - * This is a method invocation, with or without arguments. - * Count the number of arguments, each appears as a child - * under the parent node - */ - Op->Asl.ParseOpcode = PARSEOP_METHODCALL; - UtSetParseOpName (Op); - - PassedArgs = 0; - NextOp = Op->Asl.Child; - - while (NextOp) - { - PassedArgs++; - NextOp = NextOp->Asl.Next; - } - - if (Node->Value != ASL_EXTERNAL_METHOD) - { - /* - * Check the parsed arguments with the number expected by the - * method declaration itself - */ - if (PassedArgs != Node->Value) - { - sprintf (MsgBuffer, "%s requires %d", Op->Asl.ExternalName, - Node->Value); - - if (PassedArgs < Node->Value) - { - AslError (ASL_ERROR, ASL_MSG_ARG_COUNT_LO, Op, MsgBuffer); - } - else - { - AslError (ASL_ERROR, ASL_MSG_ARG_COUNT_HI, Op, MsgBuffer); - } - } - } - } - - /* 4) Check for an ASL Field definition */ - - else if ((Op->Asl.Parent) && - ((Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_FIELD) || - (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_BANKFIELD))) - { - /* - * Offset checking for fields. If the parent operation region has a - * constant length (known at compile time), we can check fields - * defined in that region against the region length. This will catch - * fields and field units that cannot possibly fit within the region. - * - * Note: Index fields do not directly reference an operation region, - * thus they are not included in this check. - */ - if (Op == Op->Asl.Parent->Asl.Child) - { - /* - * This is the first child of the field node, which is - * the name of the region. Get the parse node for the - * region -- which contains the length of the region. - */ - OwningOp = Node->Op; - Op->Asl.Parent->Asl.ExtraValue = - ACPI_MUL_8 ((UINT32) OwningOp->Asl.Value.Integer); - - /* Examine the field access width */ - - switch ((UINT8) Op->Asl.Parent->Asl.Value.Integer) - { - case AML_FIELD_ACCESS_ANY: - case AML_FIELD_ACCESS_BYTE: - case AML_FIELD_ACCESS_BUFFER: - default: - MinimumLength = 1; - break; - - case AML_FIELD_ACCESS_WORD: - MinimumLength = 2; - break; - - case AML_FIELD_ACCESS_DWORD: - MinimumLength = 4; - break; - - case AML_FIELD_ACCESS_QWORD: - MinimumLength = 8; - break; - } - - /* - * Is the region at least as big as the access width? - * Note: DataTableRegions have 0 length - */ - if (((UINT32) OwningOp->Asl.Value.Integer) && - ((UINT32) OwningOp->Asl.Value.Integer < MinimumLength)) - { - AslError (ASL_ERROR, ASL_MSG_FIELD_ACCESS_WIDTH, Op, NULL); - } - - /* - * Check EC/CMOS/SMBUS fields to make sure that the correct - * access type is used (BYTE for EC/CMOS, BUFFER for SMBUS) - */ - SpaceIdOp = OwningOp->Asl.Child->Asl.Next; - switch ((UINT32) SpaceIdOp->Asl.Value.Integer) - { - case REGION_EC: - case REGION_CMOS: - - if ((UINT8) Op->Asl.Parent->Asl.Value.Integer != AML_FIELD_ACCESS_BYTE) - { - AslError (ASL_ERROR, ASL_MSG_REGION_BYTE_ACCESS, Op, NULL); - } - break; - - case REGION_SMBUS: - - if ((UINT8) Op->Asl.Parent->Asl.Value.Integer != AML_FIELD_ACCESS_BUFFER) - { - AslError (ASL_ERROR, ASL_MSG_REGION_BUFFER_ACCESS, Op, NULL); - } - break; - - default: - - /* Nothing to do for other address spaces */ - break; - } - } - else - { - /* - * This is one element of the field list. Check to make sure - * that it does not go beyond the end of the parent operation region. - * - * In the code below: - * Op->Asl.Parent->Asl.ExtraValue - Region Length (bits) - * Op->Asl.ExtraValue - Field start offset (bits) - * Op->Asl.Child->Asl.Value.Integer32 - Field length (bits) - * Op->Asl.Child->Asl.ExtraValue - Field access width (bits) - */ - if (Op->Asl.Parent->Asl.ExtraValue && Op->Asl.Child) - { - LkCheckFieldRange (Op, - Op->Asl.Parent->Asl.ExtraValue, - Op->Asl.ExtraValue, - (UINT32) Op->Asl.Child->Asl.Value.Integer, - Op->Asl.Child->Asl.ExtraValue); - } - } - } - - Op->Asl.Node = Node; - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: LkNamespaceLocateEnd - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Ascending callback used during cross reference. We only - * need to worry about scope management here. - * - ******************************************************************************/ - -static ACPI_STATUS -LkNamespaceLocateEnd ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - ACPI_WALK_STATE *WalkState = (ACPI_WALK_STATE *) Context; - const ACPI_OPCODE_INFO *OpInfo; - - - ACPI_FUNCTION_TRACE (LkNamespaceLocateEnd); - - - /* We are only interested in opcodes that have an associated name */ - - OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode); - if (!(OpInfo->Flags & AML_NAMED)) - { - return (AE_OK); - } - - /* Not interested in name references, we did not open a scope for them */ - - if ((Op->Asl.ParseOpcode == PARSEOP_NAMESTRING) || - (Op->Asl.ParseOpcode == PARSEOP_NAMESEG) || - (Op->Asl.ParseOpcode == PARSEOP_METHODCALL)) - { - return (AE_OK); - } - - /* Pop the scope stack if necessary */ - - if (AcpiNsOpensScope (AslMapNamedOpcodeToDataType (Op->Asl.AmlOpcode))) - { - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "%s: Popping scope for Op %p\n", - AcpiUtGetTypeName (OpInfo->ObjectType), Op)); - - (void) AcpiDsScopeStackPop (WalkState); - } - - return (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/aslmain.c b/sys/contrib/dev/acpica-unix-20061109/compiler/aslmain.c deleted file mode 100644 index 6b0c87bcab..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/aslmain.c +++ /dev/null @@ -1,872 +0,0 @@ - -/****************************************************************************** - * - * Module Name: aslmain - compiler main and utilities - * $Revision: 1.94 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define _DECLARE_GLOBALS - -#include "aslcompiler.h" -#include "acnamesp.h" -#include "actables.h" -#include "acapps.h" - -#ifdef _DEBUG -#include -#endif - -#define _COMPONENT ACPI_COMPILER - ACPI_MODULE_NAME ("aslmain") - -BOOLEAN AslToFile = TRUE; -BOOLEAN DoCompile = TRUE; -BOOLEAN DoSignon = TRUE; - -char hex[] = -{ - '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' -}; - -/* Local prototypes */ - -static void -Options ( - void); - -static void -HelpMessage ( - void); - -static void -Usage ( - void); - -static void -AslInitialize ( - void); - -static void -AslCommandLine ( - int argc, - char **argv); - -#ifdef _DEBUG -#if ACPI_MACHINE_WIDTH != 16 -#include -#endif -#endif - -/******************************************************************************* - * - * FUNCTION: Options - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Display option help message - * - ******************************************************************************/ - -static void -Options ( - void) -{ - - printf ("General Output:\n"); - printf (" -p Specify filename prefix for all output files (including .aml)\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"); - - printf ("\nAML Output Files:\n"); - printf (" -s Create AML in assembler or C source file (*.asm or *.c)\n"); - printf (" -i Create assembler or C include file (*.inc or *.h)\n"); - printf (" -t Create AML in assembler or C hex table (*.hex)\n"); - - printf ("\nAML Code Generation:\n"); - printf (" -oa Disable all optimizations (compatibility mode)\n"); - printf (" -of Disable constant folding\n"); - printf (" -oi Disable integer optimization to Zero/One/Ones\n"); - printf (" -on Disable named reference string optimization\n"); - printf (" -r Override table header Revision (1-255)\n"); - - printf ("\nListings:\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"); - - printf ("\nAML Disassembler:\n"); - printf (" -d [file] Disassemble or decode binary ACPI table to file (*.dsl)\n"); - printf (" -dc [file] Disassemble AML and immediately compile it\n"); - printf (" (Obtain DSDT from current system if no input file)\n"); - printf (" -e [file] Include ACPI table 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"); - - 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"); -} - - -/******************************************************************************* - * - * FUNCTION: HelpMessage - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Display help message - * - ******************************************************************************/ - -static void -HelpMessage ( - void) -{ - - printf ("AML 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"); - printf (" 1) The -p option specifies the prefix\n"); - printf (" 2) The prefix of the AMLFileName in the ASL Definition Block\n"); - printf (" 3) The prefix of the input filename\n"); - printf ("\n"); - - Options (); - - printf ("\nCompiler/Disassembler Debug Options:\n"); - printf (" -b Create compiler debug/trace file (*.txt)\n"); - printf (" Types: Parse/Tree/Both\n"); - printf (" -f Ignore errors, force creation of AML output file(s)\n"); - printf (" -c Parse only, no output generation\n"); - printf (" -ot Display compile times\n"); - printf (" -x Set debug level for trace output\n"); -} - - -/******************************************************************************* - * - * FUNCTION: Usage - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Display usage and option message - * - ******************************************************************************/ - -static void -Usage ( - void) -{ - - printf ("Usage: %s [Options] [InputFile]\n\n", CompilerName); - Options (); -} - - -/******************************************************************************* - * - * FUNCTION: AslInitialize - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Initialize compiler globals - * - ******************************************************************************/ - -static void -AslInitialize ( - void) -{ - UINT32 i; - - -#ifdef _DEBUG - _CrtSetDbgFlag (_CRTDBG_CHECK_ALWAYS_DF | _CrtSetDbgFlag(0)); -#endif - - AcpiDbgLevel = 0; - - for (i = 0; i < ASL_NUM_FILES; i++) - { - Gbl_Files[i].Handle = NULL; - Gbl_Files[i].Filename = NULL; - } - - Gbl_Files[ASL_FILE_STDOUT].Handle = stdout; - Gbl_Files[ASL_FILE_STDOUT].Filename = "STDOUT"; - - Gbl_Files[ASL_FILE_STDERR].Handle = stderr; - Gbl_Files[ASL_FILE_STDERR].Filename = "STDERR"; -} - - -/******************************************************************************* - * - * FUNCTION: AslCommandLine - * - * PARAMETERS: argc/argv - * - * RETURN: None - * - * DESCRIPTION: Command line processing - * - ******************************************************************************/ - -static void -AslCommandLine ( - int argc, - char **argv) -{ - BOOLEAN BadCommandLine = FALSE; - ACPI_NATIVE_INT j; - - - /* Minimum command line contains at least one option or an input file */ - - if (argc < 2) - { - AslCompilerSignon (ASL_FILE_STDOUT); - Usage (); - exit (1); - } - - /* Get the command line options */ - - while ((j = AcpiGetopt (argc, argv, "2b:cd^e:fgh^i^l^o:p:r:s:t:v:w:x:")) != EOF) switch (j) - { - case '2': - Gbl_Acpi2 = TRUE; - break; - - - case 'b': - - switch (AcpiGbl_Optarg[0]) - { - case 'b': - AslCompilerdebug = 1; /* same as yydebug */ - break; - - case 'p': - AslCompilerdebug = 1; /* same as yydebug */ - break; - - case 't': - break; - - default: - printf ("Unknown option: -b%s\n", AcpiGbl_Optarg); - BadCommandLine = TRUE; - break; - } - - /* Produce debug output file */ - - Gbl_DebugFlag = TRUE; - break; - - - case 'c': - - /* Parse only */ - - Gbl_ParseOnlyFlag = TRUE; - break; - - - case 'd': - switch (AcpiGbl_Optarg[0]) - { - case '^': - DoCompile = FALSE; - break; - - case 'c': - break; - - default: - printf ("Unknown option: -d%s\n", AcpiGbl_Optarg); - BadCommandLine = TRUE; - break; - } - - Gbl_DisasmFlag = TRUE; - break; - - - case 'e': - Gbl_ExternalFilename = AcpiGbl_Optarg; - break; - - - case 'f': - - /* Ignore errors and force creation of aml file */ - - Gbl_IgnoreErrors = TRUE; - break; - - - case 'g': - - /* Get all ACPI tables */ - - Gbl_GetAllTables = TRUE; - DoCompile = FALSE; - break; - - - case 'h': - - switch (AcpiGbl_Optarg[0]) - { - case '^': - HelpMessage (); - exit (0); - - case 'c': - UtDisplayConstantOpcodes (); - exit (0); - - case 'r': - /* reserved names */ - - MpDisplayReservedNames (); - exit (0); - - default: - printf ("Unknown option: -h%s\n", AcpiGbl_Optarg); - BadCommandLine = TRUE; - break; - } - break; - - - case 'i': - - switch (AcpiGbl_Optarg[0]) - { - case 'a': - - /* Produce assembly code include file */ - - Gbl_AsmIncludeOutputFlag = TRUE; - break; - - case 'c': - - /* Produce C include file */ - - Gbl_C_IncludeOutputFlag = TRUE; - break; - - default: - printf ("Unknown option: -s%s\n", AcpiGbl_Optarg); - BadCommandLine = TRUE; - break; - } - break; - - - case 'l': - - switch (AcpiGbl_Optarg[0]) - { - case '^': - /* Produce listing file (Mixed source/aml) */ - - Gbl_ListingFlag = TRUE; - break; - - case 'n': - /* Produce namespace file */ - - Gbl_NsOutputFlag = TRUE; - break; - - case 's': - /* Produce combined source file */ - - Gbl_SourceOutputFlag = TRUE; - break; - - default: - printf ("Unknown option: -l%s\n", AcpiGbl_Optarg); - BadCommandLine = TRUE; - break; - } - break; - - - case 'o': - - switch (AcpiGbl_Optarg[0]) - { - case 'a': - - /* Disable all optimizations */ - - Gbl_FoldConstants = FALSE; - Gbl_IntegerOptimizationFlag = FALSE; - Gbl_ReferenceOptimizationFlag = FALSE; - break; - - case 'f': - - /* Disable folding on "normal" expressions */ - - Gbl_FoldConstants = FALSE; - break; - - case 'i': - - /* Disable integer optimization to constants */ - - Gbl_IntegerOptimizationFlag = FALSE; - break; - - case 'n': - - /* Disable named reference optimization */ - - Gbl_ReferenceOptimizationFlag = FALSE; - break; - - case 't': - - /* Display compile time(s) */ - - Gbl_CompileTimesFlag = TRUE; - break; - - default: - printf ("Unknown option: -c%s\n", AcpiGbl_Optarg); - BadCommandLine = TRUE; - break; - } - break; - - - case 'p': - - /* Override default AML output filename */ - - Gbl_OutputFilenamePrefix = AcpiGbl_Optarg; - Gbl_UseDefaultAmlFilename = FALSE; - break; - - - case 'r': - Gbl_RevisionOverride = (UINT8) strtoul (AcpiGbl_Optarg, NULL, 0); - break; - - - case 's': - - switch (AcpiGbl_Optarg[0]) - { - case 'a': - - /* Produce assembly code output file */ - - Gbl_AsmOutputFlag = TRUE; - break; - - case 'c': - - /* Produce C hex output file */ - - Gbl_C_OutputFlag = TRUE; - break; - - default: - printf ("Unknown option: -s%s\n", AcpiGbl_Optarg); - BadCommandLine = TRUE; - break; - } - break; - - - case 't': - - /* Produce hex table output file */ - - switch (AcpiGbl_Optarg[0]) - { - case 'a': - Gbl_HexOutputFlag = HEX_OUTPUT_ASM; - break; - - case 'c': - Gbl_HexOutputFlag = HEX_OUTPUT_C; - break; - - default: - printf ("Unknown option: -t%s\n", AcpiGbl_Optarg); - BadCommandLine = TRUE; - break; - } - break; - - - case 'v': - - switch (AcpiGbl_Optarg[0]) - { - case 'i': - /* Less verbose error messages */ - - Gbl_VerboseErrors = FALSE; - break; - - case 'o': - Gbl_DisplayOptimizations = TRUE; - break; - - case 'r': - Gbl_DisplayRemarks = FALSE; - break; - - case 's': - DoSignon = FALSE; - break; - - default: - printf ("Unknown option: -v%s\n", AcpiGbl_Optarg); - BadCommandLine = TRUE; - break; - } - break; - - - case 'w': /* Set warning levels */ - - switch (AcpiGbl_Optarg[0]) - { - case '1': - Gbl_WarningLevel = ASL_WARNING; - break; - - case '2': - Gbl_WarningLevel = ASL_WARNING2; - break; - - case '3': - Gbl_WarningLevel = ASL_WARNING3; - break; - - default: - printf ("Unknown option: -w%s\n", AcpiGbl_Optarg); - BadCommandLine = TRUE; - break; - } - break; - - - case 'x': - - AcpiDbgLevel = strtoul (AcpiGbl_Optarg, NULL, 16); - break; - - - default: - - BadCommandLine = TRUE; - break; - } - - /* Next parameter must be the input filename */ - - Gbl_Files[ASL_FILE_INPUT].Filename = argv[AcpiGbl_Optind]; - - if (!Gbl_Files[ASL_FILE_INPUT].Filename && - !Gbl_DisasmFlag && - !Gbl_GetAllTables) - { - printf ("Missing input filename\n"); - BadCommandLine = TRUE; - } - - if (DoSignon) - { - AslCompilerSignon (ASL_FILE_STDOUT); - } - - /* Abort if anything went wrong on the command line */ - - if (BadCommandLine) - { - printf ("\n"); - Usage (); - exit (1); - } - - if ((AcpiGbl_Optind + 1) < argc) - { - printf ("Warning: extra arguments (%d) after input filename are ignored\n\n", - argc - AcpiGbl_Optind - 1); - } -} - - -/******************************************************************************* - * - * FUNCTION: main - * - * PARAMETERS: Standard argc/argv - * - * RETURN: Program termination code - * - * DESCRIPTION: C main routine for the Asl Compiler. Handle command line - * options and begin the compile. - * - ******************************************************************************/ - -int ACPI_SYSTEM_XFACE -main ( - int argc, - char **argv) -{ - ACPI_STATUS Status; - char *Prefix; - - -#ifdef _DEBUG -#if ACPI_MACHINE_WIDTH != 16 - _CrtSetDbgFlag (_CRTDBG_CHECK_ALWAYS_DF | _CRTDBG_LEAK_CHECK_DF | - _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG)); -#endif -#endif - - /* Init and command line */ - - AslInitialize (); - AslCommandLine (argc, argv); - - /* - * If -p not specified, we will use the input filename as the - * output filename prefix - */ - Status = FlSplitInputPathname (Gbl_Files[ASL_FILE_INPUT].Filename, - &Gbl_DirectoryPath, &Prefix); - if (ACPI_FAILURE (Status)) - { - return -1; - } - - if (Gbl_UseDefaultAmlFilename) - { - Gbl_OutputFilenamePrefix = Prefix; - } - - /* AML Disassembly (Optional) */ - - if (Gbl_DisasmFlag || Gbl_GetAllTables) - { - /* ACPI CA subsystem initialization */ - - Status = AdInitialize (); - if (ACPI_FAILURE (Status)) - { - return -1; - } - - Status = AcpiAllocateRootTable (4); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not initialize ACPI Table Manager, %s\n", - AcpiFormatException (Status)); - return -1; - } - - /* This is where the disassembly happens */ - - AcpiGbl_DbOpt_disasm = TRUE; - Status = AdAmlDisassemble (AslToFile, - Gbl_Files[ASL_FILE_INPUT].Filename, - Gbl_OutputFilenamePrefix, - &Gbl_Files[ASL_FILE_INPUT].Filename, - Gbl_GetAllTables); - if (ACPI_FAILURE (Status)) - { - return -1; - } - - /* - * Gbl_Files[ASL_FILE_INPUT].Filename was replaced with the - * .DSL disassembly file, which can now be compiled if requested - */ - if (DoCompile) - { - AcpiOsPrintf ("\nCompiling \"%s\"\n", - Gbl_Files[ASL_FILE_INPUT].Filename); - } - } - - /* - * ASL Compilation (Optional) - */ - if (DoCompile) - { - /* - * If -p not specified, we will use the input filename as the - * output filename prefix - */ - Status = FlSplitInputPathname (Gbl_Files[ASL_FILE_INPUT].Filename, - &Gbl_DirectoryPath, &Prefix); - if (ACPI_FAILURE (Status)) - { - return -1; - } - - if (Gbl_UseDefaultAmlFilename) - { - Gbl_OutputFilenamePrefix = Prefix; - } - - /* ACPI CA subsystem initialization (Must be re-initialized) */ - - Status = AcpiOsInitialize (); - AcpiUtInitGlobals (); - Status = AcpiUtMutexInitialize (); - if (ACPI_FAILURE (Status)) - { - return -1; - } - - Status = AcpiNsRootInitialize (); - if (ACPI_FAILURE (Status)) - { - return -1; - } - Status = CmDoCompile (); - } - - return (0); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/aslmap.c b/sys/contrib/dev/acpica-unix-20061109/compiler/aslmap.c deleted file mode 100644 index 72a8d8f9d6..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/aslmap.c +++ /dev/null @@ -1,750 +0,0 @@ - -/****************************************************************************** - * - * Module Name: aslmap - parser to AML opcode mapping table - * $Revision: 1.85 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "aslcompiler.h" -#include "amlcode.h" -#include "acparser.h" - - -#define _COMPONENT ACPI_COMPILER - ACPI_MODULE_NAME ("aslmap") - - -/******************************************************************************* - * - * FUNCTION: AslMapNamedOpcodeToDataType - * - * PARAMETERS: Opcode - The Named AML opcode to map - * - * RETURN: The ACPI type associated with the named opcode - * - * DESCRIPTION: Convert a raw Named AML opcode to the associated data type. - * Named opcodes are a subset of the AML opcodes. - * - ******************************************************************************/ - -ACPI_OBJECT_TYPE -AslMapNamedOpcodeToDataType ( - UINT16 Opcode) -{ - const ACPI_OPCODE_INFO *OpInfo; - - - /* - * There are some differences from the opcode table types, we - * catch them here. - */ - OpInfo = AcpiPsGetOpcodeInfo (Opcode); - - if (Opcode == AML_INT_NAMEPATH_OP) - { - return (ACPI_TYPE_ANY); - } - - if (Opcode == AML_INT_METHODCALL_OP) - { - return (ACPI_TYPE_ANY); - } - - if (OpInfo->Flags & AML_NSOBJECT) - { - return (OpInfo->ObjectType); - } - - return (ACPI_TYPE_ANY); -} - - -/******************************************************************************* - * - * FUNCTION: MpDisplayReservedNames - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Print the table above - * - ******************************************************************************/ - -void -MpDisplayReservedNames ( - void) -{ - UINT32 i; - - printf ("Reserved name information\n\n"); - - for (i = 0; ReservedMethods[i].Name; i++) - { - printf ("%s ", ReservedMethods[i].Name); - - if (ReservedMethods[i].Flags & ASL_RSVD_SCOPE) - { - printf ("Reserved scope name\n"); - } - else if (ReservedMethods[i].Flags & ASL_RSVD_RESOURCE_NAME) - { - printf ("Resource data type reserved field name\n"); - } - else - { - printf ("Method with %d arguments, ", - ReservedMethods[i].NumArguments); - - if (ReservedMethods[i].Flags & ASL_RSVD_RETURN_VALUE) - { - printf ("must return a value\n"); - } - else - { - printf ("no return value\n"); - } - } - } -} - - -/******************************************************************************* - * - * DATA STRUCTURE: ReservedMethods - * - * DESCRIPTION: Contains all reserved methods and names as defined in the - * ACPI specification. Used during the analysis phase to - * ensure that reserved methods have the required number of - * arguments and the proper return type. - * - * Each entry in the table contains the following items: - * - * Name - The ACPI reserved name - * Args - Number of arguments to the method - * Flags - Whether this method must return a value or not - * - ******************************************************************************/ - -const ASL_RESERVED_INFO ReservedMethods[] = { - {"_AC0", 0, ASL_RSVD_RETURN_VALUE}, - {"_AC1", 0, ASL_RSVD_RETURN_VALUE}, - {"_AC2", 0, ASL_RSVD_RETURN_VALUE}, - {"_AC3", 0, ASL_RSVD_RETURN_VALUE}, - {"_AC4", 0, ASL_RSVD_RETURN_VALUE}, - {"_AC5", 0, ASL_RSVD_RETURN_VALUE}, - {"_AC6", 0, ASL_RSVD_RETURN_VALUE}, - {"_AC7", 0, ASL_RSVD_RETURN_VALUE}, - {"_AC8", 0, ASL_RSVD_RETURN_VALUE}, - {"_AC9", 0, ASL_RSVD_RETURN_VALUE}, - {"_ADR", 0, ASL_RSVD_RETURN_VALUE}, - {"_AL0", 0, ASL_RSVD_RETURN_VALUE}, - {"_AL1", 0, ASL_RSVD_RETURN_VALUE}, - {"_AL2", 0, ASL_RSVD_RETURN_VALUE}, - {"_AL3", 0, ASL_RSVD_RETURN_VALUE}, - {"_AL4", 0, ASL_RSVD_RETURN_VALUE}, - {"_AL5", 0, ASL_RSVD_RETURN_VALUE}, - {"_AL6", 0, ASL_RSVD_RETURN_VALUE}, - {"_AL7", 0, ASL_RSVD_RETURN_VALUE}, - {"_AL8", 0, ASL_RSVD_RETURN_VALUE}, - {"_AL9", 0, ASL_RSVD_RETURN_VALUE}, - {"_ALC", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_ALI", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_ALN", 0, ASL_RSVD_RESOURCE_NAME}, - {"_ALP", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_ALR", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_ALT", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_ASI", 0, ASL_RSVD_RESOURCE_NAME}, - {"_BAS", 0, ASL_RSVD_RESOURCE_NAME}, - {"_BBN", 0, ASL_RSVD_RETURN_VALUE}, - {"_BCL", 0, ASL_RSVD_RETURN_VALUE}, - {"_BCM", 1, 0}, - {"_BDN", 0, ASL_RSVD_RETURN_VALUE}, - {"_BFS", 1, 0}, - {"_BIF", 0, ASL_RSVD_RETURN_VALUE}, - {"_BLT", 3, 0}, /* Acpi 3.0 */ - {"_BM_", 0, ASL_RSVD_RESOURCE_NAME}, - {"_BMC", 1, 0}, /* Acpi 3.0 */ - {"_BMD", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_BQC", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_BST", 0, ASL_RSVD_RETURN_VALUE}, - {"_BTM", 1, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_BTP", 1, 0}, - {"_CBA", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_CID", 0, ASL_RSVD_RETURN_VALUE}, - {"_CRS", 0, ASL_RSVD_RETURN_VALUE}, - {"_CRT", 0, ASL_RSVD_RETURN_VALUE}, - {"_CSD", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_CST", 0, ASL_RSVD_RETURN_VALUE}, - {"_DCK", 1, ASL_RSVD_RETURN_VALUE}, - {"_DCS", 0, ASL_RSVD_RETURN_VALUE}, - {"_DDC", 1, ASL_RSVD_RETURN_VALUE}, - {"_DDN", 0, 0}, - {"_DEC", 0, ASL_RSVD_RESOURCE_NAME}, - {"_DGS", 0, ASL_RSVD_RETURN_VALUE}, - {"_DIS", 0, 0}, - {"_DMA", 0, ASL_RSVD_RETURN_VALUE}, - {"_DOD", 0, ASL_RSVD_RETURN_VALUE}, - {"_DOS", 1, 0}, - {"_DSM", 4, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_DSS", 1, 0}, - {"_DSW", 3, 0}, /* Acpi 3.0 */ - {"_EC_", 0, ASL_RSVD_RETURN_VALUE}, - {"_EDL", 0, ASL_RSVD_RETURN_VALUE}, - {"_EJ0", 1, 0}, - {"_EJ1", 1, 0}, - {"_EJ2", 1, 0}, - {"_EJ3", 1, 0}, - {"_EJ4", 1, 0}, - {"_EJD", 0, ASL_RSVD_RETURN_VALUE}, - {"_ERR", 2, ASL_RSVD_RETURN_VALUE}, - {"_FDE", 0, ASL_RSVD_RETURN_VALUE}, - {"_FDI", 0, ASL_RSVD_RETURN_VALUE}, - {"_FDM", 1, 0}, - {"_FIX", 0, ASL_RSVD_RETURN_VALUE}, - {"_GL_", 0, ASL_RSVD_RETURN_VALUE}, - {"_GLK", 0, ASL_RSVD_RETURN_VALUE}, - {"_GPD", 0, ASL_RSVD_RETURN_VALUE}, - {"_GPE", 0, ASL_RSVD_RETURN_VALUE}, - {"_GRA", 0, ASL_RSVD_RESOURCE_NAME}, - {"_GSB", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_GTF", 0, ASL_RSVD_RETURN_VALUE}, - {"_GTM", 0, ASL_RSVD_RETURN_VALUE}, - {"_GTS", 1, 0}, - {"_HE_", 0, ASL_RSVD_RESOURCE_NAME}, - {"_HID", 0, ASL_RSVD_RETURN_VALUE}, - {"_HOT", 0, ASL_RSVD_RETURN_VALUE}, - {"_HPP", 0, ASL_RSVD_RETURN_VALUE}, - {"_HPX", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_IFT", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_INI", 0, 0}, - {"_INT", 0, ASL_RSVD_RESOURCE_NAME}, - {"_IRC", 0, 0}, - {"_LCK", 1, 0}, - {"_LEN", 0, ASL_RSVD_RESOURCE_NAME}, - {"_LID", 0, ASL_RSVD_RETURN_VALUE}, - {"_LL_", 0, ASL_RSVD_RESOURCE_NAME}, - {"_MAF", 0, ASL_RSVD_RESOURCE_NAME}, - {"_MAT", 0, ASL_RSVD_RETURN_VALUE}, - {"_MAX", 0, ASL_RSVD_RESOURCE_NAME}, - {"_MEM", 0, ASL_RSVD_RESOURCE_NAME}, - {"_MIF", 0, ASL_RSVD_RESOURCE_NAME}, - {"_MIN", 0, ASL_RSVD_RESOURCE_NAME}, - {"_MLS", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_MSG", 1, 0}, - {"_OFF", 0, 0}, - {"_ON_", 0, 0}, - {"_OS_", 0, ASL_RSVD_RETURN_VALUE}, - {"_OSC", 4, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_OSI", 1, ASL_RSVD_RETURN_VALUE}, - {"_OST", 3, 0}, /* Acpi 3.0 */ - {"_PCL", 0, ASL_RSVD_RETURN_VALUE}, - {"_PCT", 0, ASL_RSVD_RETURN_VALUE}, - {"_PDC", 1, 0}, - {"_PIC", 1, 0}, - {"_PLD", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_PPC", 0, ASL_RSVD_RETURN_VALUE}, - {"_PPE", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_PR0", 0, ASL_RSVD_RETURN_VALUE}, - {"_PR1", 0, ASL_RSVD_RETURN_VALUE}, - {"_PR2", 0, ASL_RSVD_RETURN_VALUE}, - {"_PRS", 0, ASL_RSVD_RETURN_VALUE}, - {"_PRT", 0, ASL_RSVD_RETURN_VALUE}, - {"_PRW", 0, ASL_RSVD_RETURN_VALUE}, - {"_PS0", 0, 0}, - {"_PS1", 0, 0}, - {"_PS2", 0, 0}, - {"_PS3", 0, 0}, - {"_PSC", 0, ASL_RSVD_RETURN_VALUE}, - {"_PSD", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_PSL", 0, ASL_RSVD_RETURN_VALUE}, - {"_PSR", 0, ASL_RSVD_RETURN_VALUE}, - {"_PSS", 0, ASL_RSVD_RETURN_VALUE}, - {"_PSV", 0, ASL_RSVD_RETURN_VALUE}, - {"_PSW", 1, 0}, - {"_PTC", 0, ASL_RSVD_RETURN_VALUE}, - {"_PTS", 1, 0}, - {"_PXM", 0, ASL_RSVD_RETURN_VALUE}, - {"_RBO", 0, ASL_RSVD_RESOURCE_NAME}, - {"_RBW", 0, ASL_RSVD_RESOURCE_NAME}, - {"_REG", 2, 0}, - {"_REV", 0, ASL_RSVD_RETURN_VALUE}, - {"_RMV", 0, ASL_RSVD_RETURN_VALUE}, - {"_RNG", 0, ASL_RSVD_RESOURCE_NAME}, - {"_ROM", 2, ASL_RSVD_RETURN_VALUE}, - {"_RT_", 0, ASL_RSVD_RESOURCE_NAME}, /* Acpi 3.0 */ - {"_RTV", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_RW_", 0, ASL_RSVD_RESOURCE_NAME}, - {"_S0_", 0, ASL_RSVD_RETURN_VALUE}, - {"_S1_", 0, ASL_RSVD_RETURN_VALUE}, - {"_S2_", 0, ASL_RSVD_RETURN_VALUE}, - {"_S3_", 0, ASL_RSVD_RETURN_VALUE}, - {"_S4_", 0, ASL_RSVD_RETURN_VALUE}, - {"_S5_", 0, ASL_RSVD_RETURN_VALUE}, - {"_S1D", 0, ASL_RSVD_RETURN_VALUE}, - {"_S2D", 0, ASL_RSVD_RETURN_VALUE}, - {"_S3D", 0, ASL_RSVD_RETURN_VALUE}, - {"_S4D", 0, ASL_RSVD_RETURN_VALUE}, - {"_S0W", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_S1W", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_S2W", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_S3W", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_S4W", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_SB_", 0, ASL_RSVD_SCOPE}, - {"_SBS", 0, ASL_RSVD_RETURN_VALUE}, - {"_SCP", 1, 0}, - {"_SDD", 1, 0}, /* Acpi 3.0 */ - {"_SEG", 0, ASL_RSVD_RETURN_VALUE}, - {"_SHR", 0, ASL_RSVD_RESOURCE_NAME}, - {"_SI_", 0, ASL_RSVD_SCOPE}, - {"_SIZ", 0, ASL_RSVD_RESOURCE_NAME}, - {"_SLI", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_SPD", 1, ASL_RSVD_RETURN_VALUE}, - {"_SRS", 1, 0}, - {"_SRV", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_SST", 1, 0}, - {"_STA", 0, ASL_RSVD_RETURN_VALUE}, - {"_STM", 3, 0}, - {"_STR", 0, ASL_RSVD_RETURN_VALUE}, - {"_SUN", 0, ASL_RSVD_RETURN_VALUE}, - {"_SWS", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_TC1", 0, ASL_RSVD_RETURN_VALUE}, - {"_TC2", 0, ASL_RSVD_RETURN_VALUE}, - {"_TDL", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0b */ - {"_TMP", 0, ASL_RSVD_RETURN_VALUE}, - {"_TPC", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_TPT", 1, 0}, /* Acpi 3.0 */ - {"_TRA", 0, ASL_RSVD_RESOURCE_NAME}, - {"_TRS", 0, ASL_RSVD_RESOURCE_NAME}, - {"_TRT", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_TSD", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_TSF", 0, ASL_RSVD_RESOURCE_NAME}, /* Acpi 3.0 */ - {"_TSP", 0, ASL_RSVD_RETURN_VALUE}, - {"_TSS", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_TST", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_TTP", 0, ASL_RSVD_RESOURCE_NAME}, - {"_TTS", 1, 0}, /* Acpi 3.0 */ - {"_TYP", 0, ASL_RSVD_RESOURCE_NAME}, - {"_TZ_", 0, ASL_RSVD_SCOPE}, - {"_TZD", 0, ASL_RSVD_RETURN_VALUE}, - {"_TZM", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_TZP", 0, ASL_RSVD_RETURN_VALUE}, - {"_UID", 0, ASL_RSVD_RETURN_VALUE}, - {"_UPC", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_UPD", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_UPP", 0, ASL_RSVD_RETURN_VALUE}, /* Acpi 3.0 */ - {"_VPO", 0, ASL_RSVD_RETURN_VALUE}, - {"_WAK", 1, ASL_RSVD_RETURN_VALUE}, - {"_WDG", 0, ASL_RSVD_RETURN_VALUE}, /* MS Extension */ - {"_WED", 1, ASL_RSVD_RETURN_VALUE}, /* MS Extension */ - {NULL, 0, 0}, -}; - - -/******************************************************************************* - * - * DATA STRUCTURE: AslKeywordMapping - * - * DESCRIPTION: Maps the ParseOpcode to the actual AML opcode. The parse - * opcodes are generated from Bison, and this table must - * track any additions to them. - * - * Each entry in the table contains the following items: - * - * AML opcode - Opcode that is written to the AML file - * Value - Value of the object to be written (if applicable) - * Flags - 1) Whether this opcode opens an AML "package". - * - ******************************************************************************/ -/* - * TBD: - * AccessAttrib - * AccessType - * AMlop for DMA? - * ObjectType keywords - * Register - */ - -const ASL_MAPPING_ENTRY AslKeywordMapping [] = -{ -/*! [Begin] no source code translation (keep the table structure) */ - - -/* ACCESSAS */ OP_TABLE_ENTRY (AML_INT_ACCESSFIELD_OP, 0, 0, 0), -/* ACCESSATTRIB_BLOCK */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_SMB_BLOCK, 0, 0), -/* ACCESSATTRIB_BLOCK_CALL */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_SMB_BLOCK_CALL,0, 0), -/* ACCESSATTRIB_BYTE */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_SMB_BYTE, 0, 0), -/* ACCESSATTRIB_WORD_CALL */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_SMB_WORD_CALL, 0, 0), -/* ACCESSATTRIB_QUICK */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_SMB_QUICK, 0, 0), -/* ACCESSATTRIB_SND_RCV */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_SMB_SEND_RCV, 0, 0), -/* ACCESSATTRIB_WORD */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_SMB_WORD, 0, 0), -/* ACCESSTYPE_ANY */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ACCESS_ANY, 0, 0), -/* ACCESSTYPE_BUF */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ACCESS_BUFFER, 0, 0), -/* ACCESSTYPE_BYTE */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ACCESS_BYTE, 0, 0), -/* ACCESSTYPE_DWORD */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ACCESS_DWORD, 0, 0), -/* ACCESSTYPE_QWORD */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ACCESS_QWORD, 0, 0), -/* ACCESSTYPE_WORD */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ACCESS_WORD, 0, 0), -/* ACQUIRE */ OP_TABLE_ENTRY (AML_ACQUIRE_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* ADD */ OP_TABLE_ENTRY (AML_ADD_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* ADDRESSSPACE_FFIXEDHW */ OP_TABLE_ENTRY (AML_BYTE_OP, REGION_FIXED_HW, 0, 0), -/* ADDRESSTYPE_ACPI */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0), -/* ADDRESSTYPE_MEMORY */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* ADDRESSTYPE_NVS */ OP_TABLE_ENTRY (AML_BYTE_OP, 3, 0, 0), -/* ADDRESSTYPE_RESERVED */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), -/* ALIAS */ OP_TABLE_ENTRY (AML_ALIAS_OP, 0, 0, 0), -/* AND */ OP_TABLE_ENTRY (AML_BIT_AND_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* ARG0 */ OP_TABLE_ENTRY (AML_ARG0, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), -/* ARG1 */ OP_TABLE_ENTRY (AML_ARG1, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), -/* ARG2 */ OP_TABLE_ENTRY (AML_ARG2, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), -/* ARG3 */ OP_TABLE_ENTRY (AML_ARG3, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), -/* ARG4 */ OP_TABLE_ENTRY (AML_ARG4, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), -/* ARG5 */ OP_TABLE_ENTRY (AML_ARG5, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), -/* ARG6 */ OP_TABLE_ENTRY (AML_ARG6, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), -/* BANKFIELD */ OP_TABLE_ENTRY (AML_BANK_FIELD_OP, 0, NODE_AML_PACKAGE, 0), -/* BREAK */ OP_TABLE_ENTRY (AML_BREAK_OP, 0, 0, 0), -/* BREAKPOINT */ OP_TABLE_ENTRY (AML_BREAK_POINT_OP, 0, 0, 0), -/* BUFFER */ OP_TABLE_ENTRY (AML_BUFFER_OP, 0, NODE_AML_PACKAGE, ACPI_BTYPE_BUFFER), -/* BUSMASTERTYPE_MASTER */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), -/* BUSMASTERTYPE_NOTMASTER */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* BYTECONST */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, 0, 0, ACPI_BTYPE_INTEGER), -/* CASE */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), -/* CONCATENATE */ OP_TABLE_ENTRY (AML_CONCAT_OP, 0, 0, ACPI_BTYPE_COMPUTE_DATA), -/* CONCATENATERESTEMPLATE */ OP_TABLE_ENTRY (AML_CONCAT_RES_OP, 0, 0, ACPI_BTYPE_BUFFER), -/* CONDREFOF */ OP_TABLE_ENTRY (AML_COND_REF_OF_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* CONTINUE */ OP_TABLE_ENTRY (AML_CONTINUE_OP, 0, 0, 0), -/* COPY */ OP_TABLE_ENTRY (AML_COPY_OP, 0, 0, ACPI_BTYPE_DATA_REFERENCE), -/* CREATEBITFIELD */ OP_TABLE_ENTRY (AML_CREATE_BIT_FIELD_OP, 0, 0, 0), -/* CREATEBYTEFIELD */ OP_TABLE_ENTRY (AML_CREATE_BYTE_FIELD_OP, 0, 0, 0), -/* CREATEDWORDFIELD */ OP_TABLE_ENTRY (AML_CREATE_DWORD_FIELD_OP, 0, 0, 0), -/* CREATEFIELD */ OP_TABLE_ENTRY (AML_CREATE_FIELD_OP, 0, 0, 0), -/* CREATEQWORDFIELD */ OP_TABLE_ENTRY (AML_CREATE_QWORD_FIELD_OP, 0, 0, 0), -/* CREATEWORDFIELD */ OP_TABLE_ENTRY (AML_CREATE_WORD_FIELD_OP, 0, 0, 0), -/* DATATABLEREGION */ OP_TABLE_ENTRY (AML_DATA_REGION_OP, 0, 0, 0), -/* DEBUG */ OP_TABLE_ENTRY (AML_DEBUG_OP, 0, 0, ACPI_BTYPE_DEBUG_OBJECT), -/* DECODETYPE_POS */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* DECODETYPE_SUB */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), -/* DECREMENT */ OP_TABLE_ENTRY (AML_DECREMENT_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* DEFAULT */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), -/* DEFAULT_ARG */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), -/* DEFINITIONBLOCK */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), -/* DEREFOF */ OP_TABLE_ENTRY (AML_DEREF_OF_OP, 0, 0, ACPI_BTYPE_DATA_REFERENCE | ACPI_BTYPE_STRING), -/* DEVICE */ OP_TABLE_ENTRY (AML_DEVICE_OP, 0, NODE_AML_PACKAGE, 0), -/* DIVIDE */ OP_TABLE_ENTRY (AML_DIVIDE_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* DMA */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), -/* DMATYPE_A */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), -/* DMATYPE_COMPATIBILITY */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* DMATYPE_B */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0), -/* DMATYPE_F */ OP_TABLE_ENTRY (AML_BYTE_OP, 3, 0, 0), -/* DWORDCONST */ OP_TABLE_ENTRY (AML_RAW_DATA_DWORD, 0, 0, ACPI_BTYPE_INTEGER), -/* DWORDIO */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), -/* DWORDMEMORY */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), -/* DWORDSPACE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* EISAID */ OP_TABLE_ENTRY (AML_DWORD_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* ELSE */ OP_TABLE_ENTRY (AML_ELSE_OP, 0, NODE_AML_PACKAGE, 0), -/* ELSEIF */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, NODE_AML_PACKAGE, 0), -/* ENDDEPENDENTFN */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), -/* ENDTAG */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), -/* ERRORNODE */ OP_TABLE_ENTRY (AML_NOOP_OP, 0, 0, 0), -/* EVENT */ OP_TABLE_ENTRY (AML_EVENT_OP, 0, 0, 0), -/* EXTENDEDIO */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* EXTENDEDMEMORY */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* EXTENDEDSPACE */ OP_TABLE_ENTRY (AML_RAW_DATA_QWORD, 0, 0, ACPI_BTYPE_INTEGER), -/* EXTERNAL */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), -/* FATAL */ OP_TABLE_ENTRY (AML_FATAL_OP, 0, 0, 0), -/* FIELD */ OP_TABLE_ENTRY (AML_FIELD_OP, 0, NODE_AML_PACKAGE, 0), -/* FINDSETLEFTBIT */ OP_TABLE_ENTRY (AML_FIND_SET_LEFT_BIT_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* FINDSETRIGHTBIT */ OP_TABLE_ENTRY (AML_FIND_SET_RIGHT_BIT_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* FIXEDIO */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), -/* FROMBCD */ OP_TABLE_ENTRY (AML_FROM_BCD_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* FUNCTION */ OP_TABLE_ENTRY (AML_METHOD_OP, 0, NODE_AML_PACKAGE, 0), -/* IF */ OP_TABLE_ENTRY (AML_IF_OP, 0, NODE_AML_PACKAGE, 0), -/* INCLUDE */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), -/* INCLUDE_CSTYLE */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), -/* INCLUDE_END */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), -/* INCREMENT */ OP_TABLE_ENTRY (AML_INCREMENT_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* INDEX */ OP_TABLE_ENTRY (AML_INDEX_OP, 0, 0, ACPI_BTYPE_REFERENCE), -/* INDEXFIELD */ OP_TABLE_ENTRY (AML_INDEX_FIELD_OP, 0, NODE_AML_PACKAGE, 0), -/* INTEGER */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* INTERRUPT */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), -/* INTLEVEL_ACTIVEHIGH */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* INTLEVEL_ACTIVELOW */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), -/* INTTYPE_EDGE */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), -/* INTTYPE_LEVEL */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* IO */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), -/* IODECODETYPE_10 */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* IODECODETYPE_16 */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), -/* IRQ */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), -/* IRQNOFLAGS */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), -/* LAND */ OP_TABLE_ENTRY (AML_LAND_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* LEQUAL */ OP_TABLE_ENTRY (AML_LEQUAL_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* LGREATER */ OP_TABLE_ENTRY (AML_LGREATER_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* LGREATEREQUAL */ OP_TABLE_ENTRY (AML_LGREATEREQUAL_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* LINE */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), -/* LLESS */ OP_TABLE_ENTRY (AML_LLESS_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* LLESSEQUAL */ OP_TABLE_ENTRY (AML_LLESSEQUAL_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* LNOT */ OP_TABLE_ENTRY (AML_LNOT_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* LNOTEQUAL */ OP_TABLE_ENTRY (AML_LNOTEQUAL_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* LOAD */ OP_TABLE_ENTRY (AML_LOAD_OP, 0, 0, 0), -/* LOADTABLE */ OP_TABLE_ENTRY (AML_LOAD_TABLE_OP, 0, 0, ACPI_BTYPE_DDB_HANDLE), -/* LOCAL0 */ OP_TABLE_ENTRY (AML_LOCAL0, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), -/* LOCAL1 */ OP_TABLE_ENTRY (AML_LOCAL1, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), -/* LOCAL2 */ OP_TABLE_ENTRY (AML_LOCAL2, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), -/* LOCAL3 */ OP_TABLE_ENTRY (AML_LOCAL3, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), -/* LOCAL4 */ OP_TABLE_ENTRY (AML_LOCAL4, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), -/* LOCAL5 */ OP_TABLE_ENTRY (AML_LOCAL5, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), -/* LOCAL6 */ OP_TABLE_ENTRY (AML_LOCAL6, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), -/* LOCAL7 */ OP_TABLE_ENTRY (AML_LOCAL7, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), -/* LOCKRULE_LOCK */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_LOCK_ALWAYS, 0, 0), -/* LOCKRULE_NOLOCK */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_LOCK_NEVER, 0, 0), -/* LOR */ OP_TABLE_ENTRY (AML_LOR_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* MATCH */ OP_TABLE_ENTRY (AML_MATCH_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* MATCHTYPE_MEQ */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, MATCH_MEQ, 0, ACPI_BTYPE_INTEGER), -/* MATCHTYPE_MGE */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, MATCH_MGE, 0, ACPI_BTYPE_INTEGER), -/* MATCHTYPE_MGT */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, MATCH_MGT, 0, ACPI_BTYPE_INTEGER), -/* MATCHTYPE_MLE */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, MATCH_MLE, 0, ACPI_BTYPE_INTEGER), -/* MATCHTYPE_MLT */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, MATCH_MLT, 0, ACPI_BTYPE_INTEGER), -/* MATCHTYPE_MTR */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, MATCH_MTR, 0, ACPI_BTYPE_INTEGER), -/* MAXTYPE_FIXED */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), -/* MAXTYPE_NOTFIXED */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* MEMORY24 */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), -/* MEMORY32 */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), -/* MEMORY32FIXED */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), -/* MEMTYPE_CACHEABLE */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), -/* MEMTYPE_NONCACHEABLE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* MEMTYPE_PREFETCHABLE */ OP_TABLE_ENTRY (AML_BYTE_OP, 3, 0, 0), -/* MEMTYPE_WRITECOMBINING */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0), -/* METHOD */ OP_TABLE_ENTRY (AML_METHOD_OP, 0, NODE_AML_PACKAGE, 0), -/* METHODCALL */ OP_TABLE_ENTRY (AML_INT_METHODCALL_OP, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), -/* MID */ OP_TABLE_ENTRY (AML_MID_OP, 0, 0, ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER), -/* MINTYPE_FIXED */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), -/* MINTYPE_NOTFIXED */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* MOD */ OP_TABLE_ENTRY (AML_MOD_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* MULTIPLY */ OP_TABLE_ENTRY (AML_MULTIPLY_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* MUTEX */ OP_TABLE_ENTRY (AML_MUTEX_OP, 0, 0, 0), -/* NAME */ OP_TABLE_ENTRY (AML_NAME_OP, 0, 0, 0), -/* NAMESEG */ OP_TABLE_ENTRY (AML_INT_NAMEPATH_OP, 0, 0, 0), -/* NAMESTRING */ OP_TABLE_ENTRY (AML_INT_NAMEPATH_OP, 0, 0, 0), -/* NAND */ OP_TABLE_ENTRY (AML_BIT_NAND_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* NOOP */ OP_TABLE_ENTRY (AML_NOOP_OP, 0, 0, 0), -/* NOR */ OP_TABLE_ENTRY (AML_BIT_NOR_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* NOT */ OP_TABLE_ENTRY (AML_BIT_NOT_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* NOTIFY */ OP_TABLE_ENTRY (AML_NOTIFY_OP, 0, 0, 0), -/* OBJECTTYPE */ OP_TABLE_ENTRY (AML_TYPE_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* OBJECTTYPE_BFF */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_BUFFER_FIELD, 0, 0), -/* OBJECTTYPE_BUF */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_BUFFER, 0, 0), -/* OBJECTTYPE_DDB */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_DDB_HANDLE, 0, 0), -/* OBJECTTYPE_DEV */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_DEVICE, 0, 0), -/* OBJECTTYPE_EVT */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_EVENT, 0, 0), -/* OBJECTTYPE_FLD */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_FIELD_UNIT, 0, 0), -/* OBJECTTYPE_INT */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_INTEGER, 0, 0), -/* OBJECTTYPE_MTH */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_METHOD, 0, 0), -/* OBJECTTYPE_MTX */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_MUTEX, 0, 0), -/* OBJECTTYPE_OPR */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_REGION, 0, 0), -/* OBJECTTYPE_PKG */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_PACKAGE, 0, 0), -/* OBJECTTYPE_POW */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_POWER, 0, 0), -/* OBJECTTYPE_PRO */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_PROCESSOR, 0, 0), -/* OBJECTTYPE_STR */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_STRING, 0, 0), -/* OBJECTTYPE_THZ */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_THERMAL, 0, 0), -/* OBJECTTYPE_UNK */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_ANY, 0, 0), -/* OFFSET */ OP_TABLE_ENTRY (AML_INT_RESERVEDFIELD_OP, 0, 0, 0), -/* ONE */ OP_TABLE_ENTRY (AML_ONE_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* ONES */ OP_TABLE_ENTRY (AML_ONES_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* OPERATIONREGION */ OP_TABLE_ENTRY (AML_REGION_OP, 0, 0, 0), -/* OR */ OP_TABLE_ENTRY (AML_BIT_OR_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* PACKAGE */ OP_TABLE_ENTRY (AML_PACKAGE_OP, 0, NODE_AML_PACKAGE, ACPI_BTYPE_PACKAGE), -/* PACKAGEP_LENGTH */ OP_TABLE_ENTRY (AML_PACKAGE_LENGTH, 0, NODE_AML_PACKAGE, 0), -/* POWERRESOURCE */ OP_TABLE_ENTRY (AML_POWER_RES_OP, 0, NODE_AML_PACKAGE, 0), -/* PROCESSOR */ OP_TABLE_ENTRY (AML_PROCESSOR_OP, 0, NODE_AML_PACKAGE, 0), -/* QWORDCONST */ OP_TABLE_ENTRY (AML_RAW_DATA_QWORD, 0, 0, ACPI_BTYPE_INTEGER), -/* QWORDIO */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* QWORDMEMORY */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* QWORDSPACE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* RANGE_TYPE_ENTIRE */ OP_TABLE_ENTRY (AML_BYTE_OP, 3, 0, 0), -/* RANGE_TYPE_ISAONLY */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0), -/* RANGE_TYPE_NONISAONLY */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), -/* RAW_DATA */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* READWRITETYPE_BOTH */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), -/* READWRITETYPE_READONLY */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* REFOF */ OP_TABLE_ENTRY (AML_REF_OF_OP, 0, 0, ACPI_BTYPE_REFERENCE), -/* REGIONSPACE_CMOS */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, REGION_CMOS, 0, 0), -/* REGIONSPACE_EC */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, REGION_EC, 0, 0), -/* REGIONSPACE_IO */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, REGION_IO, 0, 0), -/* REGIONSPACE_MEM */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, REGION_MEMORY, 0, 0), -/* REGIONSPACE_PCI */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, REGION_PCI_CONFIG, 0, 0), -/* REGIONSPACE_PCIBAR */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, REGION_PCI_BAR, 0, 0), -/* REGIONSPACE_SMBUS */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, REGION_SMBUS, 0, 0), -/* REGISTER */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* RELEASE */ OP_TABLE_ENTRY (AML_RELEASE_OP, 0, 0, 0), -/* RESERVED_BYTES */ OP_TABLE_ENTRY (AML_INT_RESERVEDFIELD_OP, 0, 0, 0), -/* RESET */ OP_TABLE_ENTRY (AML_RESET_OP, 0, 0, 0), -/* RESOURCETEMPLATE */ OP_TABLE_ENTRY (AML_BUFFER_OP, 0, 0, ACPI_BTYPE_BUFFER), -/* RESOURCETYPE_CONSUMER */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), -/* RESOURCETYPE_PRODUCER */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* RETURN */ OP_TABLE_ENTRY (AML_RETURN_OP, 0, 0, 0), -/* REVISION */ OP_TABLE_ENTRY (AML_REVISION_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* SCOPE */ OP_TABLE_ENTRY (AML_SCOPE_OP, 0, NODE_AML_PACKAGE, 0), -/* SERIALIZERULE_NOTSERIAL */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* SERIALIZERULE_SERIAL */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), -/* SHARETYPE_EXCLUSIVE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* SHARETYPE_SHARED */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), -/* SHIFTLEFT */ OP_TABLE_ENTRY (AML_SHIFT_LEFT_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* SHIFTRIGHT */ OP_TABLE_ENTRY (AML_SHIFT_RIGHT_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* SIGNAL */ OP_TABLE_ENTRY (AML_SIGNAL_OP, 0, 0, 0), -/* SIZEOF */ OP_TABLE_ENTRY (AML_SIZE_OF_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* SLEEP */ OP_TABLE_ENTRY (AML_SLEEP_OP, 0, 0, 0), -/* STALL */ OP_TABLE_ENTRY (AML_STALL_OP, 0, 0, 0), -/* STARTDEPENDENTFN */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* STARTDEPENDENTFN_NOPRI */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* STORE */ OP_TABLE_ENTRY (AML_STORE_OP, 0, 0, ACPI_BTYPE_DATA_REFERENCE), -/* STRING_LITERAL */ OP_TABLE_ENTRY (AML_STRING_OP, 0, 0, ACPI_BTYPE_STRING), -/* SUBTRACT */ OP_TABLE_ENTRY (AML_SUBTRACT_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* SWITCH */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), -/* THERMALZONE */ OP_TABLE_ENTRY (AML_THERMAL_ZONE_OP, 0, NODE_AML_PACKAGE, 0), -/* TIMER */ OP_TABLE_ENTRY (AML_TIMER_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* TOBCD */ OP_TABLE_ENTRY (AML_TO_BCD_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* TOBUFFER */ OP_TABLE_ENTRY (AML_TO_BUFFER_OP, 0, 0, ACPI_BTYPE_BUFFER), -/* TODECIMALSTRING */ OP_TABLE_ENTRY (AML_TO_DECSTRING_OP, 0, 0, ACPI_BTYPE_STRING), -/* TOHEXSTRING */ OP_TABLE_ENTRY (AML_TO_HEXSTRING_OP, 0, 0, ACPI_BTYPE_STRING), -/* TOINTEGER */ OP_TABLE_ENTRY (AML_TO_INTEGER_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* TOSTRING */ OP_TABLE_ENTRY (AML_TO_STRING_OP, 0, 0, ACPI_BTYPE_STRING), -/* TOUUID */ OP_TABLE_ENTRY (AML_DWORD_OP, 0, NODE_AML_PACKAGE, ACPI_BTYPE_INTEGER), -/* TRANSLATIONTYPE_DENSE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* TRANSLATIONTYPE_SPARSE */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), -/* TYPE_STATIC */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* TYPE_TRANSLATION */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), -/* UNICODE */ OP_TABLE_ENTRY (AML_BUFFER_OP, 0, NODE_AML_PACKAGE, 0), -/* UNLOAD */ OP_TABLE_ENTRY (AML_UNLOAD_OP, 0, 0, 0), -/* UPDATERULE_ONES */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_UPDATE_WRITE_AS_ONES, 0, 0), -/* UPDATERULE_PRESERVE */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_UPDATE_PRESERVE, 0, 0), -/* UPDATERULE_ZEROS */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_UPDATE_WRITE_AS_ZEROS,0, 0), -/* VAR_PACKAGE */ OP_TABLE_ENTRY (AML_VAR_PACKAGE_OP, 0, NODE_AML_PACKAGE, ACPI_BTYPE_PACKAGE), -/* VENDORLONG */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* VENDORSHORT */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* WAIT */ OP_TABLE_ENTRY (AML_WAIT_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* WHILE */ OP_TABLE_ENTRY (AML_WHILE_OP, 0, NODE_AML_PACKAGE, 0), -/* WORDBUSNUMBER */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* WORDCONST */ OP_TABLE_ENTRY (AML_RAW_DATA_WORD, 0, 0, ACPI_BTYPE_INTEGER), -/* WORDIO */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* WORDSPACE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* XFERTYPE_8 */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), -/* XFERTYPE_8_16 */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), -/* XFERTYPE_16 */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0), -/* XOR */ OP_TABLE_ENTRY (AML_BIT_XOR_OP, 0, 0, ACPI_BTYPE_INTEGER), -/* ZERO */ OP_TABLE_ENTRY (AML_ZERO_OP, 0, 0, ACPI_BTYPE_INTEGER), - -/*! [End] no source code translation !*/ - -}; - - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/aslopcodes.c b/sys/contrib/dev/acpica-unix-20061109/compiler/aslopcodes.c deleted file mode 100644 index 28ea17aa93..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/aslopcodes.c +++ /dev/null @@ -1,812 +0,0 @@ - -/****************************************************************************** - * - * Module Name: aslopcode - AML opcode generation - * $Revision: 1.73 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "aslcompiler.h" -#include "aslcompiler.y.h" -#include "amlcode.h" - -#define _COMPONENT ACPI_COMPILER - ACPI_MODULE_NAME ("aslopcodes") - - -/* UUID support */ - -static UINT8 OpcMapToUUID[16] = -{ - 6,4,2,0,11,9,16,14,19,21,24,26,28,30,32,34 -}; - -/* Local prototypes */ - -static void -OpcDoAccessAs ( - ACPI_PARSE_OBJECT *Op); - -static void -OpcDoUnicode ( - ACPI_PARSE_OBJECT *Op); - -static void -OpcDoEisaId ( - ACPI_PARSE_OBJECT *Op); - -static void -OpcDoUuId ( - ACPI_PARSE_OBJECT *Op); - - -/******************************************************************************* - * - * FUNCTION: OpcAmlOpcodeUpdateWalk - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Opcode update walk, ascending callback - * - ******************************************************************************/ - -ACPI_STATUS -OpcAmlOpcodeUpdateWalk ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - - /* - * Handle the Package() case where the actual opcode cannot be determined - * until the PackageLength operand has been folded and minimized. - * (PackageOp versus VarPackageOp) - * - * This is (as of ACPI 3.0) the only case where the AML opcode can change - * based upon the value of a parameter. - * - * The parser always inserts a VarPackage opcode, which can possibly be - * optimized to a Package opcode. - */ - if (Op->Asl.ParseOpcode == PARSEOP_VAR_PACKAGE) - { - OpnDoPackage (Op); - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: OpcAmlOpcodeWalk - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Parse tree walk to generate both the AML opcodes and the AML - * operands. - * - ******************************************************************************/ - -ACPI_STATUS -OpcAmlOpcodeWalk ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - - TotalParseNodes++; - - OpcGenerateAmlOpcode (Op); - OpnGenerateAmlOperands (Op); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: OpcGetIntegerWidth - * - * PARAMETERS: Op - DEFINITION BLOCK op - * - * RETURN: none - * - * DESCRIPTION: Extract integer width from the table revision - * - ******************************************************************************/ - -void -OpcGetIntegerWidth ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Child; - - - if (!Op) - { - return; - } - - if (Gbl_RevisionOverride) - { - AcpiUtSetIntegerWidth (Gbl_RevisionOverride); - } - else - { - Child = Op->Asl.Child; - Child = Child->Asl.Next; - Child = Child->Asl.Next; - - /* Use the revision to set the integer width */ - - AcpiUtSetIntegerWidth ((UINT8) Child->Asl.Value.Integer); - } -} - - -/******************************************************************************* - * - * FUNCTION: OpcSetOptimalIntegerSize - * - * PARAMETERS: Op - A parse tree node - * - * RETURN: Integer width, in bytes. Also sets the node AML opcode to the - * optimal integer AML prefix opcode. - * - * DESCRIPTION: Determine the optimal AML encoding of an integer. All leading - * zeros can be truncated to squeeze the integer into the - * minimal number of AML bytes. - * - ******************************************************************************/ - -UINT32 -OpcSetOptimalIntegerSize ( - ACPI_PARSE_OBJECT *Op) -{ - -#if 0 - /* - * TBD: - we don't want to optimize integers in the block header, but the - * code below does not work correctly. - */ - if (Op->Asl.Parent && - Op->Asl.Parent->Asl.Parent && - (Op->Asl.Parent->Asl.Parent->Asl.ParseOpcode == PARSEOP_DEFINITIONBLOCK)) - { - return 0; - } -#endif - - /* - * Check for the special AML integers first - Zero, One, Ones. - * These are single-byte opcodes that are the smallest possible - * representation of an integer. - * - * This optimization is optional. - */ - if (Gbl_IntegerOptimizationFlag) - { - switch (Op->Asl.Value.Integer) - { - case 0: - - Op->Asl.AmlOpcode = AML_ZERO_OP; - AslError (ASL_OPTIMIZATION, ASL_MSG_INTEGER_OPTIMIZATION, - Op, "Zero"); - return 1; - - case 1: - - Op->Asl.AmlOpcode = AML_ONE_OP; - AslError (ASL_OPTIMIZATION, ASL_MSG_INTEGER_OPTIMIZATION, - Op, "One"); - return 1; - - case ACPI_UINT32_MAX: - - /* Check for table integer width (32 or 64) */ - - if (AcpiGbl_IntegerByteWidth == 4) - { - Op->Asl.AmlOpcode = AML_ONES_OP; - AslError (ASL_OPTIMIZATION, ASL_MSG_INTEGER_OPTIMIZATION, - Op, "Ones"); - return 1; - } - break; - - case ACPI_INTEGER_MAX: - - /* Check for table integer width (32 or 64) */ - - if (AcpiGbl_IntegerByteWidth == 8) - { - Op->Asl.AmlOpcode = AML_ONES_OP; - AslError (ASL_OPTIMIZATION, ASL_MSG_INTEGER_OPTIMIZATION, - Op, "Ones"); - return 1; - } - break; - - default: - break; - } - } - - /* Find the best fit using the various AML integer prefixes */ - - if (Op->Asl.Value.Integer <= ACPI_UINT8_MAX) - { - Op->Asl.AmlOpcode = AML_BYTE_OP; - return 1; - } - if (Op->Asl.Value.Integer <= ACPI_UINT16_MAX) - { - Op->Asl.AmlOpcode = AML_WORD_OP; - return 2; - } - if (Op->Asl.Value.Integer <= ACPI_UINT32_MAX) - { - Op->Asl.AmlOpcode = AML_DWORD_OP; - return 4; - } - else - { - if (AcpiGbl_IntegerByteWidth == 4) - { - AslError (ASL_WARNING, ASL_MSG_INTEGER_LENGTH, - Op, NULL); - - if (!Gbl_IgnoreErrors) - { - /* Truncate the integer to 32-bit */ - Op->Asl.AmlOpcode = AML_DWORD_OP; - return 4; - } - } - - Op->Asl.AmlOpcode = AML_QWORD_OP; - return 8; - } -} - - -/******************************************************************************* - * - * FUNCTION: OpcDoAccessAs - * - * PARAMETERS: Op - Parse node - * - * RETURN: None - * - * DESCRIPTION: Implement the ACCESS_AS ASL keyword. - * - ******************************************************************************/ - -static void -OpcDoAccessAs ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Next; - - - Op->Asl.AmlOpcodeLength = 1; - Next = Op->Asl.Child; - - /* First child is the access type */ - - Next->Asl.AmlOpcode = AML_RAW_DATA_BYTE; - Next->Asl.ParseOpcode = PARSEOP_RAW_DATA; - - /* Second child is the optional access attribute */ - - Next = Next->Asl.Next; - if (Next->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) - { - Next->Asl.Value.Integer = 0; - } - Next->Asl.AmlOpcode = AML_RAW_DATA_BYTE; - Next->Asl.ParseOpcode = PARSEOP_RAW_DATA; -} - - -/******************************************************************************* - * - * FUNCTION: OpcDoUnicode - * - * PARAMETERS: Op - Parse node - * - * RETURN: None - * - * DESCRIPTION: Implement the UNICODE ASL "macro". Convert the input string - * to a unicode buffer. There is no Unicode AML opcode. - * - * Note: The Unicode string is 16 bits per character, no leading signature, - * with a 16-bit terminating NULL. - * - ******************************************************************************/ - -static void -OpcDoUnicode ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *InitializerOp; - UINT32 Length; - UINT32 Count; - UINT32 i; - UINT8 *AsciiString; - UINT16 *UnicodeString; - ACPI_PARSE_OBJECT *BufferLengthOp; - - - /* Change op into a buffer object */ - - Op->Asl.CompileFlags &= ~NODE_COMPILE_TIME_CONST; - Op->Asl.ParseOpcode = PARSEOP_BUFFER; - UtSetParseOpName (Op); - - /* Buffer Length is first, followed by the string */ - - BufferLengthOp = Op->Asl.Child; - InitializerOp = BufferLengthOp->Asl.Next; - - AsciiString = (UINT8 *) InitializerOp->Asl.Value.String; - - /* Create a new buffer for the Unicode string */ - - Count = strlen (InitializerOp->Asl.Value.String) + 1; - Length = Count * sizeof (UINT16); - UnicodeString = UtLocalCalloc (Length); - - /* Convert to Unicode string (including null terminator) */ - - for (i = 0; i < Count; i++) - { - UnicodeString[i] = (UINT16) AsciiString[i]; - } - - /* - * Just set the buffer size node to be the buffer length, regardless - * of whether it was previously an integer or a default_arg placeholder - */ - BufferLengthOp->Asl.ParseOpcode = PARSEOP_INTEGER; - BufferLengthOp->Asl.AmlOpcode = AML_DWORD_OP; - BufferLengthOp->Asl.Value.Integer = Length; - UtSetParseOpName (BufferLengthOp); - - (void) OpcSetOptimalIntegerSize (BufferLengthOp); - - /* The Unicode string is a raw data buffer */ - - InitializerOp->Asl.Value.Buffer = (UINT8 *) UnicodeString; - InitializerOp->Asl.AmlOpcode = AML_RAW_DATA_BUFFER; - InitializerOp->Asl.AmlLength = Length; - InitializerOp->Asl.ParseOpcode = PARSEOP_RAW_DATA; - InitializerOp->Asl.Child = NULL; - UtSetParseOpName (InitializerOp); -} - - -/******************************************************************************* - * - * FUNCTION: OpcDoEisaId - * - * PARAMETERS: Op - Parse node - * - * RETURN: None - * - * DESCRIPTION: Convert a string EISA ID to numeric representation. See the - * Pnp BIOS Specification for details. Here is an excerpt: - * - * A seven character ASCII representation of the product - * identifier compressed into a 32-bit identifier. The seven - * character ID consists of a three character manufacturer code, - * a three character hexadecimal product identifier, and a one - * character hexadecimal revision number. The manufacturer code - * is a 3 uppercase character code that is compressed into 3 5-bit - * values as follows: - * 1) Find hex ASCII value for each letter - * 2) Subtract 40h from each ASCII value - * 3) Retain 5 least signficant bits for each letter by - * discarding upper 3 bits because they are always 0. - * 4) Compressed code = concatenate 0 and the 3 5-bit values - * - * The format of the compressed product identifier is as follows: - * Byte 0: Bit 7 - Reserved (0) - * Bits 6-2: - 1st character of compressed mfg code - * Bits 1-0 - Upper 2 bits of 2nd character of mfg code - * Byte 1: Bits 7-5 - Lower 3 bits of 2nd character of mfg code - * Bits 4-0 - 3rd character of mfg code - * Byte 2: Bits 7-4 - 1st hex digit of product number - * Bits 3-0 - 2nd hex digit of product number - * Byte 3: Bits 7-4 - 3st hex digit of product number - * Bits 3-0 - Hex digit of the revision number - * - ******************************************************************************/ - -static void -OpcDoEisaId ( - ACPI_PARSE_OBJECT *Op) -{ - UINT32 EisaId = 0; - UINT32 BigEndianId; - char *InString; - ACPI_STATUS Status = AE_OK; - ACPI_NATIVE_UINT i; - - - InString = (char *) Op->Asl.Value.String; - - /* - * The EISAID string must be exactly 7 characters and of the form - * "UUUXXXX" -- 3 uppercase letters and 4 hex digits (e.g., "PNP0001") - */ - if (ACPI_STRLEN (InString) != 7) - { - Status = AE_BAD_PARAMETER; - } - else - { - /* Check all 7 characters for correct format */ - - for (i = 0; i < 7; i++) - { - /* First 3 characters must be uppercase letters */ - - if (i < 3) - { - if (!isupper (InString[i])) - { - Status = AE_BAD_PARAMETER; - } - } - - /* Last 4 characters must be hex digits */ - - else if (!isxdigit (InString[i])) - { - Status = AE_BAD_PARAMETER; - } - } - } - - if (ACPI_FAILURE (Status)) - { - AslError (ASL_ERROR, ASL_MSG_INVALID_EISAID, Op, Op->Asl.Value.String); - } - else - { - /* Create ID big-endian first (bits are contiguous) */ - - BigEndianId = - (UINT32) (InString[0] - 0x40) << 26 | - (UINT32) (InString[1] - 0x40) << 21 | - (UINT32) (InString[2] - 0x40) << 16 | - - (UtHexCharToValue (InString[3])) << 12 | - (UtHexCharToValue (InString[4])) << 8 | - (UtHexCharToValue (InString[5])) << 4 | - UtHexCharToValue (InString[6]); - - /* Swap to little-endian to get final ID (see function header) */ - - EisaId = AcpiUtDwordByteSwap (BigEndianId); - } - - /* - * Morph the Op into an integer, regardless of whether there - * was an error in the EISAID string - */ - Op->Asl.Value.Integer = EisaId; - - Op->Asl.CompileFlags &= ~NODE_COMPILE_TIME_CONST; - Op->Asl.ParseOpcode = PARSEOP_INTEGER; - (void) OpcSetOptimalIntegerSize (Op); - - /* Op is now an integer */ - - UtSetParseOpName (Op); -} - - -/******************************************************************************* - * - * FUNCTION: OpcDoUiId - * - * PARAMETERS: Op - Parse node - * - * RETURN: None - * - * DESCRIPTION: Convert UUID string to 16-byte buffer - * - ******************************************************************************/ - -static void -OpcDoUuId ( - ACPI_PARSE_OBJECT *Op) -{ - char *InString; - char *Buffer; - ACPI_STATUS Status = AE_OK; - ACPI_NATIVE_UINT i; - ACPI_PARSE_OBJECT *NewOp; - - - InString = (char *) Op->Asl.Value.String; - - if (ACPI_STRLEN (InString) != 36) - { - Status = AE_BAD_PARAMETER; - } - else - { - /* Check all 36 characters for correct format */ - - for (i = 0; i < 36; i++) - { - if ((i == 8) || (i == 13) || (i == 18) || (i == 23)) - { - if (InString[i] != '-') - { - Status = AE_BAD_PARAMETER; - } - } - else - { - if (!isxdigit (InString[i])) - { - Status = AE_BAD_PARAMETER; - } - } - } - } - - Buffer = UtLocalCalloc (16); - - if (ACPI_FAILURE (Status)) - { - AslError (ASL_ERROR, ASL_MSG_INVALID_UUID, Op, Op->Asl.Value.String); - } - else for (i = 0; i < 16; i++) - { - Buffer[i] = (char) (UtHexCharToValue (InString[OpcMapToUUID[i]]) << 4); - Buffer[i] |= (char) UtHexCharToValue (InString[OpcMapToUUID[i] + 1]); - } - - /* Change Op to a Buffer */ - - Op->Asl.ParseOpcode = PARSEOP_BUFFER; - Op->Common.AmlOpcode = AML_BUFFER_OP; - - /* Disable further optimization */ - - Op->Asl.CompileFlags &= ~NODE_COMPILE_TIME_CONST; - UtSetParseOpName (Op); - - /* Child node is the buffer length */ - - NewOp = TrAllocateNode (PARSEOP_INTEGER); - - NewOp->Asl.AmlOpcode = AML_BYTE_OP; - NewOp->Asl.Value.Integer = 16; - NewOp->Asl.Parent = Op; - - Op->Asl.Child = NewOp; - Op = NewOp; - - /* Peer to the child is the raw buffer data */ - - NewOp = TrAllocateNode (PARSEOP_RAW_DATA); - NewOp->Asl.AmlOpcode = AML_RAW_DATA_BUFFER; - NewOp->Asl.AmlLength = 16; - NewOp->Asl.Value.String = (char *) Buffer; - NewOp->Asl.Parent = Op->Asl.Parent; - - Op->Asl.Next = NewOp; -} - - -/******************************************************************************* - * - * FUNCTION: OpcGenerateAmlOpcode - * - * PARAMETERS: Op - Parse node - * - * RETURN: None - * - * DESCRIPTION: Generate the AML opcode associated with the node and its - * parse (lex/flex) keyword opcode. Essentially implements - * a mapping between the parse opcodes and the actual AML opcodes. - * - ******************************************************************************/ - -void -OpcGenerateAmlOpcode ( - ACPI_PARSE_OBJECT *Op) -{ - - UINT16 Index; - - - Index = (UINT16) (Op->Asl.ParseOpcode - ASL_PARSE_OPCODE_BASE); - - Op->Asl.AmlOpcode = AslKeywordMapping[Index].AmlOpcode; - Op->Asl.AcpiBtype = AslKeywordMapping[Index].AcpiBtype; - Op->Asl.CompileFlags |= AslKeywordMapping[Index].Flags; - - if (!Op->Asl.Value.Integer) - { - Op->Asl.Value.Integer = AslKeywordMapping[Index].Value; - } - - /* Special handling for some opcodes */ - - switch (Op->Asl.ParseOpcode) - { - case PARSEOP_INTEGER: - /* - * Set the opcode based on the size of the integer - */ - (void) OpcSetOptimalIntegerSize (Op); - break; - - case PARSEOP_OFFSET: - - Op->Asl.AmlOpcodeLength = 1; - break; - - case PARSEOP_ACCESSAS: - - OpcDoAccessAs (Op); - break; - - case PARSEOP_EISAID: - - OpcDoEisaId (Op); - break; - - case PARSEOP_TOUUID: - - OpcDoUuId (Op); - break; - - case PARSEOP_UNICODE: - - OpcDoUnicode (Op); - break; - - case PARSEOP_INCLUDE: - - Op->Asl.Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; - Gbl_HasIncludeFiles = TRUE; - break; - - case PARSEOP_EXTERNAL: - - Op->Asl.Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; - Op->Asl.Child->Asl.Next->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; - break; - - default: - /* Nothing to do for other opcodes */ - break; - } - - return; -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/asloperands.c b/sys/contrib/dev/acpica-unix-20061109/compiler/asloperands.c deleted file mode 100644 index b97d2dde8e..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/asloperands.c +++ /dev/null @@ -1,1230 +0,0 @@ - -/****************************************************************************** - * - * Module Name: asloperands - AML operand processing - * $Revision: 1.60 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "aslcompiler.h" -#include "aslcompiler.y.h" -#include "amlcode.h" - -#define _COMPONENT ACPI_COMPILER - ACPI_MODULE_NAME ("asloperands") - -/* Local prototypes */ - -static void -OpnDoField ( - ACPI_PARSE_OBJECT *Op); - -static void -OpnDoBankField ( - ACPI_PARSE_OBJECT *Op); - -static void -OpnDoBuffer ( - ACPI_PARSE_OBJECT *Op); - -static void -OpnDoDefinitionBlock ( - ACPI_PARSE_OBJECT *Op); - -static void -OpnDoFieldCommon ( - ACPI_PARSE_OBJECT *FieldOp, - ACPI_PARSE_OBJECT *Op); - -static void -OpnDoIndexField ( - ACPI_PARSE_OBJECT *Op); - -static void -OpnDoLoadTable ( - ACPI_PARSE_OBJECT *Op); - -static void -OpnDoMethod ( - ACPI_PARSE_OBJECT *Op); - -static void -OpnDoMutex ( - ACPI_PARSE_OBJECT *Op); - -static void -OpnDoRegion ( - ACPI_PARSE_OBJECT *Op); - -static void -OpnAttachNameToNode ( - ACPI_PARSE_OBJECT *Op); - - -/******************************************************************************* - * - * FUNCTION: OpnDoMutex - * - * PARAMETERS: Op - The parent parse node - * - * RETURN: None - * - * DESCRIPTION: Construct the operands for the MUTEX ASL keyword. - * - ******************************************************************************/ - -static void -OpnDoMutex ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Next; - - - Next = Op->Asl.Child; - Next = Next->Asl.Next; - - if (Next->Asl.Value.Integer > 15) - { - AslError (ASL_ERROR, ASL_MSG_SYNC_LEVEL, Next, NULL); - } - return; -} - - -/******************************************************************************* - * - * FUNCTION: OpnDoMethod - * - * PARAMETERS: Op - The parent parse node - * - * RETURN: None - * - * DESCRIPTION: Construct the operands for the METHOD ASL keyword. - * - ******************************************************************************/ - -static void -OpnDoMethod ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Next; - - /* Optional arguments for this opcode with defaults */ - - UINT8 NumArgs = 0; - UINT8 Serialized = 0; - UINT8 Concurrency = 0; - UINT8 MethodFlags; - - - /* Opcode and package length first */ - /* Method name */ - - Next = Op->Asl.Child; - - /* Num args */ - - Next = Next->Asl.Next; - if (Next->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) - { - NumArgs = (UINT8) Next->Asl.Value.Integer; - Next->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; - } - - /* Serialized Flag */ - - Next = Next->Asl.Next; - if (Next->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) - { - Serialized = (UINT8) Next->Asl.Value.Integer; - Next->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; - } - - /* Concurrency value (valid values are 0-15) */ - - Next = Next->Asl.Next; - if (Next->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) - { - if (Next->Asl.Value.Integer > 15) - { - AslError (ASL_ERROR, ASL_MSG_SYNC_LEVEL, Next, NULL); - } - Concurrency = (UINT8) Next->Asl.Value.Integer; - } - - /* Put the bits in their proper places */ - - MethodFlags = (UINT8) ((NumArgs & 0x7) | - ((Serialized & 0x1) << 3) | - ((Concurrency & 0xF) << 4)); - - /* Use the last node for the combined flags byte */ - - Next->Asl.Value.Integer = MethodFlags; - Next->Asl.AmlOpcode = AML_RAW_DATA_BYTE; - Next->Asl.AmlLength = 1; - Next->Asl.ParseOpcode = PARSEOP_RAW_DATA; - - /* Save the arg count in the first node */ - - Op->Asl.Extra = NumArgs; -} - - -/******************************************************************************* - * - * FUNCTION: OpnDoFieldCommon - * - * PARAMETERS: FieldOp - Node for an ASL field - * Op - The parent parse node - * - * RETURN: None - * - * DESCRIPTION: Construct the AML operands for the various field keywords, - * FIELD, BANKFIELD, INDEXFIELD - * - ******************************************************************************/ - -static void -OpnDoFieldCommon ( - ACPI_PARSE_OBJECT *FieldOp, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Next; - ACPI_PARSE_OBJECT *PkgLengthNode; - UINT32 CurrentBitOffset; - UINT32 NewBitOffset; - UINT8 AccessType; - UINT8 LockRule; - UINT8 UpdateRule; - UINT8 FieldFlags; - UINT32 MinimumLength; - - - /* AccessType -- not optional, so no need to check for DEFAULT_ARG */ - - AccessType = (UINT8) Op->Asl.Value.Integer; - Op->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; - - /* Set the access type in the parent (field) node for use later */ - - FieldOp->Asl.Value.Integer = AccessType; - - /* LockRule -- not optional, so no need to check for DEFAULT_ARG */ - - Next = Op->Asl.Next; - LockRule = (UINT8) Next->Asl.Value.Integer; - Next->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; - - /* UpdateRule -- not optional, so no need to check for DEFAULT_ARG */ - - Next = Next->Asl.Next; - UpdateRule = (UINT8) Next->Asl.Value.Integer; - - /* - * Generate the flags byte. The various fields are already - * in the right bit position via translation from the - * keywords by the parser. - */ - FieldFlags = (UINT8) (AccessType | LockRule | UpdateRule); - - /* Use the previous node to be the FieldFlags node */ - - /* Set the node to RAW_DATA */ - - Next->Asl.Value.Integer = FieldFlags; - Next->Asl.AmlOpcode = AML_RAW_DATA_BYTE; - Next->Asl.AmlLength = 1; - Next->Asl.ParseOpcode = PARSEOP_RAW_DATA; - - /* Process the FieldUnitList */ - - Next = Next->Asl.Next; - CurrentBitOffset = 0; - - while (Next) - { - /* Save the offset of this field unit */ - - Next->Asl.ExtraValue = CurrentBitOffset; - - switch (Next->Asl.ParseOpcode) - { - case PARSEOP_ACCESSAS: - - PkgLengthNode = Next->Asl.Child; - AccessType = (UINT8) PkgLengthNode->Asl.Value.Integer; - - /* Nothing additional to do */ - break; - - - case PARSEOP_OFFSET: - - /* New offset into the field */ - - PkgLengthNode = Next->Asl.Child; - NewBitOffset = ((UINT32) PkgLengthNode->Asl.Value.Integer) * 8; - - /* - * Examine the specified offset in relation to the - * current offset counter. - */ - if (NewBitOffset < CurrentBitOffset) - { - /* - * Not allowed to specify a backwards offset! - * Issue error and ignore this node. - */ - AslError (ASL_ERROR, ASL_MSG_BACKWARDS_OFFSET, PkgLengthNode, - NULL); - Next->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; - PkgLengthNode->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; - } - else if (NewBitOffset == CurrentBitOffset) - { - /* - * Offset is redundant; we don't need to output an - * offset opcode. Just set these nodes to default - */ - Next->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; - PkgLengthNode->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; - } - else - { - /* - * Valid new offset - set the value to be inserted into the AML - * and update the offset counter. - */ - PkgLengthNode->Asl.Value.Integer = - NewBitOffset - CurrentBitOffset; - CurrentBitOffset = NewBitOffset; - } - break; - - - case PARSEOP_NAMESEG: - case PARSEOP_RESERVED_BYTES: - - /* Named or reserved field entry */ - - PkgLengthNode = Next->Asl.Child; - NewBitOffset = (UINT32) PkgLengthNode->Asl.Value.Integer; - CurrentBitOffset += NewBitOffset; - - /* Save the current AccessAs value for error checking later */ - - switch (AccessType) - { - case AML_FIELD_ACCESS_ANY: - case AML_FIELD_ACCESS_BYTE: - case AML_FIELD_ACCESS_BUFFER: - default: - MinimumLength = 8; - break; - - case AML_FIELD_ACCESS_WORD: - MinimumLength = 16; - break; - - case AML_FIELD_ACCESS_DWORD: - MinimumLength = 32; - break; - - case AML_FIELD_ACCESS_QWORD: - MinimumLength = 64; - break; - } - - PkgLengthNode->Asl.ExtraValue = MinimumLength; - break; - - default: - /* All supported field opcodes must appear above */ - break; - } - - /* Move on to next entry in the field list */ - - Next = Next->Asl.Next; - } -} - - -/******************************************************************************* - * - * FUNCTION: OpnDoField - * - * PARAMETERS: Op - The parent parse node - * - * RETURN: None - * - * DESCRIPTION: Construct the AML operands for the FIELD ASL keyword - * - ******************************************************************************/ - -static void -OpnDoField ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Next; - - - /* Opcode is parent node */ - /* First child is field name */ - - Next = Op->Asl.Child; - - /* Second child is the AccessType */ - - OpnDoFieldCommon (Op, Next->Asl.Next); -} - - -/******************************************************************************* - * - * FUNCTION: OpnDoIndexField - * - * PARAMETERS: Op - The parent parse node - * - * RETURN: None - * - * DESCRIPTION: Construct the AML operands for the INDEXFIELD ASL keyword - * - ******************************************************************************/ - -static void -OpnDoIndexField ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Next; - - - /* Opcode is parent node */ - /* First child is the index name */ - - Next = Op->Asl.Child; - - /* Second child is the data name */ - - Next = Next->Asl.Next; - - /* Third child is the AccessType */ - - OpnDoFieldCommon (Op, Next->Asl.Next); -} - - -/******************************************************************************* - * - * FUNCTION: OpnDoBankField - * - * PARAMETERS: Op - The parent parse node - * - * RETURN: None - * - * DESCRIPTION: Construct the AML operands for the BANKFIELD ASL keyword - * - ******************************************************************************/ - -static void -OpnDoBankField ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Next; - - - /* Opcode is parent node */ - /* First child is the region name */ - - Next = Op->Asl.Child; - - /* Second child is the bank name */ - - Next = Next->Asl.Next; - - /* Third child is the bank value */ - - Next = Next->Asl.Next; - - /* Fourth child is the AccessType */ - - OpnDoFieldCommon (Op, Next->Asl.Next); -} - - -/******************************************************************************* - * - * FUNCTION: OpnDoRegion - * - * PARAMETERS: Op - The parent parse node - * - * RETURN: None - * - * DESCRIPTION: Tries to get the length of the region. Can only do this at - * compile time if the length is a constant. - * - ******************************************************************************/ - -static void -OpnDoRegion ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Next; - - - /* Opcode is parent node */ - /* First child is the region name */ - - Next = Op->Asl.Child; - - /* Second child is the space ID*/ - - Next = Next->Asl.Next; - - /* Third child is the region offset */ - - Next = Next->Asl.Next; - - /* Fourth child is the region length */ - - Next = Next->Asl.Next; - if (Next->Asl.ParseOpcode == PARSEOP_INTEGER) - { - Op->Asl.Value.Integer = Next->Asl.Value.Integer; - } - else - { - Op->Asl.Value.Integer = ACPI_INTEGER_MAX; - } -} - - -/******************************************************************************* - * - * FUNCTION: OpnDoBuffer - * - * PARAMETERS: Op - The parent parse node - * - * RETURN: None - * - * DESCRIPTION: Construct the AML operands for the BUFFER ASL keyword. We - * build a single raw byte buffer from the initialization nodes, - * each parse node contains a buffer byte. - * - ******************************************************************************/ - -static void -OpnDoBuffer ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *InitializerOp; - ACPI_PARSE_OBJECT *BufferLengthOp; - - /* Optional arguments for this opcode with defaults */ - - UINT32 BufferLength = 0; - - - /* Opcode and package length first */ - /* Buffer Length is next, followed by the initializer list */ - - BufferLengthOp = Op->Asl.Child; - InitializerOp = BufferLengthOp->Asl.Next; - - /* - * If the BufferLength is not an INTEGER or was not specified in the ASL - * (DEFAULT_ARG), it is a TermArg that is - * evaluated at run-time, and we are therefore finished. - */ - if ((BufferLengthOp->Asl.ParseOpcode != PARSEOP_INTEGER) && - (BufferLengthOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG)) - { - return; - } - - /* - * We want to count the number of items in the initializer list, because if - * it is larger than the buffer length, we will define the buffer size - * to be the size of the initializer list (as per the ACPI Specification) - */ - switch (InitializerOp->Asl.ParseOpcode) - { - case PARSEOP_INTEGER: - case PARSEOP_BYTECONST: - case PARSEOP_WORDCONST: - case PARSEOP_DWORDCONST: - - /* The peer list contains the byte list (if any...) */ - - while (InitializerOp) - { - /* For buffers, this is a list of raw bytes */ - - InitializerOp->Asl.AmlOpcode = AML_RAW_DATA_BYTE; - InitializerOp->Asl.AmlLength = 1; - InitializerOp->Asl.ParseOpcode = PARSEOP_RAW_DATA; - - BufferLength++; - InitializerOp = ASL_GET_PEER_NODE (InitializerOp); - } - break; - - - case PARSEOP_STRING_LITERAL: - - /* - * Only one initializer, the string. Buffer must be big enough to hold - * the string plus the null termination byte - */ - BufferLength = strlen (InitializerOp->Asl.Value.String) + 1; - - InitializerOp->Asl.AmlOpcode = AML_RAW_DATA_BUFFER; - InitializerOp->Asl.AmlLength = BufferLength; - InitializerOp->Asl.ParseOpcode = PARSEOP_RAW_DATA; - break; - - - case PARSEOP_RAW_DATA: - - /* Buffer nodes are already initialized (e.g. Unicode operator) */ - return; - - - case PARSEOP_DEFAULT_ARG: - break; - - - default: - AslError (ASL_ERROR, ASL_MSG_INVALID_OPERAND, InitializerOp, - "Unknown buffer initializer opcode"); - printf ("Unknown buffer initializer opcode [%s]\n", - UtGetOpName (InitializerOp->Asl.ParseOpcode)); - return; - } - - /* Check if initializer list is longer than the buffer length */ - - if (BufferLengthOp->Asl.Value.Integer > BufferLength) - { - BufferLength = (UINT32) BufferLengthOp->Asl.Value.Integer; - } - - if (!BufferLength) - { - /* No length AND no items -- issue notice */ - - AslError (ASL_REMARK, ASL_MSG_BUFFER_LENGTH, BufferLengthOp, NULL); - - /* But go ahead and put the buffer length of zero into the AML */ - } - - /* - * Just set the buffer size node to be the buffer length, regardless - * of whether it was previously an integer or a default_arg placeholder - */ - BufferLengthOp->Asl.ParseOpcode = PARSEOP_INTEGER; - BufferLengthOp->Asl.AmlOpcode = AML_DWORD_OP; - BufferLengthOp->Asl.Value.Integer = BufferLength; - - (void) OpcSetOptimalIntegerSize (BufferLengthOp); - - /* Remaining nodes are handled via the tree walk */ -} - - -/******************************************************************************* - * - * FUNCTION: OpnDoPackage - * - * PARAMETERS: Op - The parent parse node - * - * RETURN: None - * - * DESCRIPTION: Construct the AML operands for the PACKAGE ASL keyword. NOTE: - * can only be called after constants have been folded, to ensure - * that the PackageLength operand has been fully reduced. - * - ******************************************************************************/ - -void -OpnDoPackage ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *InitializerOp; - ACPI_PARSE_OBJECT *PackageLengthOp; - UINT32 PackageLength = 0; - - - /* Opcode and package length first, followed by the initializer list */ - - PackageLengthOp = Op->Asl.Child; - InitializerOp = PackageLengthOp->Asl.Next; - - /* Count the number of items in the initializer list */ - - if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) - { - /* The peer list contains the byte list (if any...) */ - - while (InitializerOp) - { - PackageLength++; - InitializerOp = InitializerOp->Asl.Next; - } - } - - /* If package length is a constant, compare to the initializer list */ - - if ((PackageLengthOp->Asl.ParseOpcode == PARSEOP_INTEGER) || - (PackageLengthOp->Asl.ParseOpcode == PARSEOP_QWORDCONST)) - { - if (PackageLengthOp->Asl.Value.Integer >= PackageLength) - { - /* Allow package to be longer than the initializer list */ - - PackageLength = (UINT32) PackageLengthOp->Asl.Value.Integer; - } - else - { - /* - * Initializer list is longer than the package length. This - * is an error as per the ACPI spec. - */ - AslError (ASL_ERROR, ASL_MSG_LIST_LENGTH, - PackageLengthOp->Asl.Next, NULL); - } - } - - if (PackageLengthOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) - { - /* - * This is the case if the PackageLength was left empty - Package() - * The package length becomes the length of the initializer list - */ - Op->Asl.Child->Asl.ParseOpcode = PARSEOP_INTEGER; - Op->Asl.Child->Asl.Value.Integer = PackageLength; - - /* Set the AML opcode */ - - (void) OpcSetOptimalIntegerSize (Op->Asl.Child); - } - - /* If not a variable-length package, check for a zero package length */ - - if ((PackageLengthOp->Asl.ParseOpcode == PARSEOP_INTEGER) || - (PackageLengthOp->Asl.ParseOpcode == PARSEOP_QWORDCONST) || - (PackageLengthOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG)) - { - if (!PackageLength) - { - /* No length AND no initializer list -- issue a remark */ - - AslError (ASL_REMARK, ASL_MSG_PACKAGE_LENGTH, - PackageLengthOp, NULL); - - /* But go ahead and put the buffer length of zero into the AML */ - } - } - - /* - * 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)) - { - Op->Asl.AmlOpcode = AML_PACKAGE_OP; - Op->Asl.ParseOpcode = PARSEOP_PACKAGE; - - /* - * Just set the package size node to be the package length, regardless - * of whether it was previously an integer or a default_arg placeholder - */ - PackageLengthOp->Asl.AmlOpcode = AML_RAW_DATA_BYTE; - PackageLengthOp->Asl.AmlLength = 1; - PackageLengthOp->Asl.ParseOpcode = PARSEOP_RAW_DATA; - PackageLengthOp->Asl.Value.Integer = PackageLength; - } - - /* Remaining nodes are handled via the tree walk */ -} - - -/******************************************************************************* - * - * FUNCTION: OpnDoLoadTable - * - * PARAMETERS: Op - The parent parse node - * - * RETURN: None - * - * DESCRIPTION: Construct the AML operands for the LOADTABLE ASL keyword. - * - ******************************************************************************/ - -static void -OpnDoLoadTable ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Next; - - - /* Opcode is parent node */ - /* First child is the table signature */ - - Next = Op->Asl.Child; - - /* Second child is the OEM ID*/ - - Next = Next->Asl.Next; - - /* Third child is the OEM table ID */ - - Next = Next->Asl.Next; - - /* Fourth child is the RootPath string */ - - Next = Next->Asl.Next; - if (Next->Asl.ParseOpcode == PARSEOP_ZERO) - { - Next->Asl.ParseOpcode = PARSEOP_STRING_LITERAL; - Next->Asl.Value.String = "\\"; - Next->Asl.AmlLength = 2; - OpcGenerateAmlOpcode (Next); - } - -#ifdef ASL_FUTURE_IMPLEMENTATION - - /* TBD: NOT IMPLEMENTED */ - /* Fifth child is the [optional] ParameterPathString */ - /* Sixth child is the [optional] ParameterData */ - - Next = Next->Asl.Next; - if (Next->Asl.ParseOpcode == DEFAULT_ARG) - { - Next->Asl.AmlLength = 1; - Next->Asl.ParseOpcode = ZERO; - OpcGenerateAmlOpcode (Next); - } - - - Next = Next->Asl.Next; - if (Next->Asl.ParseOpcode == DEFAULT_ARG) - { - Next->Asl.AmlLength = 1; - Next->Asl.ParseOpcode = ZERO; - OpcGenerateAmlOpcode (Next); - } -#endif -} - - -/******************************************************************************* - * - * FUNCTION: OpnDoDefinitionBlock - * - * PARAMETERS: Op - The parent parse node - * - * RETURN: None - * - * DESCRIPTION: Construct the AML operands for the DEFINITIONBLOCK ASL keyword - * - ******************************************************************************/ - -static void -OpnDoDefinitionBlock ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Child; - ACPI_SIZE Length; - ACPI_NATIVE_UINT i; - - - /* - * These nodes get stuffed into the table header. They are special - * cased when the table is written to the output file. - * - * Mark all of these nodes as non-usable so they won't get output - * as AML opcodes! - */ - - /* Get AML filename. Use it if non-null */ - - Child = Op->Asl.Child; - if (Child->Asl.Value.Buffer && - *Child->Asl.Value.Buffer && - (Gbl_UseDefaultAmlFilename)) - { - Gbl_OutputFilenamePrefix = (char *) Child->Asl.Value.Buffer; - } - Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; - - /* Signature */ - - Child = Child->Asl.Next; - Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; - if (Child->Asl.Value.String) - { - Gbl_TableSignature = Child->Asl.Value.String; - if (ACPI_STRLEN (Gbl_TableSignature) != 4) - { - AslError (ASL_ERROR, ASL_MSG_TABLE_SIGNATURE, Child, - "Length not exactly 4"); - } - - for (i = 0; i < 4; i++) - { - if (!isalnum (Gbl_TableSignature[i])) - { - AslError (ASL_ERROR, ASL_MSG_TABLE_SIGNATURE, Child, - "Contains non-alphanumeric characters"); - } - } - } - - /* Revision */ - - Child = Child->Asl.Next; - Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; - /* - * We used the revision to set the integer width earlier - */ - - /* OEMID */ - - Child = Child->Asl.Next; - Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; - - /* OEM TableID */ - - Child = Child->Asl.Next; - Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; - if (Child->Asl.Value.String) - { - Length = ACPI_STRLEN (Child->Asl.Value.String); - Gbl_TableId = AcpiOsAllocate (Length + 1); - ACPI_STRCPY (Gbl_TableId, Child->Asl.Value.String); - - for (i = 0; i < Length; i++) - { - if (Gbl_TableId[i] == ' ') - { - Gbl_TableId[i] = 0; - break; - } - } - } - - /* OEM Revision */ - - Child = Child->Asl.Next; - Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; -} - - -/******************************************************************************* - * - * FUNCTION: UtGetArg - * - * PARAMETERS: Op - Get an argument for this op - * Argn - Nth argument to get - * - * RETURN: The argument (as an Op object). NULL if argument does not exist - * - * DESCRIPTION: Get the specified op's argument (peer) - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -UtGetArg ( - ACPI_PARSE_OBJECT *Op, - UINT32 Argn) -{ - ACPI_PARSE_OBJECT *Arg = NULL; - - - /* Get the requested argument object */ - - Arg = Op->Asl.Child; - while (Arg && Argn) - { - Argn--; - Arg = Arg->Asl.Next; - } - - return (Arg); -} - - -/******************************************************************************* - * - * FUNCTION: OpnAttachNameToNode - * - * PARAMETERS: Op - The parent parse node - * - * RETURN: None - * - * DESCRIPTION: For the named ASL/AML operators, get the actual name from the - * argument list and attach it to the parent node so that we - * can get to it quickly later. - * - ******************************************************************************/ - -static void -OpnAttachNameToNode ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Child = NULL; - - - if (Op->Asl.ParseOpcode == PARSEOP_EXTERNAL) - { - Child = UtGetArg (Op, 0); - } - else switch (Op->Asl.AmlOpcode) - { - case AML_DATA_REGION_OP: - case AML_DEVICE_OP: - case AML_EVENT_OP: - case AML_METHOD_OP: - case AML_MUTEX_OP: - case AML_REGION_OP: - case AML_POWER_RES_OP: - case AML_PROCESSOR_OP: - case AML_THERMAL_ZONE_OP: - case AML_NAME_OP: - case AML_SCOPE_OP: - - Child = UtGetArg (Op, 0); - break; - - case AML_ALIAS_OP: - - Child = UtGetArg (Op, 1); - break; - - case AML_CREATE_BIT_FIELD_OP: - case AML_CREATE_BYTE_FIELD_OP: - case AML_CREATE_WORD_FIELD_OP: - case AML_CREATE_DWORD_FIELD_OP: - case AML_CREATE_QWORD_FIELD_OP: - - Child = UtGetArg (Op, 2); - break; - - case AML_CREATE_FIELD_OP: - - Child = UtGetArg (Op, 3); - break; - - case AML_BANK_FIELD_OP: - case AML_INDEX_FIELD_OP: - case AML_FIELD_OP: - - return; - - default: - return; - } - - if (Child) - { - UtAttachNamepathToOwner (Op, Child); - } -} - - -/******************************************************************************* - * - * FUNCTION: OpnGenerateAmlOperands - * - * PARAMETERS: Op - The parent parse node - * - * RETURN: None - * - * DESCRIPTION: Prepare nodes to be output as AML data and operands. The more - * complex AML opcodes require processing of the child nodes - * (arguments/operands). - * - ******************************************************************************/ - -void -OpnGenerateAmlOperands ( - ACPI_PARSE_OBJECT *Op) -{ - - - if (Op->Asl.AmlOpcode == AML_RAW_DATA_BYTE) - { - return; - } - - switch (Op->Asl.ParseOpcode) - { - case PARSEOP_DEFINITIONBLOCK: - OpnDoDefinitionBlock (Op); - break; - - case PARSEOP_METHOD: - OpnDoMethod (Op); - break; - - case PARSEOP_MUTEX: - OpnDoMutex (Op); - break; - - case PARSEOP_FIELD: - OpnDoField (Op); - break; - - case PARSEOP_INDEXFIELD: - OpnDoIndexField (Op); - break; - - case PARSEOP_BANKFIELD: - OpnDoBankField (Op); - break; - - case PARSEOP_BUFFER: - OpnDoBuffer (Op); - break; - - case PARSEOP_LOADTABLE: - OpnDoLoadTable (Op); - break; - - case PARSEOP_OPERATIONREGION: - OpnDoRegion (Op); - break; - - case PARSEOP_RESOURCETEMPLATE: - RsDoResourceTemplate (Op); - break; - - case PARSEOP_NAMESEG: - case PARSEOP_NAMESTRING: - case PARSEOP_METHODCALL: - case PARSEOP_STRING_LITERAL: - break; - - default: - break; - } - - /* TBD: move */ - - OpnAttachNameToNode (Op); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/aslopt.c b/sys/contrib/dev/acpica-unix-20061109/compiler/aslopt.c deleted file mode 100644 index 502f0245ab..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/aslopt.c +++ /dev/null @@ -1,869 +0,0 @@ -/****************************************************************************** - * - * Module Name: aslopt- Compiler optimizations - * $Revision: 1.25 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "aslcompiler.h" -#include "aslcompiler.y.h" - -#include "acparser.h" -#include "amlcode.h" -#include "acnamesp.h" - - -#define _COMPONENT ACPI_COMPILER - ACPI_MODULE_NAME ("aslopt") - - -static UINT32 OptTotal = 0; - -/* Local prototypes */ - -static ACPI_STATUS -OptSearchToRoot ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE *CurrentNode, - ACPI_NAMESPACE_NODE *TargetNode, - ACPI_BUFFER *TargetPath, - char **NewPath); - -static ACPI_STATUS -OptBuildShortestPath ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE *CurrentNode, - ACPI_NAMESPACE_NODE *TargetNode, - ACPI_BUFFER *CurrentPath, - ACPI_BUFFER *TargetPath, - ACPI_SIZE AmlNameStringLength, - UINT8 IsDeclaration, - char **ReturnNewPath); - -static ACPI_STATUS -OptOptimizeNameDeclaration ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE *CurrentNode, - ACPI_NAMESPACE_NODE *TargetNode, - char *AmlNameString, - char **NewPath); - - -/******************************************************************************* - * - * FUNCTION: OptSearchToRoot - * - * PARAMETERS: Op - Current parser op - * WalkState - Current state - * CurrentNode - Where we are in the namespace - * TargetNode - Node to which we are referring - * TargetPath - External full path to the target node - * NewPath - Where the optimized path is returned - * - * RETURN: Status - * - * DESCRIPTION: Attempt to optimize a reference to a single 4-character ACPI - * name utilizing the search-to-root name resolution algorithm - * that is used by AML interpreters. - * - ******************************************************************************/ - -static ACPI_STATUS -OptSearchToRoot ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE *CurrentNode, - ACPI_NAMESPACE_NODE *TargetNode, - ACPI_BUFFER *TargetPath, - char **NewPath) -{ - ACPI_NAMESPACE_NODE *Node; - ACPI_GENERIC_STATE ScopeInfo; - ACPI_STATUS Status; - char *Path; - - - ACPI_FUNCTION_NAME (OptSearchToRoot); - - - /* - * Check if search-to-root can be utilized. Use the last NameSeg of - * the NamePath and 1) See if can be found and 2) If found, make - * sure that it is the same node that we want. If there is another - * name in the search path before the one we want, the nodes will - * not match, and we cannot use this optimization. - */ - Path = &(((char *) TargetPath->Pointer)[TargetPath->Length - - ACPI_NAME_SIZE]), - ScopeInfo.Scope.Node = CurrentNode; - - /* Lookup the NameSeg using SEARCH_PARENT (search-to-root) */ - - Status = AcpiNsLookup (&ScopeInfo, Path, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, - WalkState, &(Node)); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* - * We found the name, but we must check to make sure that the node - * matches. Otherwise, there is another identical name in the search - * path that precludes the use of this optimization. - */ - if (Node != TargetNode) - { - /* - * This means that another object with the same name was found first, - * and we cannot use this optimization. - */ - return (AE_NOT_FOUND); - } - - /* Found the node, we can use this optimization */ - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, - "NAMESEG: %-24s", Path)); - - /* We must allocate a new string for the name (TargetPath gets deleted) */ - - *NewPath = ACPI_ALLOCATE_ZEROED (ACPI_NAME_SIZE + 1); - ACPI_STRCPY (*NewPath, Path); - - if (ACPI_STRNCMP (*NewPath, "_T_", 3)) - { - AslError (ASL_OPTIMIZATION, ASL_MSG_SINGLE_NAME_OPTIMIZATION, Op, - *NewPath); - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: OptBuildShortestPath - * - * PARAMETERS: Op - Current parser op - * WalkState - Current state - * CurrentNode - Where we are in the namespace - * TargetNode - Node to which we are referring - * CurrentPath - External full path to the current node - * TargetPath - External full path to the target node - * AmlNameStringLength - Length of the original namepath - * IsDeclaration - TRUE for declaration, FALSE for reference - * ReturnNewPath - Where the optimized path is returned - * - * RETURN: Status - * - * DESCRIPTION: Build an optimal NamePath using carats - * - ******************************************************************************/ - -static ACPI_STATUS -OptBuildShortestPath ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE *CurrentNode, - ACPI_NAMESPACE_NODE *TargetNode, - ACPI_BUFFER *CurrentPath, - ACPI_BUFFER *TargetPath, - ACPI_SIZE AmlNameStringLength, - UINT8 IsDeclaration, - char **ReturnNewPath) -{ - UINT32 NumCommonSegments; - UINT32 MaxCommonSegments; - ACPI_NATIVE_UINT Index; - UINT32 NumCarats; - ACPI_NATIVE_UINT i; - char *NewPath; - char *NewPathExternal; - ACPI_NAMESPACE_NODE *Node; - ACPI_GENERIC_STATE ScopeInfo; - ACPI_STATUS Status; - BOOLEAN SubPath = FALSE; - - - ACPI_FUNCTION_NAME (OptBuildShortestPath); - - - ScopeInfo.Scope.Node = CurrentNode; - - /* - * Determine the maximum number of NameSegs that the Target and Current paths - * can possibly have in common. (To optimize, we have to have at least 1) - * - * Note: The external NamePath string lengths are always a multiple of 5 - * (ACPI_NAME_SIZE + separator) - */ - MaxCommonSegments = TargetPath->Length / ACPI_PATH_SEGMENT_LENGTH; - if (CurrentPath->Length < TargetPath->Length) - { - MaxCommonSegments = CurrentPath->Length / ACPI_PATH_SEGMENT_LENGTH; - } - - /* - * Determine how many NameSegs the two paths have in common. - * (Starting from the root) - */ - for (NumCommonSegments = 0; - NumCommonSegments < MaxCommonSegments; - NumCommonSegments++) - { - /* Compare two single NameSegs */ - - if (ACPI_STRNCMP ( - &((char *) TargetPath->Pointer)[(NumCommonSegments * - ACPI_PATH_SEGMENT_LENGTH) + 1], - &((char *) CurrentPath->Pointer)[(NumCommonSegments * - ACPI_PATH_SEGMENT_LENGTH) + 1], - ACPI_NAME_SIZE)) - { - /* Mismatch */ - - break; - } - } - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, " COMMON: %d", - NumCommonSegments)); - - /* There must be at least 1 common NameSeg in order to optimize */ - - if (NumCommonSegments == 0) - { - return (AE_NOT_FOUND); - } - - if (NumCommonSegments == MaxCommonSegments) - { - if (CurrentPath->Length == TargetPath->Length) - { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, " SAME PATH")); - return (AE_NOT_FOUND); - } - else - { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, " SUBPATH")); - SubPath = TRUE; - } - } - - /* Determine how many prefix Carats are required */ - - NumCarats = (CurrentPath->Length / ACPI_PATH_SEGMENT_LENGTH) - - NumCommonSegments; - - /* - * Construct a new target string - */ - NewPathExternal = ACPI_ALLOCATE_ZEROED ( - TargetPath->Length + NumCarats + 1); - - /* Insert the Carats into the Target string */ - - for (i = 0; i < NumCarats; i++) - { - NewPathExternal[i] = '^'; - } - - /* - * Copy only the necessary (optimal) segments from the original - * target string - */ - Index = (NumCommonSegments * ACPI_PATH_SEGMENT_LENGTH) + 1; - - /* Special handling for exact subpath in a name declaration */ - - if (IsDeclaration && SubPath && (CurrentPath->Length > TargetPath->Length)) - { - /* - * The current path is longer than the target, and the target is a - * subpath of the current path. We must include one more NameSeg of - * the target path - */ - Index -= ACPI_PATH_SEGMENT_LENGTH; - - /* Special handling for Scope() operator */ - - if (Op->Asl.AmlOpcode == AML_SCOPE_OP) - { - NewPathExternal[i] = '^'; - i++; - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, "(EXTRA ^)")); - } - } - - /* Make sure we haven't gone off the end of the target path */ - - if (Index > TargetPath->Length) - { - Index = TargetPath->Length; - } - - ACPI_STRCPY (&NewPathExternal[i], &((char *) TargetPath->Pointer)[Index]); - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, " %-24s", NewPathExternal)); - - /* - * Internalize the new target string and check it against the original - * string to make sure that this is in fact an optimization. If the - * original string is already optimal, there is no point in continuing. - */ - Status = AcpiNsInternalizeName (NewPathExternal, &NewPath); - if (ACPI_FAILURE (Status)) - { - AslCoreSubsystemError (Op, Status, "Internalizing new NamePath", - ASL_NO_ABORT); - ACPI_FREE (NewPathExternal); - return (Status); - } - - if (ACPI_STRLEN (NewPath) >= AmlNameStringLength) - { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, - " NOT SHORTER (New %u old %u)", - ACPI_STRLEN (NewPath), AmlNameStringLength)); - ACPI_FREE (NewPathExternal); - return (AE_NOT_FOUND); - } - - /* - * Check to make sure that the optimization finds the node we are - * looking for. This is simply a sanity check on the new - * path that has been created. - */ - Status = AcpiNsLookup (&ScopeInfo, NewPath, - ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_DONT_OPEN_SCOPE, WalkState, &(Node)); - if (ACPI_SUCCESS (Status)) - { - /* Found the namepath, but make sure the node is correct */ - - if (Node == TargetNode) - { - /* The lookup matched the node, accept this optimization */ - - AslError (ASL_OPTIMIZATION, ASL_MSG_NAME_OPTIMIZATION, - Op, NewPathExternal); - *ReturnNewPath = NewPath; - } - else - { - /* Node is not correct, do not use this optimization */ - - Status = AE_NOT_FOUND; - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, " ***** WRONG NODE")); - AslError (ASL_WARNING, ASL_MSG_COMPILER_INTERNAL, Op, - "Not using optimized name - found wrong node"); - } - } - else - { - /* The lookup failed, we obviously cannot use this optimization */ - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, " ***** NOT FOUND")); - AslError (ASL_WARNING, ASL_MSG_COMPILER_INTERNAL, Op, - "Not using optimized name - did not find node"); - } - - ACPI_FREE (NewPathExternal); - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: OptOptimizeNameDeclaration - * - * PARAMETERS: Op - Current parser op - * WalkState - Current state - * CurrentNode - Where we are in the namespace - * AmlNameString - Unoptimized namepath - * NewPath - Where the optimized path is returned - * - * RETURN: Status. AE_OK If path is optimized - * - * DESCRIPTION: Perform a simple optimization of removing an extraneous - * backslash prefix if we are already at the root scope. - * - ******************************************************************************/ - -static ACPI_STATUS -OptOptimizeNameDeclaration ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE *CurrentNode, - ACPI_NAMESPACE_NODE *TargetNode, - char *AmlNameString, - char **NewPath) -{ - ACPI_STATUS Status; - char *NewPathExternal; - ACPI_GENERIC_STATE ScopeInfo; - ACPI_NAMESPACE_NODE *Node; - - - ACPI_FUNCTION_TRACE (OptOptimizeNameDeclaration); - - - if (((CurrentNode == AcpiGbl_RootNode) || - (Op->Common.Parent->Asl.ParseOpcode == PARSEOP_DEFINITIONBLOCK)) && - (AmlNameString[0] == '\\')) - { - /* - * The current scope is the root, and the namepath has a root prefix - * that is therefore extraneous. Remove it. - */ - *NewPath = &AmlNameString[1]; - - /* Debug output */ - - Status = AcpiNsExternalizeName (ACPI_UINT32_MAX, *NewPath, - NULL, &NewPathExternal); - if (ACPI_FAILURE (Status)) - { - AslCoreSubsystemError (Op, Status, "Externalizing NamePath", - ASL_NO_ABORT); - return (Status); - } - - /* - * Check to make sure that the optimization finds the node we are - * looking for. This is simply a sanity check on the new - * path that has been created. - */ - ScopeInfo.Scope.Node = CurrentNode; - Status = AcpiNsLookup (&ScopeInfo, *NewPath, - ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_DONT_OPEN_SCOPE, WalkState, &(Node)); - if (ACPI_SUCCESS (Status)) - { - /* Found the namepath, but make sure the node is correct */ - - if (Node == TargetNode) - { - /* The lookup matched the node, accept this optimization */ - - AslError (ASL_OPTIMIZATION, ASL_MSG_NAME_OPTIMIZATION, - Op, NewPathExternal); - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, - "AT ROOT: %-24s", NewPathExternal)); - } - else - { - /* Node is not correct, do not use this optimization */ - - Status = AE_NOT_FOUND; - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, - " ***** WRONG NODE")); - AslError (ASL_WARNING, ASL_MSG_COMPILER_INTERNAL, Op, - "Not using optimized name - found wrong node"); - } - } - else - { - /* The lookup failed, we obviously cannot use this optimization */ - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, - " ***** NOT FOUND")); - AslError (ASL_WARNING, ASL_MSG_COMPILER_INTERNAL, Op, - "Not using optimized name - did not find node"); - } - - ACPI_FREE (NewPathExternal); - return (Status); - } - - /* Could not optimize */ - - return (AE_NOT_FOUND); -} - - -/******************************************************************************* - * - * FUNCTION: OptOptimizeNamePath - * - * PARAMETERS: Op - Current parser op - * Flags - Opcode info flags - * WalkState - Current state - * AmlNameString - Unoptimized namepath - * TargetNode - Node to which AmlNameString refers - * - * RETURN: None. If path is optimized, the Op is updated with new path - * - * DESCRIPTION: Optimize a Named Declaration or Reference to the minimal length. - * Must take into account both the current location in the - * namespace and the actual reference path. - * - ******************************************************************************/ - -void -OptOptimizeNamePath ( - ACPI_PARSE_OBJECT *Op, - UINT32 Flags, - ACPI_WALK_STATE *WalkState, - char *AmlNameString, - ACPI_NAMESPACE_NODE *TargetNode) -{ - ACPI_STATUS Status; - ACPI_BUFFER TargetPath; - ACPI_BUFFER CurrentPath; - ACPI_SIZE AmlNameStringLength; - ACPI_NAMESPACE_NODE *CurrentNode; - char *ExternalNameString; - char *NewPath = NULL; - ACPI_SIZE HowMuchShorter; - ACPI_PARSE_OBJECT *NextOp; - - - ACPI_FUNCTION_TRACE (OptOptimizeNamePath); - - - /* This is an optional optimization */ - - if (!Gbl_ReferenceOptimizationFlag) - { - return_VOID; - } - - /* Various required items */ - - if (!TargetNode || !WalkState || !AmlNameString || !Op->Common.Parent) - { - return_VOID; - } - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, "%5d [%12.12s] [%12.12s] ", - Op->Asl.LogicalLineNumber, - AcpiPsGetOpcodeName (Op->Common.Parent->Common.AmlOpcode), - AcpiPsGetOpcodeName (Op->Common.AmlOpcode))); - - if (!(Flags & (AML_NAMED | AML_CREATE))) - { - if (Op->Asl.CompileFlags & NODE_IS_NAME_DECLARATION) - { - /* We don't want to fuss with actual name declaration nodes here */ - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, - "******* NAME DECLARATION\n")); - return_VOID; - } - } - - /* - * The original path must be longer than one NameSeg (4 chars) for there - * to be any possibility that it can be optimized to a shorter string - */ - AmlNameStringLength = ACPI_STRLEN (AmlNameString); - if (AmlNameStringLength <= ACPI_NAME_SIZE) - { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, - "NAMESEG %4.4s\n", AmlNameString)); - return_VOID; - } - - /* - * We need to obtain the node that represents the current scope -- where - * we are right now in the namespace. We will compare this path - * against the Namepath, looking for commonality. - */ - CurrentNode = AcpiGbl_RootNode; - if (WalkState->ScopeInfo) - { - CurrentNode = WalkState->ScopeInfo->Scope.Node; - } - - if (Flags & (AML_NAMED | AML_CREATE)) - { - /* This is the declaration of a new name */ - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, "NAME")); - - /* - * The node of interest is the parent of this node - * (the containing scope) - */ - CurrentNode = Op->Asl.Parent->Asl.Node; - if (!CurrentNode) - { - CurrentNode = AcpiGbl_RootNode; - } - } - else - { - /* This is a reference to an existing named object */ - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, "REF ")); - } - - /* - * Obtain the full paths to the two nodes that we are interested in - * (Target and current namespace location) in external - * format -- something we can easily manipulate - */ - TargetPath.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - Status = AcpiNsHandleToPathname (TargetNode, &TargetPath); - if (ACPI_FAILURE (Status)) - { - AslCoreSubsystemError (Op, Status, "Getting Target NamePath", - ASL_NO_ABORT); - return_VOID; - } - TargetPath.Length--; /* Subtract one for null terminator */ - - /* CurrentPath is the path to this scope (where we are in the namespace) */ - - CurrentPath.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - Status = AcpiNsHandleToPathname (CurrentNode, &CurrentPath); - if (ACPI_FAILURE (Status)) - { - AslCoreSubsystemError (Op, Status, "Getting Current NamePath", - ASL_NO_ABORT); - return_VOID; - } - CurrentPath.Length--; /* Subtract one for null terminator */ - - /* Debug output only */ - - Status = AcpiNsExternalizeName (ACPI_UINT32_MAX, AmlNameString, - NULL, &ExternalNameString); - if (ACPI_FAILURE (Status)) - { - AslCoreSubsystemError (Op, Status, "Externalizing NamePath", - ASL_NO_ABORT); - return_VOID; - } - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, - "%37s (%2u) ==> %-32s(%2u) %-32s", - (char *) CurrentPath.Pointer, CurrentPath.Length, - (char *) TargetPath.Pointer, TargetPath.Length, ExternalNameString)); - - ACPI_FREE (ExternalNameString); - - /* - * Attempt an optmization depending on the type of namepath - */ - if (Flags & (AML_NAMED | AML_CREATE)) - { - /* - * This is a named opcode and the namepath is a name declaration, not - * a reference. - */ - Status = OptOptimizeNameDeclaration (Op, WalkState, CurrentNode, - TargetNode, AmlNameString, &NewPath); - if (ACPI_FAILURE (Status)) - { - /* - * 2) now attempt to - * optimize the namestring with carats (up-arrow) - */ - Status = OptBuildShortestPath (Op, WalkState, CurrentNode, - TargetNode, &CurrentPath, &TargetPath, - AmlNameStringLength, 1, &NewPath); - } - } - else - { - /* - * This is a reference to an existing named object - * - * 1) Check if search-to-root can be utilized using the last - * NameSeg of the NamePath - */ - Status = OptSearchToRoot (Op, WalkState, CurrentNode, - TargetNode, &TargetPath, &NewPath); - if (ACPI_FAILURE (Status)) - { - /* - * 2) Search-to-root could not be used, now attempt to - * optimize the namestring with carats (up-arrow) - */ - Status = OptBuildShortestPath (Op, WalkState, CurrentNode, - TargetNode, &CurrentPath, &TargetPath, - AmlNameStringLength, 0, &NewPath); - } - } - - /* - * Success from above indicates that the NamePath was successfully - * optimized. We need to update the parse op with the new name - */ - if (ACPI_SUCCESS (Status)) - { - HowMuchShorter = (AmlNameStringLength - ACPI_STRLEN (NewPath)); - OptTotal += HowMuchShorter; - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, " REDUCED %2u (%u)", - HowMuchShorter, OptTotal)); - - if (Flags & AML_NAMED) - { - if (Op->Asl.AmlOpcode == AML_ALIAS_OP) - { - /* - * ALIAS is the only oddball opcode, the name declaration - * (alias name) is the second operand - */ - Op->Asl.Child->Asl.Next->Asl.Value.String = NewPath; - Op->Asl.Child->Asl.Next->Asl.AmlLength = ACPI_STRLEN (NewPath); - } - else - { - Op->Asl.Child->Asl.Value.String = NewPath; - Op->Asl.Child->Asl.AmlLength = ACPI_STRLEN (NewPath); - } - } - else if (Flags & AML_CREATE) - { - /* Name must appear as the last parameter */ - - NextOp = Op->Asl.Child; - while (!(NextOp->Asl.CompileFlags & NODE_IS_NAME_DECLARATION)) - { - NextOp = NextOp->Asl.Next; - } - /* Update the parse node with the new NamePath */ - - NextOp->Asl.Value.String = NewPath; - NextOp->Asl.AmlLength = ACPI_STRLEN (NewPath); - } - else - { - /* Update the parse node with the new NamePath */ - - Op->Asl.Value.String = NewPath; - Op->Asl.AmlLength = ACPI_STRLEN (NewPath); - } - } - else - { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, " ALREADY OPTIMAL")); - } - - /* Cleanup path buffers */ - - ACPI_FREE (TargetPath.Pointer); - ACPI_FREE (CurrentPath.Pointer); - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, "\n")); - return_VOID; -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/aslresource.c b/sys/contrib/dev/acpica-unix-20061109/compiler/aslresource.c deleted file mode 100644 index 9ae494ddcd..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/aslresource.c +++ /dev/null @@ -1,760 +0,0 @@ - -/****************************************************************************** - * - * Module Name: aslresource - Resource templates and descriptors - * $Revision: 1.42 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "aslcompiler.h" -#include "aslcompiler.y.h" -#include "amlcode.h" - - -#define _COMPONENT ACPI_COMPILER - ACPI_MODULE_NAME ("aslresource") - - -/******************************************************************************* - * - * FUNCTION: RsAllocateResourceNode - * - * PARAMETERS: Size - Size of node in bytes - * - * RETURN: The allocated node - aborts on allocation failure - * - * DESCRIPTION: Allocate a resource description node and the resource - * descriptor itself (the nodes are used to link descriptors). - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsAllocateResourceNode ( - UINT32 Size) -{ - ASL_RESOURCE_NODE *Rnode; - - - /* Allocate the node */ - - Rnode = UtLocalCalloc (sizeof (ASL_RESOURCE_NODE)); - - /* Allocate the resource descriptor itself */ - - Rnode->Buffer = UtLocalCalloc (Size); - Rnode->BufferLength = Size; - - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsCreateBitField - * - * 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 - * - * RETURN: None, sets fields within the input node - * - * DESCRIPTION: Utility function to generate a named bit field within a - * resource descriptor. Mark a node as 1) a field in a resource - * descriptor, and 2) set the value to be a BIT offset - * - ******************************************************************************/ - -void -RsCreateBitField ( - ACPI_PARSE_OBJECT *Op, - char *Name, - UINT32 ByteOffset, - UINT32 BitOffset) -{ - - Op->Asl.ExternalName = Name; - Op->Asl.Value.Integer = ((ACPI_INTEGER) 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 - * - ******************************************************************************/ - -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; -} - - -/******************************************************************************* - * - * FUNCTION: RsSetFlagBits - * - * PARAMETERS: *Flags - Pointer to the flag byte - * Op - Flag initialization node - * Position - Bit position within the flag byte - * Default - Used if the node is DEFAULT. - * - * RETURN: Sets bits within the *Flags output byte. - * - * DESCRIPTION: Set a bit in a cumulative flags word from an initialization - * node. Will use a default value if the node is DEFAULT, meaning - * that no value was specified in the ASL. Used to merge multiple - * keywords into a single flags byte. - * - ******************************************************************************/ - -void -RsSetFlagBits ( - UINT8 *Flags, - ACPI_PARSE_OBJECT *Op, - UINT8 Position, - UINT8 DefaultBit) -{ - - if (Op->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) - { - /* Use the default bit */ - - *Flags |= (DefaultBit << Position); - } - else - { - /* Use the bit specified in the initialization node */ - - *Flags |= (((UINT8) Op->Asl.Value.Integer) << Position); - } -} - - -/******************************************************************************* - * - * FUNCTION: RsCompleteNodeAndGetNext - * - * PARAMETERS: Op - Resource node to be completed - * - * RETURN: The next peer to the input node. - * - * DESCRIPTION: Mark the current node completed and return the next peer. - * The node ParseOpcode is set to DEFAULT_ARG, meaning that - * this node is to be ignored from now on. - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -RsCompleteNodeAndGetNext ( - ACPI_PARSE_OBJECT *Op) -{ - - /* Mark this node unused */ - - Op->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; - - /* Move on to the next peer node in the initializer list */ - - return (ASL_GET_PEER_NODE (Op)); -} - - -/******************************************************************************* - * - * FUNCTION: RsCheckListForDuplicates - * - * PARAMETERS: Op - First op in the initializer list - * - * RETURN: None - * - * DESCRIPTION: Check an initializer list for duplicate values. Emits an error - * if any duplicates are found. - * - ******************************************************************************/ - -void -RsCheckListForDuplicates ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *NextValueOp = Op; - ACPI_PARSE_OBJECT *NextOp; - UINT32 Value; - - - if (!Op) - { - return; - } - - /* Search list once for each value in the list */ - - while (NextValueOp) - { - Value = (UINT32) NextValueOp->Asl.Value.Integer; - - /* Compare this value to all remaining values in the list */ - - NextOp = ASL_GET_PEER_NODE (NextValueOp); - while (NextOp) - { - if (NextOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) - { - /* Compare values */ - - if (Value == (UINT32) NextOp->Asl.Value.Integer) - { - /* Emit error only once per duplicate node */ - - if (!(NextOp->Asl.CompileFlags & NODE_IS_DUPLICATE)) - { - NextOp->Asl.CompileFlags |= NODE_IS_DUPLICATE; - AslError (ASL_ERROR, ASL_MSG_DUPLICATE_ITEM, - NextOp, NULL); - } - } - } - - NextOp = ASL_GET_PEER_NODE (NextOp); - } - - NextValueOp = ASL_GET_PEER_NODE (NextValueOp); - } -} - - -/******************************************************************************* - * - * FUNCTION: RsDoOneResourceDescriptor - * - * PARAMETERS: DescriptorTypeOp - Parent parse node of the descriptor - * CurrentByteOffset - Offset in the resource descriptor - * buffer. - * - * RETURN: A valid resource node for the descriptor - * - * DESCRIPTION: Dispatches the processing of one resource descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoOneResourceDescriptor ( - ACPI_PARSE_OBJECT *DescriptorTypeOp, - UINT32 CurrentByteOffset, - UINT8 *State) -{ - ASL_RESOURCE_NODE *Rnode = NULL; - - - /* Construct the resource */ - - switch (DescriptorTypeOp->Asl.ParseOpcode) - { - case PARSEOP_DMA: - Rnode = RsDoDmaDescriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_DWORDIO: - Rnode = RsDoDwordIoDescriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_DWORDMEMORY: - Rnode = RsDoDwordMemoryDescriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_DWORDSPACE: - Rnode = RsDoDwordSpaceDescriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_ENDDEPENDENTFN: - switch (*State) - { - case ACPI_RSTATE_NORMAL: - AslError (ASL_ERROR, ASL_MSG_MISSING_STARTDEPENDENT, - DescriptorTypeOp, NULL); - break; - - case ACPI_RSTATE_START_DEPENDENT: - AslError (ASL_ERROR, ASL_MSG_DEPENDENT_NESTING, - DescriptorTypeOp, NULL); - break; - - case ACPI_RSTATE_DEPENDENT_LIST: - default: - break; - } - - *State = ACPI_RSTATE_NORMAL; - Rnode = RsDoEndDependentDescriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_ENDTAG: - Rnode = RsDoEndTagDescriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_EXTENDEDIO: - Rnode = RsDoExtendedIoDescriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_EXTENDEDMEMORY: - Rnode = RsDoExtendedMemoryDescriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_EXTENDEDSPACE: - Rnode = RsDoExtendedSpaceDescriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_FIXEDIO: - Rnode = RsDoFixedIoDescriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_INTERRUPT: - Rnode = RsDoInterruptDescriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_IO: - Rnode = RsDoIoDescriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_IRQ: - Rnode = RsDoIrqDescriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_IRQNOFLAGS: - Rnode = RsDoIrqNoFlagsDescriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_MEMORY24: - Rnode = RsDoMemory24Descriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_MEMORY32: - Rnode = RsDoMemory32Descriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_MEMORY32FIXED: - Rnode = RsDoMemory32FixedDescriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_QWORDIO: - Rnode = RsDoQwordIoDescriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_QWORDMEMORY: - Rnode = RsDoQwordMemoryDescriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_QWORDSPACE: - Rnode = RsDoQwordSpaceDescriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_REGISTER: - Rnode = RsDoGeneralRegisterDescriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_STARTDEPENDENTFN: - switch (*State) - { - case ACPI_RSTATE_START_DEPENDENT: - AslError (ASL_ERROR, ASL_MSG_DEPENDENT_NESTING, - DescriptorTypeOp, NULL); - break; - - case ACPI_RSTATE_NORMAL: - case ACPI_RSTATE_DEPENDENT_LIST: - default: - break; - } - - *State = ACPI_RSTATE_START_DEPENDENT; - Rnode = RsDoStartDependentDescriptor (DescriptorTypeOp, - CurrentByteOffset); - *State = ACPI_RSTATE_DEPENDENT_LIST; - break; - - case PARSEOP_STARTDEPENDENTFN_NOPRI: - switch (*State) - { - case ACPI_RSTATE_START_DEPENDENT: - AslError (ASL_ERROR, ASL_MSG_DEPENDENT_NESTING, - DescriptorTypeOp, NULL); - break; - - case ACPI_RSTATE_NORMAL: - case ACPI_RSTATE_DEPENDENT_LIST: - default: - break; - } - - *State = ACPI_RSTATE_START_DEPENDENT; - Rnode = RsDoStartDependentNoPriDescriptor (DescriptorTypeOp, - CurrentByteOffset); - *State = ACPI_RSTATE_DEPENDENT_LIST; - break; - - case PARSEOP_VENDORLONG: - Rnode = RsDoVendorLargeDescriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_VENDORSHORT: - Rnode = RsDoVendorSmallDescriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_WORDBUSNUMBER: - Rnode = RsDoWordBusNumberDescriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_WORDIO: - Rnode = RsDoWordIoDescriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_WORDSPACE: - Rnode = RsDoWordSpaceDescriptor (DescriptorTypeOp, - CurrentByteOffset); - break; - - case PARSEOP_DEFAULT_ARG: - /* Just ignore any of these, they are used as fillers/placeholders */ - break; - - default: - printf ("Unknown resource descriptor type [%s]\n", - DescriptorTypeOp->Asl.ParseOpName); - break; - } - - /* - * Mark original node as unused, but head of a resource descriptor. - * This allows the resource to be installed in the namespace so that - * references to the descriptor can be resolved. - */ - DescriptorTypeOp->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; - DescriptorTypeOp->Asl.CompileFlags = NODE_IS_RESOURCE_DESC; - DescriptorTypeOp->Asl.Value.Integer = CurrentByteOffset; - - if (Rnode) - { - DescriptorTypeOp->Asl.FinalAmlLength = Rnode->BufferLength; - } - - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsLinkDescriptorChain - * - * PARAMETERS: PreviousRnode - Pointer to the node that will be previous - * to the linked node, At exit, set to the - * last node in the new chain. - * Rnode - Resource node to link into the list - * - * RETURN: Cumulative buffer byte offset of the new segment of chain - * - * DESCRIPTION: Link a descriptor chain at the end of an existing chain. - * - ******************************************************************************/ - -UINT32 -RsLinkDescriptorChain ( - ASL_RESOURCE_NODE **PreviousRnode, - ASL_RESOURCE_NODE *Rnode) -{ - ASL_RESOURCE_NODE *LastRnode; - UINT32 CurrentByteOffset; - - - /* Anything to do? */ - - if (!Rnode) - { - return 0; - } - - /* Point the previous node to the new node */ - - (*PreviousRnode)->Next = Rnode; - CurrentByteOffset = Rnode->BufferLength; - - /* Walk to the end of the chain headed by Rnode */ - - LastRnode = Rnode; - while (LastRnode->Next) - { - LastRnode = LastRnode->Next; - CurrentByteOffset += LastRnode->BufferLength; - } - - /* Previous node becomes the last node in the chain */ - - *PreviousRnode = LastRnode; - return CurrentByteOffset; -} - - -/******************************************************************************* - * - * FUNCTION: RsDoResourceTemplate - * - * PARAMETERS: Op - Parent of a resource template list - * - * RETURN: None. Sets input node to point to a list of AML code - * - * DESCRIPTION: Merge a list of resource descriptors into a single AML buffer, - * in preparation for output to the AML output file. - * - ******************************************************************************/ - -void -RsDoResourceTemplate ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *BufferLengthOp; - ACPI_PARSE_OBJECT *BufferOp; - ACPI_PARSE_OBJECT *DescriptorTypeOp; - ACPI_PARSE_OBJECT *LastOp = NULL; - UINT32 CurrentByteOffset = 0; - ASL_RESOURCE_NODE HeadRnode; - ASL_RESOURCE_NODE *PreviousRnode; - ASL_RESOURCE_NODE *Rnode; - UINT8 State; - - - /* Mark parent as containing a resource template */ - - if (Op->Asl.Parent) - { - Op->Asl.Parent->Asl.CompileFlags |= NODE_IS_RESOURCE_DESC; - } - - /* ResourceTemplate Opcode is first (Op) */ - /* Buffer Length node is first child */ - - BufferLengthOp = ASL_GET_CHILD_NODE (Op); - - /* Buffer Op is first peer */ - - BufferOp = ASL_GET_PEER_NODE (BufferLengthOp); - - /* First Descriptor type is next */ - - DescriptorTypeOp = ASL_GET_PEER_NODE (BufferOp); - - /* - * Process all resource descriptors in the list - * Note: It is assumed that the EndTag node has been automatically - * inserted at the end of the template by the parser. - */ - State = ACPI_RSTATE_NORMAL; - PreviousRnode = &HeadRnode; - while (DescriptorTypeOp) - { - DescriptorTypeOp->Asl.CompileFlags |= NODE_IS_RESOURCE_DESC; - Rnode = RsDoOneResourceDescriptor (DescriptorTypeOp, CurrentByteOffset, - &State); - - /* - * Update current byte offset to indicate the number of bytes from the - * start of the buffer. Buffer can include multiple descriptors, we - * must keep track of the offset of not only each descriptor, but each - * element (field) within each descriptor as well. - */ - CurrentByteOffset += RsLinkDescriptorChain (&PreviousRnode, Rnode); - - /* Get the next descriptor in the list */ - - LastOp = DescriptorTypeOp; - DescriptorTypeOp = ASL_GET_PEER_NODE (DescriptorTypeOp); - } - - if (State == ACPI_RSTATE_DEPENDENT_LIST) - { - if (LastOp) - { - LastOp = LastOp->Asl.Parent; - } - AslError (ASL_ERROR, ASL_MSG_MISSING_ENDDEPENDENT, LastOp, NULL); - } - - /* - * Transform the nodes into the following - * - * Op -> AML_BUFFER_OP - * First Child -> BufferLength - * Second Child -> Descriptor Buffer (raw byte data) - */ - Op->Asl.ParseOpcode = PARSEOP_BUFFER; - Op->Asl.AmlOpcode = AML_BUFFER_OP; - Op->Asl.CompileFlags = NODE_AML_PACKAGE | NODE_IS_RESOURCE_DESC; - - BufferLengthOp->Asl.ParseOpcode = PARSEOP_INTEGER; - BufferLengthOp->Asl.Value.Integer = CurrentByteOffset; - (void) OpcSetOptimalIntegerSize (BufferLengthOp); - - BufferOp->Asl.ParseOpcode = PARSEOP_RAW_DATA; - BufferOp->Asl.AmlOpcode = AML_RAW_DATA_CHAIN; - BufferOp->Asl.AmlOpcodeLength = 0; - BufferOp->Asl.AmlLength = CurrentByteOffset; - BufferOp->Asl.Value.Buffer = (UINT8 *) HeadRnode.Next; - BufferOp->Asl.CompileFlags |= NODE_IS_RESOURCE_DATA; - - return; -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/aslrestype1.c b/sys/contrib/dev/acpica-unix-20061109/compiler/aslrestype1.c deleted file mode 100644 index c62a35f266..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/aslrestype1.c +++ /dev/null @@ -1,1186 +0,0 @@ - -/****************************************************************************** - * - * Module Name: aslrestype1 - Short (type1) resource templates and descriptors - * $Revision: 1.39 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "aslcompiler.h" -#include "aslcompiler.y.h" - -#define _COMPONENT ACPI_COMPILER - ACPI_MODULE_NAME ("aslrestype1") - - -/******************************************************************************* - * - * FUNCTION: RsDoEndTagDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a short "EndDependentFn" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoEndTagDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ASL_RESOURCE_NODE *Rnode; - - - Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_END_TAG)); - - Descriptor = Rnode->Buffer; - Descriptor->EndTag.DescriptorType = ACPI_RESOURCE_NAME_END_TAG | - ASL_RDESC_END_TAG_SIZE; - Descriptor->EndTag.Checksum = 0; - - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoDmaDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a short "DMA" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoDmaDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT32 i; - UINT8 DmaChannelMask = 0; - UINT8 DmaChannels = 0; - - - InitializerOp = Op->Asl.Child; - Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_DMA)); - - Descriptor = Rnode->Buffer; - Descriptor->Dma.DescriptorType = ACPI_RESOURCE_NAME_DMA | - ASL_RDESC_DMA_SIZE; - - /* Process all child initialization nodes */ - - for (i = 0; InitializerOp; i++) - { - switch (i) - { - case 0: /* DMA type */ - - RsSetFlagBits (&Descriptor->Dma.Flags, InitializerOp, 5, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_DMATYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Dma.Flags), 5); - break; - - case 1: /* Bus Master */ - - RsSetFlagBits (&Descriptor->Dma.Flags, InitializerOp, 2, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_BUSMASTER, - CurrentByteOffset + ASL_RESDESC_OFFSET (Dma.Flags), 2); - break; - - 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); - break; - - case 3: /* Name */ - - UtAttachNamepathToOwner (Op, InitializerOp); - break; - - default: - - /* All DMA channel bytes are handled here, after flags and name */ - - if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) - { - /* Up to 8 channels can be specified in the list */ - - DmaChannels++; - if (DmaChannels > 8) - { - AslError (ASL_ERROR, ASL_MSG_DMA_LIST, - InitializerOp, NULL); - return (Rnode); - } - - /* Only DMA channels 0-7 are allowed (mask is 8 bits) */ - - if (InitializerOp->Asl.Value.Integer > 7) - { - AslError (ASL_ERROR, ASL_MSG_DMA_CHANNEL, - InitializerOp, NULL); - } - - /* Build the mask */ - - DmaChannelMask |= - (1 << ((UINT8) InitializerOp->Asl.Value.Integer)); - } - - if (i == 4) /* case 4: First DMA byte */ - { - /* Check now for duplicates in list */ - - RsCheckListForDuplicates (InitializerOp); - - /* Create a named field at the start of the list */ - - RsCreateByteField (InitializerOp, ACPI_RESTAG_DMA, - CurrentByteOffset + - ASL_RESDESC_OFFSET (Dma.DmaChannelMask)); - } - break; - } - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - /* Now we can set the channel mask */ - - Descriptor->Dma.DmaChannelMask = DmaChannelMask; - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoEndDependentDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a short "EndDependentFn" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoEndDependentDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ASL_RESOURCE_NODE *Rnode; - - - Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_END_DEPENDENT)); - - Descriptor = Rnode->Buffer; - Descriptor->EndDpf.DescriptorType = ACPI_RESOURCE_NAME_END_DEPENDENT | - ASL_RDESC_END_DEPEND_SIZE; - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoFixedIoDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a short "FixedIO" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoFixedIoDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT32 i; - - - InitializerOp = Op->Asl.Child; - Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_FIXED_IO)); - - Descriptor = Rnode->Buffer; - Descriptor->Io.DescriptorType = ACPI_RESOURCE_NAME_FIXED_IO | - ASL_RDESC_FIXED_IO_SIZE; - - /* Process all child initialization nodes */ - - for (i = 0; InitializerOp; i++) - { - switch (i) - { - case 0: /* Base Address */ - - Descriptor->FixedIo.Address = - (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_BASEADDRESS, - CurrentByteOffset + ASL_RESDESC_OFFSET (FixedIo.Address)); - break; - - case 1: /* Length */ - - Descriptor->FixedIo.AddressLength = - (UINT8) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (FixedIo.AddressLength)); - break; - - case 2: /* Name */ - - UtAttachNamepathToOwner (Op, InitializerOp); - break; - - default: - - AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); - break; - } - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoIoDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a short "IO" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoIoDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT32 i; - - - InitializerOp = Op->Asl.Child; - Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_IO)); - - Descriptor = Rnode->Buffer; - Descriptor->Io.DescriptorType = ACPI_RESOURCE_NAME_IO | - ASL_RDESC_IO_SIZE; - - /* Process all child initialization nodes */ - - for (i = 0; InitializerOp; i++) - { - switch (i) - { - case 0: /* Decode size */ - - RsSetFlagBits (&Descriptor->Io.Flags, InitializerOp, 0, 1); - RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Flags), 0); - break; - - case 1: /* Min Address */ - - Descriptor->Io.Minimum = - (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Minimum)); - break; - - case 2: /* Max Address */ - - Descriptor->Io.Maximum = - (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Maximum)); - break; - - case 3: /* Alignment */ - - Descriptor->Io.Alignment = - (UINT8) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_ALIGNMENT, - CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Alignment)); - break; - - case 4: /* Length */ - - Descriptor->Io.AddressLength = - (UINT8) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (Io.AddressLength)); - break; - - case 5: /* Name */ - - UtAttachNamepathToOwner (Op, InitializerOp); - break; - - default: - - AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); - break; - } - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoIrqDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a short "IRQ" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoIrqDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT32 Interrupts = 0; - UINT16 IrqMask = 0; - UINT32 i; - - - InitializerOp = Op->Asl.Child; - Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_IRQ)); - - /* Length = 3 (with flag byte) */ - - Descriptor = Rnode->Buffer; - Descriptor->Irq.DescriptorType = ACPI_RESOURCE_NAME_IRQ | - (ASL_RDESC_IRQ_SIZE + 0x01); - - /* Process all child initialization nodes */ - - for (i = 0; InitializerOp; i++) - { - switch (i) - { - case 0: /* Interrupt Type (or Mode - edge/level) */ - - RsSetFlagBits (&Descriptor->Irq.Flags, InitializerOp, 0, 1); - RsCreateBitField (InitializerOp, ACPI_RESTAG_INTERRUPTTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Irq.Flags), 0); - break; - - case 1: /* Interrupt Level (or Polarity - Active high/low) */ - - RsSetFlagBits (&Descriptor->Irq.Flags, InitializerOp, 3, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_INTERRUPTLEVEL, - CurrentByteOffset + ASL_RESDESC_OFFSET (Irq.Flags), 3); - break; - - case 2: /* Share Type - Default: exclusive (0) */ - - RsSetFlagBits (&Descriptor->Irq.Flags, InitializerOp, 4, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_INTERRUPTSHARE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Irq.Flags), 4); - break; - - case 3: /* Name */ - - UtAttachNamepathToOwner (Op, InitializerOp); - break; - - default: - - /* All IRQ bytes are handled here, after the flags and name */ - - if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) - { - /* Up to 16 interrupts can be specified in the list */ - - Interrupts++; - if (Interrupts > 16) - { - AslError (ASL_ERROR, ASL_MSG_INTERRUPT_LIST, - InitializerOp, NULL); - return (Rnode); - } - - /* Only interrupts 0-15 are allowed (mask is 16 bits) */ - - if (InitializerOp->Asl.Value.Integer > 15) - { - AslError (ASL_ERROR, ASL_MSG_INTERRUPT_NUMBER, - InitializerOp, NULL); - } - else - { - IrqMask |= (1 << (UINT8) InitializerOp->Asl.Value.Integer); - } - } - - /* Case 4: First IRQ value in list */ - - if (i == 4) - { - /* Check now for duplicates in list */ - - RsCheckListForDuplicates (InitializerOp); - - /* Create a named field at the start of the list */ - - RsCreateByteField (InitializerOp, ACPI_RESTAG_INTERRUPT, - CurrentByteOffset + ASL_RESDESC_OFFSET (Irq.IrqMask)); - } - break; - } - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - /* Now we can set the channel mask */ - - Descriptor->Irq.IrqMask = IrqMask; - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoIrqNoFlagsDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a short "IRQNoFlags" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoIrqNoFlagsDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT16 IrqMask = 0; - UINT32 Interrupts = 0; - UINT32 i; - - - InitializerOp = Op->Asl.Child; - Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_IRQ_NOFLAGS)); - - Descriptor = Rnode->Buffer; - Descriptor->Irq.DescriptorType = ACPI_RESOURCE_NAME_IRQ | - ASL_RDESC_IRQ_SIZE; - - /* Process all child initialization nodes */ - - for (i = 0; InitializerOp; i++) - { - switch (i) - { - case 0: /* Name */ - - UtAttachNamepathToOwner (Op, InitializerOp); - break; - - default: - - /* IRQ bytes are handled here, after the flags and name */ - - if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) - { - /* Up to 16 interrupts can be specified in the list */ - - Interrupts++; - if (Interrupts > 16) - { - AslError (ASL_ERROR, ASL_MSG_INTERRUPT_LIST, - InitializerOp, NULL); - return (Rnode); - } - - /* Only interrupts 0-15 are allowed (mask is 16 bits) */ - - if (InitializerOp->Asl.Value.Integer > 15) - { - AslError (ASL_ERROR, ASL_MSG_INTERRUPT_NUMBER, - InitializerOp, NULL); - } - else - { - IrqMask |= (1 << ((UINT8) InitializerOp->Asl.Value.Integer)); - } - } - - /* Case 1: First IRQ value in list */ - - if (i == 1) - { - /* Check now for duplicates in list */ - - RsCheckListForDuplicates (InitializerOp); - - /* Create a named field at the start of the list */ - - RsCreateByteField (InitializerOp, ACPI_RESTAG_INTERRUPT, - CurrentByteOffset + ASL_RESDESC_OFFSET (Irq.IrqMask)); - } - break; - } - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - /* Now we can set the interrupt mask */ - - Descriptor->Irq.IrqMask = IrqMask; - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoMemory24Descriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a short "Memory24" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoMemory24Descriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT32 i; - - - InitializerOp = Op->Asl.Child; - Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_MEMORY24)); - - Descriptor = Rnode->Buffer; - Descriptor->Memory24.DescriptorType = ACPI_RESOURCE_NAME_MEMORY24; - Descriptor->Memory24.ResourceLength = 9; - - /* Process all child initialization nodes */ - - for (i = 0; InitializerOp; i++) - { - switch (i) - { - case 0: /* Read/Write type */ - - RsSetFlagBits (&Descriptor->Memory24.Flags, InitializerOp, 0, 1); - RsCreateBitField (InitializerOp, ACPI_RESTAG_READWRITETYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Flags), 0); - break; - - case 1: /* Min Address */ - - Descriptor->Memory24.Minimum = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Minimum)); - break; - - case 2: /* Max Address */ - - Descriptor->Memory24.Maximum = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Maximum)); - break; - - case 3: /* Alignment */ - - Descriptor->Memory24.Alignment = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateByteField (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, - CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.AddressLength)); - break; - - case 5: /* Name */ - - UtAttachNamepathToOwner (Op, InitializerOp); - break; - - default: - - AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); - break; - } - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoMemory32Descriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a short "Memory32" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoMemory32Descriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT32 i; - - - InitializerOp = Op->Asl.Child; - Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_MEMORY32)); - - Descriptor = Rnode->Buffer; - Descriptor->Memory32.DescriptorType = ACPI_RESOURCE_NAME_MEMORY32; - Descriptor->Memory32.ResourceLength = 17; - - /* Process all child initialization nodes */ - - for (i = 0; InitializerOp; i++) - { - switch (i) - { - case 0: /* Read/Write type */ - - RsSetFlagBits (&Descriptor->Memory32.Flags, InitializerOp, 0, 1); - RsCreateBitField (InitializerOp, ACPI_RESTAG_READWRITETYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Flags), 0); - break; - - case 1: /* Min Address */ - - Descriptor->Memory32.Minimum = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Minimum)); - break; - - case 2: /* Max Address */ - - Descriptor->Memory32.Maximum = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Maximum)); - break; - - case 3: /* Alignment */ - - Descriptor->Memory32.Alignment = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_ALIGNMENT, - CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Alignment)); - break; - - case 4: /* Length */ - - Descriptor->Memory32.AddressLength = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.AddressLength)); - break; - - case 5: /* Name */ - - UtAttachNamepathToOwner (Op, InitializerOp); - break; - - default: - - AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); - break; - } - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoMemory32FixedDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a short "Memory32Fixed" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoMemory32FixedDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT32 i; - - - InitializerOp = Op->Asl.Child; - Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_FIXED_MEMORY32)); - - Descriptor = Rnode->Buffer; - Descriptor->FixedMemory32.DescriptorType = ACPI_RESOURCE_NAME_FIXED_MEMORY32; - Descriptor->FixedMemory32.ResourceLength = 9; - - /* Process all child initialization nodes */ - - for (i = 0; InitializerOp; i++) - { - switch (i) - { - case 0: /* Read/Write type */ - - RsSetFlagBits (&Descriptor->FixedMemory32.Flags, InitializerOp, 0, 1); - RsCreateBitField (InitializerOp, ACPI_RESTAG_READWRITETYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (FixedMemory32.Flags), 0); - break; - - case 1: /* Address */ - - Descriptor->FixedMemory32.Address = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateByteField (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, - CurrentByteOffset + ASL_RESDESC_OFFSET (FixedMemory32.AddressLength)); - break; - - case 3: /* Name */ - - UtAttachNamepathToOwner (Op, InitializerOp); - break; - - default: - - AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); - break; - } - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoStartDependentDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a short "StartDependentFn" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoStartDependentDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - ASL_RESOURCE_NODE *PreviousRnode; - ASL_RESOURCE_NODE *NextRnode; - UINT32 i; - UINT8 State; - - - InitializerOp = Op->Asl.Child; - Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_START_DEPENDENT)); - - PreviousRnode = Rnode; - Descriptor = Rnode->Buffer; - - /* Descriptor has priority byte */ - - Descriptor->StartDpf.DescriptorType = ACPI_RESOURCE_NAME_START_DEPENDENT | - (ASL_RDESC_ST_DEPEND_SIZE + 0x01); - - /* Process all child initialization nodes */ - - State = ACPI_RSTATE_START_DEPENDENT; - for (i = 0; InitializerOp; i++) - { - switch (i) - { - case 0: /* Compatibility Priority */ - - if ((UINT8) InitializerOp->Asl.Value.Integer > 2) - { - AslError (ASL_ERROR, ASL_MSG_INVALID_PRIORITY, - InitializerOp, NULL); - } - - RsSetFlagBits (&Descriptor->StartDpf.Flags, InitializerOp, 0, 0); - break; - - case 1: /* Performance/Robustness Priority */ - - if ((UINT8) InitializerOp->Asl.Value.Integer > 2) - { - AslError (ASL_ERROR, ASL_MSG_INVALID_PERFORMANCE, - InitializerOp, NULL); - } - - RsSetFlagBits (&Descriptor->StartDpf.Flags, InitializerOp, 2, 0); - break; - - default: - NextRnode = RsDoOneResourceDescriptor (InitializerOp, - CurrentByteOffset, &State); - - /* - * Update current byte offset to indicate the number of bytes from the - * start of the buffer. Buffer can include multiple descriptors, we - * must keep track of the offset of not only each descriptor, but each - * element (field) within each descriptor as well. - */ - - CurrentByteOffset += RsLinkDescriptorChain (&PreviousRnode, - NextRnode); - break; - } - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoStartDependentNoPriDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a short "StartDependentNoPri" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoStartDependentNoPriDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - ASL_RESOURCE_NODE *PreviousRnode; - ASL_RESOURCE_NODE *NextRnode; - UINT8 State; - - - InitializerOp = Op->Asl.Child; - Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_START_DEPENDENT_NOPRIO)); - - Descriptor = Rnode->Buffer; - Descriptor->StartDpf.DescriptorType = ACPI_RESOURCE_NAME_START_DEPENDENT | - ASL_RDESC_ST_DEPEND_SIZE; - PreviousRnode = Rnode; - - /* Process all child initialization nodes */ - - State = ACPI_RSTATE_START_DEPENDENT; - while (InitializerOp) - { - NextRnode = RsDoOneResourceDescriptor (InitializerOp, - CurrentByteOffset, &State); - - /* - * Update current byte offset to indicate the number of bytes from the - * start of the buffer. Buffer can include multiple descriptors, we - * must keep track of the offset of not only each descriptor, but each - * element (field) within each descriptor as well. - */ - CurrentByteOffset += RsLinkDescriptorChain (&PreviousRnode, NextRnode); - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoVendorSmallDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a short "VendorShort" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoVendorSmallDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT8 *VendorData; - UINT32 i; - - - InitializerOp = Op->Asl.Child; - - /* Allocate worst case - 7 vendor bytes */ - - Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_VENDOR_SMALL) + 7); - - Descriptor = Rnode->Buffer; - Descriptor->VendorSmall.DescriptorType = ACPI_RESOURCE_NAME_VENDOR_SMALL; - VendorData = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_SMALL_HEADER); - - /* Process all child initialization nodes */ - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - for (i = 0; InitializerOp; i++) - { - if (InitializerOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) - { - break; - } - - /* Maximum 7 vendor data bytes allowed (0-6) */ - - if (i >= 7) - { - AslError (ASL_ERROR, ASL_MSG_VENDOR_LIST, InitializerOp, NULL); - - /* Eat the excess initializers */ - - while (InitializerOp) - { - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - break; - } - - VendorData[i] = (UINT8) InitializerOp->Asl.Value.Integer; - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - /* Adjust the Rnode buffer size, so correct number of bytes are emitted */ - - Rnode->BufferLength -= (7 - i); - - /* Set the length in the Type Tag */ - - Descriptor->VendorSmall.DescriptorType |= (UINT8) i; - return (Rnode); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/aslrestype2.c b/sys/contrib/dev/acpica-unix-20061109/compiler/aslrestype2.c deleted file mode 100644 index 2467c9bcee..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/aslrestype2.c +++ /dev/null @@ -1,2842 +0,0 @@ - -/****************************************************************************** - * - * Module Name: aslrestype2 - Long (type2) resource templates and descriptors - * $Revision: 1.50 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "aslcompiler.h" -#include "aslcompiler.y.h" - -#define _COMPONENT ACPI_COMPILER - ACPI_MODULE_NAME ("aslrestype2") - -/* Local prototypes */ - -static UINT16 -RsGetStringDataLength ( - ACPI_PARSE_OBJECT *InitializerOp); - - -/******************************************************************************* - * - * FUNCTION: RsGetStringDataLength - * - * PARAMETERS: InitializerOp - Start of a subtree of init nodes - * - * RETURN: Valid string length if a string node is found (otherwise 0) - * - * DESCRIPTION: In a list of peer nodes, find the first one that contains a - * string and return the length of the string. - * - ******************************************************************************/ - -static UINT16 -RsGetStringDataLength ( - ACPI_PARSE_OBJECT *InitializerOp) -{ - - while (InitializerOp) - { - if (InitializerOp->Asl.ParseOpcode == PARSEOP_STRING_LITERAL) - { - return ((UINT16) (strlen (InitializerOp->Asl.Value.String) + 1)); - } - InitializerOp = ASL_GET_PEER_NODE (InitializerOp); - } - - return 0; -} - - -/******************************************************************************* - * - * FUNCTION: RsDoDwordIoDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a long "DwordIO" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoDwordIoDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT16 StringLength = 0; - UINT32 OptionIndex = 0; - UINT8 *OptionalFields; - UINT32 i; - BOOLEAN ResSourceIndex = FALSE; - - - InitializerOp = Op->Asl.Child; - StringLength = RsGetStringDataLength (InitializerOp); - - Rnode = RsAllocateResourceNode ( - sizeof (AML_RESOURCE_ADDRESS32) + 1 + StringLength); - - Descriptor = Rnode->Buffer; - Descriptor->Address32.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS32; - Descriptor->Address32.ResourceType = ACPI_ADDRESS_TYPE_IO_RANGE; - - /* - * Initial descriptor length -- may be enlarged if there are - * optional fields present - */ - OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS32); - Descriptor->Address32.ResourceLength = (UINT16) - (sizeof (AML_RESOURCE_ADDRESS32) - - sizeof (AML_RESOURCE_LARGE_HEADER)); - - /* Process all child initialization nodes */ - - for (i = 0; InitializerOp; i++) - { - switch (i) - { - case 0: /* Resource Usage */ - - RsSetFlagBits (&Descriptor->Address32.Flags, InitializerOp, 0, 1); - break; - - case 1: /* MinType */ - - RsSetFlagBits (&Descriptor->Address32.Flags, InitializerOp, 2, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Flags), 2); - break; - - case 2: /* MaxType */ - - RsSetFlagBits (&Descriptor->Address32.Flags, InitializerOp, 3, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Flags), 3); - break; - - case 3: /* DecodeType */ - - RsSetFlagBits (&Descriptor->Address32.Flags, InitializerOp, 1, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Flags), 1); - break; - - case 4: /* Range Type */ - - RsSetFlagBits (&Descriptor->Address32.SpecificFlags, InitializerOp, 0, 3); - RsCreateBitField (InitializerOp, ACPI_RESTAG_RANGETYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 0); - break; - - case 5: /* Address Granularity */ - - Descriptor->Address32.Granularity = - (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity)); - break; - - case 6: /* Address Min */ - - Descriptor->Address32.Minimum = - (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum)); - break; - - case 7: /* Address Max */ - - Descriptor->Address32.Maximum = - (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum)); - break; - - case 8: /* Translation Offset */ - - Descriptor->Address32.TranslationOffset = - (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset)); - break; - - case 9: /* Address Length */ - - Descriptor->Address32.AddressLength = - (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength)); - break; - - case 10: /* ResSourceIndex [Optional Field - BYTE] */ - - if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) - { - /* Found a valid ResourceSourceIndex */ - - OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; - OptionIndex++; - Descriptor->Address32.ResourceLength++; - ResSourceIndex = TRUE; - } - break; - - case 11: /* ResSource [Optional Field - STRING] */ - - if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && - (InitializerOp->Asl.Value.String)) - { - if (StringLength) - { - /* Found a valid ResourceSource */ - - Descriptor->Address32.ResourceLength = (UINT16) - (Descriptor->Address32.ResourceLength + StringLength); - - strcpy ((char *) - &OptionalFields[OptionIndex], - InitializerOp->Asl.Value.String); - - /* ResourceSourceIndex must also be valid */ - - if (!ResSourceIndex) - { - AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX, - InitializerOp, NULL); - } - } - } - -#if 0 - /* - * Not a valid ResourceSource, ResourceSourceIndex must also - * be invalid - */ - else if (ResSourceIndex) - { - AslError (ASL_ERROR, ASL_MSG_RESOURCE_SOURCE, - InitializerOp, NULL); - } -#endif - break; - - case 12: /* ResourceTag */ - - UtAttachNamepathToOwner (Op, InitializerOp); - break; - - case 13: /* Type */ - - RsSetFlagBits (&Descriptor->Address32.SpecificFlags, InitializerOp, 4, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_TYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 4); - break; - - case 14: /* Translation Type */ - - RsSetFlagBits (&Descriptor->Address32.SpecificFlags, InitializerOp, 5, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_TRANSTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 5); - break; - - default: - - AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); - break; - } - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS32) + - OptionIndex + StringLength; - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoDwordMemoryDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a long "DwordMemory" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoDwordMemoryDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT8 *OptionalFields; - UINT16 StringLength = 0; - UINT32 OptionIndex = 0; - UINT32 i; - BOOLEAN ResSourceIndex = FALSE; - - - InitializerOp = Op->Asl.Child; - StringLength = RsGetStringDataLength (InitializerOp); - - Rnode = RsAllocateResourceNode ( - sizeof (AML_RESOURCE_ADDRESS32) + 1 + StringLength); - - Descriptor = Rnode->Buffer; - Descriptor->Address32.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS32; - Descriptor->Address32.ResourceType = ACPI_ADDRESS_TYPE_MEMORY_RANGE; - - /* - * Initial descriptor length -- may be enlarged if there are - * optional fields present - */ - OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS32); - Descriptor->Address32.ResourceLength = (UINT16) - (sizeof (AML_RESOURCE_ADDRESS32) - - sizeof (AML_RESOURCE_LARGE_HEADER)); - - - /* Process all child initialization nodes */ - - for (i = 0; InitializerOp; i++) - { - switch (i) - { - case 0: /* Resource Usage */ - - RsSetFlagBits (&Descriptor->Address32.Flags, InitializerOp, 0, 1); - break; - - case 1: /* DecodeType */ - - RsSetFlagBits (&Descriptor->Address32.Flags, InitializerOp, 1, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Flags), 1); - break; - - case 2: /* MinType */ - - RsSetFlagBits (&Descriptor->Address32.Flags, InitializerOp, 2, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Flags), 2); - break; - - case 3: /* MaxType */ - - RsSetFlagBits (&Descriptor->Address32.Flags, InitializerOp, 3, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Flags), 3); - break; - - case 4: /* Memory Type */ - - RsSetFlagBits (&Descriptor->Address32.SpecificFlags, InitializerOp, 1, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MEMTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 1); - break; - - case 5: /* Read/Write Type */ - - RsSetFlagBits (&Descriptor->Address32.SpecificFlags, InitializerOp, 0, 1); - RsCreateBitField (InitializerOp, ACPI_RESTAG_READWRITETYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 0); - break; - - case 6: /* Address Granularity */ - - Descriptor->Address32.Granularity = - (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity)); - break; - - case 7: /* Min Address */ - - Descriptor->Address32.Minimum = - (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum)); - break; - - case 8: /* Max Address */ - - Descriptor->Address32.Maximum = - (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum)); - break; - - case 9: /* Translation Offset */ - - Descriptor->Address32.TranslationOffset = - (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset)); - break; - - case 10: /* Address Length */ - - Descriptor->Address32.AddressLength = - (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength)); - break; - - case 11: /* ResSourceIndex [Optional Field - BYTE] */ - - if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) - { - OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; - OptionIndex++; - Descriptor->Address32.ResourceLength++; - ResSourceIndex = TRUE; - } - break; - - case 12: /* ResSource [Optional Field - STRING] */ - - if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && - (InitializerOp->Asl.Value.String)) - { - if (StringLength) - { - Descriptor->Address32.ResourceLength = (UINT16) - (Descriptor->Address32.ResourceLength + StringLength); - - strcpy ((char *) - &OptionalFields[OptionIndex], - InitializerOp->Asl.Value.String); - - /* ResourceSourceIndex must also be valid */ - - if (!ResSourceIndex) - { - AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX, - InitializerOp, NULL); - } - } - } - -#if 0 - /* - * Not a valid ResourceSource, ResourceSourceIndex must also - * be invalid - */ - else if (ResSourceIndex) - { - AslError (ASL_ERROR, ASL_MSG_RESOURCE_SOURCE, - InitializerOp, NULL); - } -#endif - break; - - case 13: /* ResourceTag */ - - UtAttachNamepathToOwner (Op, InitializerOp); - break; - - - case 14: /* Address Range */ - - RsSetFlagBits (&Descriptor->Address32.SpecificFlags, InitializerOp, 3, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 3); - break; - - case 15: /* Type */ - - RsSetFlagBits (&Descriptor->Address32.SpecificFlags, InitializerOp, 5, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_TYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 5); - break; - - default: - - AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); - break; - } - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS32) + - OptionIndex + StringLength; - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoDwordSpaceDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a long "DwordSpace" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoDwordSpaceDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT8 *OptionalFields; - UINT16 StringLength = 0; - UINT32 OptionIndex = 0; - UINT32 i; - BOOLEAN ResSourceIndex = FALSE; - - - InitializerOp = Op->Asl.Child; - StringLength = RsGetStringDataLength (InitializerOp); - - Rnode = RsAllocateResourceNode ( - sizeof (AML_RESOURCE_ADDRESS32) + 1 + StringLength); - - Descriptor = Rnode->Buffer; - Descriptor->Address32.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS32; - - /* - * Initial descriptor length -- may be enlarged if there are - * optional fields present - */ - OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS32); - Descriptor->Address32.ResourceLength = (UINT16) - (sizeof (AML_RESOURCE_ADDRESS32) - - sizeof (AML_RESOURCE_LARGE_HEADER)); - - /* Process all child initialization nodes */ - - for (i = 0; InitializerOp; i++) - { - switch (i) - { - case 0: /* Resource Type */ - - Descriptor->Address32.ResourceType = - (UINT8) InitializerOp->Asl.Value.Integer; - break; - - case 1: /* Resource Usage */ - - RsSetFlagBits (&Descriptor->Address32.Flags, InitializerOp, 0, 1); - break; - - case 2: /* DecodeType */ - - RsSetFlagBits (&Descriptor->Address32.Flags, InitializerOp, 1, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Flags), 1); - break; - - case 3: /* MinType */ - - RsSetFlagBits (&Descriptor->Address32.Flags, InitializerOp, 2, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Flags), 2); - break; - - case 4: /* MaxType */ - - RsSetFlagBits (&Descriptor->Address32.Flags, InitializerOp, 3, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Flags), 3); - break; - - case 5: /* Type-Specific flags */ - - Descriptor->Address32.SpecificFlags = - (UINT8) InitializerOp->Asl.Value.Integer; - break; - - case 6: /* Address Granularity */ - - Descriptor->Address32.Granularity = - (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity)); - break; - - case 7: /* Min Address */ - - Descriptor->Address32.Minimum = - (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum)); - break; - - case 8: /* Max Address */ - - Descriptor->Address32.Maximum = - (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum)); - break; - - case 9: /* Translation Offset */ - - Descriptor->Address32.TranslationOffset = - (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset)); - break; - - case 10: /* Address Length */ - - Descriptor->Address32.AddressLength = - (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength)); - break; - - case 11: /* ResSourceIndex [Optional Field - BYTE] */ - - if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) - { - OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; - OptionIndex++; - Descriptor->Address32.ResourceLength++; - ResSourceIndex = TRUE; - } - break; - - case 12: /* ResSource [Optional Field - STRING] */ - - if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && - (InitializerOp->Asl.Value.String)) - { - if (StringLength) - { - Descriptor->Address32.ResourceLength = (UINT16) - (Descriptor->Address32.ResourceLength + StringLength); - - strcpy ((char *) - &OptionalFields[OptionIndex], - InitializerOp->Asl.Value.String); - - /* ResourceSourceIndex must also be valid */ - - if (!ResSourceIndex) - { - AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX, - InitializerOp, NULL); - } - } - } - -#if 0 - /* - * Not a valid ResourceSource, ResourceSourceIndex must also - * be invalid - */ - else if (ResSourceIndex) - { - AslError (ASL_ERROR, ASL_MSG_RESOURCE_SOURCE, - InitializerOp, NULL); - } -#endif - break; - - case 13: /* ResourceTag */ - - UtAttachNamepathToOwner (Op, InitializerOp); - break; - - default: - - AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, - InitializerOp, NULL); - break; - } - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS32) + - OptionIndex + StringLength; - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoExtendedIoDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a long "ExtendedIO" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoExtendedIoDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT16 StringLength = 0; - UINT32 i; - - - InitializerOp = Op->Asl.Child; - StringLength = RsGetStringDataLength (InitializerOp); - - Rnode = RsAllocateResourceNode ( - sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) + 1 + StringLength); - - Descriptor = Rnode->Buffer; - Descriptor->ExtAddress64.DescriptorType = ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64; - Descriptor->ExtAddress64.ResourceType = ACPI_ADDRESS_TYPE_IO_RANGE; - Descriptor->ExtAddress64.RevisionID = AML_RESOURCE_EXTENDED_ADDRESS_REVISION; - - Descriptor->ExtAddress64.ResourceLength = (UINT16) - (sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) - - sizeof (AML_RESOURCE_LARGE_HEADER)); - - /* Process all child initialization nodes */ - - for (i = 0; InitializerOp; i++) - { - switch (i) - { - case 0: /* Resource Usage */ - - RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 0, 1); - break; - - case 1: /* MinType */ - - RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 2, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 2); - break; - - case 2: /* MaxType */ - - RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 3, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 3); - break; - - case 3: /* DecodeType */ - - RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 1, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 1); - break; - - case 4: /* Range Type */ - - RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 0, 3); - RsCreateBitField (InitializerOp, ACPI_RESTAG_RANGETYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 0); - break; - - case 5: /* Address Granularity */ - - Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity)); - break; - - case 6: /* Address Min */ - - Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum)); - break; - - case 7: /* Address Max */ - - Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum)); - break; - - case 8: /* Translation Offset */ - - Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer; - RsCreateByteField (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, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength)); - break; - - case 10: /* Type-Specific Attributes */ - - Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific)); - break; - - case 11: /* ResourceTag */ - - UtAttachNamepathToOwner (Op, InitializerOp); - break; - - case 12: /* Type */ - - RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 4, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_TYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 4); - break; - - case 13: /* Translation Type */ - - RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 5, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_TRANSTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 5); - break; - - default: - - AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); - break; - } - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - Rnode->BufferLength = sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) + StringLength; - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoExtendedMemoryDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a long "ExtendedMemory" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoExtendedMemoryDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT16 StringLength = 0; - UINT32 i; - - - InitializerOp = Op->Asl.Child; - StringLength = RsGetStringDataLength (InitializerOp); - - Rnode = RsAllocateResourceNode ( - sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) + 1 + StringLength); - - Descriptor = Rnode->Buffer; - Descriptor->ExtAddress64.DescriptorType = ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64; - Descriptor->ExtAddress64.ResourceType = ACPI_ADDRESS_TYPE_MEMORY_RANGE; - Descriptor->ExtAddress64.RevisionID = AML_RESOURCE_EXTENDED_ADDRESS_REVISION; - - Descriptor->ExtAddress64.ResourceLength = (UINT16) - (sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) - - sizeof (AML_RESOURCE_LARGE_HEADER)); - - /* Process all child initialization nodes */ - - for (i = 0; InitializerOp; i++) - { - switch (i) - { - case 0: /* Resource Usage */ - - RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 0, 1); - break; - - case 1: /* DecodeType */ - - RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 1, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 1); - break; - - case 2: /* MinType */ - - RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 2, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 2); - break; - - case 3: /* MaxType */ - - RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 3, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 3); - break; - - case 4: /* Memory Type */ - - RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 1, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MEMTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 1); - break; - - case 5: /* Read/Write Type */ - - RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 0, 1); - RsCreateBitField (InitializerOp, ACPI_RESTAG_READWRITETYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 0); - break; - - case 6: /* Address Granularity */ - - Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity)); - break; - - case 7: /* Min Address */ - - Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum)); - break; - - case 8: /* Max Address */ - - Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum)); - break; - - case 9: /* Translation Offset */ - - Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer; - RsCreateByteField (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, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength)); - break; - - case 11: /* Type-Specific Attributes */ - - Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific)); - break; - - case 12: /* ResourceTag */ - - UtAttachNamepathToOwner (Op, InitializerOp); - break; - - - case 13: /* Address Range */ - - RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 3, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 3); - break; - - case 14: /* Type */ - - RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 5, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_TYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 5); - break; - - default: - - AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); - break; - } - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - Rnode->BufferLength = sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) + StringLength; - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoExtendedSpaceDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a long "ExtendedSpace" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoExtendedSpaceDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT16 StringLength = 0; - UINT32 i; - - - InitializerOp = Op->Asl.Child; - StringLength = RsGetStringDataLength (InitializerOp); - - Rnode = RsAllocateResourceNode ( - sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) + 1 + StringLength); - - Descriptor = Rnode->Buffer; - Descriptor->ExtAddress64.DescriptorType = ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64; - Descriptor->ExtAddress64.RevisionID = AML_RESOURCE_EXTENDED_ADDRESS_REVISION; - - Descriptor->ExtAddress64.ResourceLength = (UINT16) - (sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) - - sizeof (AML_RESOURCE_LARGE_HEADER)); - - /* Process all child initialization nodes */ - - for (i = 0; InitializerOp; i++) - { - switch (i) - { - case 0: /* Resource Type */ - - Descriptor->ExtAddress64.ResourceType = - (UINT8) InitializerOp->Asl.Value.Integer; - break; - - case 1: /* Resource Usage */ - - RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 0, 1); - break; - - case 2: /* DecodeType */ - - RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 1, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 1); - break; - - case 3: /* MinType */ - - RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 2, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 2); - break; - - case 4: /* MaxType */ - - RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 3, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 3); - break; - - case 5: /* Type-Specific flags */ - - Descriptor->ExtAddress64.SpecificFlags = - (UINT8) InitializerOp->Asl.Value.Integer; - break; - - case 6: /* Address Granularity */ - - Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity)); - break; - - case 7: /* Min Address */ - - Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum)); - break; - - case 8: /* Max Address */ - - Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum)); - break; - - case 9: /* Translation Offset */ - - Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer; - RsCreateByteField (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, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength)); - break; - - case 11: /* Type-Specific Attributes */ - - Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific)); - break; - - case 12: /* ResourceTag */ - - UtAttachNamepathToOwner (Op, InitializerOp); - break; - - default: - - AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); - break; - } - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - Rnode->BufferLength = sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) + StringLength; - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoQwordIoDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a long "QwordIO" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoQwordIoDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT8 *OptionalFields; - UINT16 StringLength = 0; - UINT32 OptionIndex = 0; - UINT32 i; - BOOLEAN ResSourceIndex = FALSE; - - - InitializerOp = Op->Asl.Child; - StringLength = RsGetStringDataLength (InitializerOp); - - Rnode = RsAllocateResourceNode ( - sizeof (AML_RESOURCE_ADDRESS64) + 1 + StringLength); - - Descriptor = Rnode->Buffer; - Descriptor->Address64.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS64; - Descriptor->Address64.ResourceType = ACPI_ADDRESS_TYPE_IO_RANGE; - - /* - * Initial descriptor length -- may be enlarged if there are - * optional fields present - */ - OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS64); - Descriptor->Address64.ResourceLength = (UINT16) - (sizeof (AML_RESOURCE_ADDRESS64) - - sizeof (AML_RESOURCE_LARGE_HEADER)); - - /* Process all child initialization nodes */ - - for (i = 0; InitializerOp; i++) - { - switch (i) - { - case 0: /* Resource Usage */ - - RsSetFlagBits (&Descriptor->Address64.Flags, InitializerOp, 0, 1); - break; - - case 1: /* MinType */ - - RsSetFlagBits (&Descriptor->Address64.Flags, InitializerOp, 2, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Flags), 2); - break; - - case 2: /* MaxType */ - - RsSetFlagBits (&Descriptor->Address64.Flags, InitializerOp, 3, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Flags), 3); - break; - - case 3: /* DecodeType */ - - RsSetFlagBits (&Descriptor->Address64.Flags, InitializerOp, 1, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Flags), 1); - break; - - case 4: /* Range Type */ - - RsSetFlagBits (&Descriptor->Address64.SpecificFlags, InitializerOp, 0, 3); - RsCreateBitField (InitializerOp, ACPI_RESTAG_RANGETYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 0); - break; - - case 5: /* Address Granularity */ - - Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity)); - break; - - case 6: /* Address Min */ - - Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum)); - break; - - case 7: /* Address Max */ - - Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum)); - break; - - case 8: /* Translation Offset */ - - Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.TranslationOffset)); - break; - - case 9: /* Address Length */ - - Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength)); - break; - - case 10: /* ResSourceIndex [Optional Field - BYTE] */ - - if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) - { - OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; - OptionIndex++; - Descriptor->Address64.ResourceLength++; - ResSourceIndex = TRUE; - } - break; - - case 11: /* ResSource [Optional Field - STRING] */ - - if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && - (InitializerOp->Asl.Value.String)) - { - if (StringLength) - { - Descriptor->Address64.ResourceLength = (UINT16) - (Descriptor->Address64.ResourceLength + StringLength); - - strcpy ((char *) - &OptionalFields[OptionIndex], - InitializerOp->Asl.Value.String); - - /* ResourceSourceIndex must also be valid */ - - if (!ResSourceIndex) - { - AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX, - InitializerOp, NULL); - } - } - } - -#if 0 - /* - * Not a valid ResourceSource, ResourceSourceIndex must also - * be invalid - */ - else if (ResSourceIndex) - { - AslError (ASL_ERROR, ASL_MSG_RESOURCE_SOURCE, - InitializerOp, NULL); - } -#endif - break; - - case 12: /* ResourceTag */ - - UtAttachNamepathToOwner (Op, InitializerOp); - break; - - case 13: /* Type */ - - RsSetFlagBits (&Descriptor->Address64.SpecificFlags, InitializerOp, 4, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_TYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 4); - break; - - case 14: /* Translation Type */ - - RsSetFlagBits (&Descriptor->Address64.SpecificFlags, InitializerOp, 5, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_TRANSTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 5); - break; - - default: - - AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); - break; - } - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS64) + - OptionIndex + StringLength; - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoQwordMemoryDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a long "QwordMemory" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoQwordMemoryDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT8 *OptionalFields; - UINT16 StringLength = 0; - UINT32 OptionIndex = 0; - UINT32 i; - BOOLEAN ResSourceIndex = FALSE; - - - InitializerOp = Op->Asl.Child; - StringLength = RsGetStringDataLength (InitializerOp); - - Rnode = RsAllocateResourceNode ( - sizeof (AML_RESOURCE_ADDRESS64) + 1 + StringLength); - - Descriptor = Rnode->Buffer; - Descriptor->Address64.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS64; - Descriptor->Address64.ResourceType = ACPI_ADDRESS_TYPE_MEMORY_RANGE; - - /* - * Initial descriptor length -- may be enlarged if there are - * optional fields present - */ - OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS64); - Descriptor->Address64.ResourceLength = (UINT16) - (sizeof (AML_RESOURCE_ADDRESS64) - - sizeof (AML_RESOURCE_LARGE_HEADER)); - - /* Process all child initialization nodes */ - - for (i = 0; InitializerOp; i++) - { - switch (i) - { - case 0: /* Resource Usage */ - - RsSetFlagBits (&Descriptor->Address64.Flags, InitializerOp, 0, 1); - break; - - case 1: /* DecodeType */ - - RsSetFlagBits (&Descriptor->Address64.Flags, InitializerOp, 1, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Flags), 1); - break; - - case 2: /* MinType */ - - RsSetFlagBits (&Descriptor->Address64.Flags, InitializerOp, 2, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Flags), 2); - break; - - case 3: /* MaxType */ - - RsSetFlagBits (&Descriptor->Address64.Flags, InitializerOp, 3, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Flags), 3); - break; - - case 4: /* Memory Type */ - - RsSetFlagBits (&Descriptor->Address64.SpecificFlags, InitializerOp, 1, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MEMTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 1); - break; - - case 5: /* Read/Write Type */ - - RsSetFlagBits (&Descriptor->Address64.SpecificFlags, InitializerOp, 0, 1); - RsCreateBitField (InitializerOp, ACPI_RESTAG_READWRITETYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 0); - break; - - case 6: /* Address Granularity */ - - Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity)); - break; - - case 7: /* Min Address */ - - Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum)); - break; - - case 8: /* Max Address */ - - Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum)); - break; - - case 9: /* Translation Offset */ - - Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer; - RsCreateByteField (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, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength)); - break; - - case 11: /* ResSourceIndex [Optional Field - BYTE] */ - - if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) - { - OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; - OptionIndex++; - Descriptor->Address64.ResourceLength++; - ResSourceIndex = TRUE; - } - break; - - case 12: /* ResSource [Optional Field - STRING] */ - - if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && - (InitializerOp->Asl.Value.String)) - { - if (StringLength) - { - Descriptor->Address64.ResourceLength = (UINT16) - (Descriptor->Address64.ResourceLength + StringLength); - - strcpy ((char *) - &OptionalFields[OptionIndex], - InitializerOp->Asl.Value.String); - - /* ResourceSourceIndex must also be valid */ - - if (!ResSourceIndex) - { - AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX, - InitializerOp, NULL); - } - } - } - -#if 0 - /* - * Not a valid ResourceSource, ResourceSourceIndex must also - * be invalid - */ - else if (ResSourceIndex) - { - AslError (ASL_ERROR, ASL_MSG_RESOURCE_SOURCE, - InitializerOp, NULL); - } -#endif - break; - - case 13: /* ResourceTag */ - - UtAttachNamepathToOwner (Op, InitializerOp); - break; - - - case 14: /* Address Range */ - - RsSetFlagBits (&Descriptor->Address64.SpecificFlags, InitializerOp, 3, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 3); - break; - - case 15: /* Type */ - - RsSetFlagBits (&Descriptor->Address64.SpecificFlags, InitializerOp, 5, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_TYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 5); - break; - - default: - - AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); - break; - } - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS64) + - OptionIndex + StringLength; - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoQwordSpaceDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a long "QwordSpace" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoQwordSpaceDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT8 *OptionalFields; - UINT16 StringLength = 0; - UINT32 OptionIndex = 0; - UINT32 i; - BOOLEAN ResSourceIndex = FALSE; - - - InitializerOp = Op->Asl.Child; - StringLength = RsGetStringDataLength (InitializerOp); - - Rnode = RsAllocateResourceNode ( - sizeof (AML_RESOURCE_ADDRESS64) + 1 + StringLength); - - Descriptor = Rnode->Buffer; - Descriptor->Address64.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS64; - - /* - * Initial descriptor length -- may be enlarged if there are - * optional fields present - */ - OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS64); - Descriptor->Address64.ResourceLength = (UINT16) - (sizeof (AML_RESOURCE_ADDRESS64) - - sizeof (AML_RESOURCE_LARGE_HEADER)); - - /* Process all child initialization nodes */ - - for (i = 0; InitializerOp; i++) - { - switch (i) - { - case 0: /* Resource Type */ - - Descriptor->Address64.ResourceType = - (UINT8) InitializerOp->Asl.Value.Integer; - break; - - case 1: /* Resource Usage */ - - RsSetFlagBits (&Descriptor->Address64.Flags, InitializerOp, 0, 1); - break; - - case 2: /* DecodeType */ - - RsSetFlagBits (&Descriptor->Address64.Flags, InitializerOp, 1, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Flags), 1); - break; - - case 3: /* MinType */ - - RsSetFlagBits (&Descriptor->Address64.Flags, InitializerOp, 2, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Flags), 2); - break; - - case 4: /* MaxType */ - - RsSetFlagBits (&Descriptor->Address64.Flags, InitializerOp, 3, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Flags), 3); - break; - - case 5: /* Type-Specific flags */ - - Descriptor->Address64.SpecificFlags = - (UINT8) InitializerOp->Asl.Value.Integer; - break; - - case 6: /* Address Granularity */ - - Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity)); - break; - - case 7: /* Min Address */ - - Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum)); - break; - - case 8: /* Max Address */ - - Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum)); - break; - - case 9: /* Translation Offset */ - - Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer; - RsCreateByteField (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, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength)); - break; - - case 11: /* ResSourceIndex [Optional Field - BYTE] */ - - if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) - { - OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; - OptionIndex++; - Descriptor->Address64.ResourceLength++; - ResSourceIndex = TRUE; - } - break; - - case 12: /* ResSource [Optional Field - STRING] */ - - if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && - (InitializerOp->Asl.Value.String)) - { - if (StringLength) - { - Descriptor->Address64.ResourceLength = (UINT16) - (Descriptor->Address64.ResourceLength + StringLength); - - strcpy ((char *) - &OptionalFields[OptionIndex], - InitializerOp->Asl.Value.String); - - /* ResourceSourceIndex must also be valid */ - - if (!ResSourceIndex) - { - AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX, - InitializerOp, NULL); - } - } - } - -#if 0 - /* - * Not a valid ResourceSource, ResourceSourceIndex must also - * be invalid - */ - else if (ResSourceIndex) - { - AslError (ASL_ERROR, ASL_MSG_RESOURCE_SOURCE, - InitializerOp, NULL); - } -#endif - break; - - case 13: /* ResourceTag */ - - UtAttachNamepathToOwner (Op, InitializerOp); - break; - - default: - - AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); - break; - } - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS64) + - OptionIndex + StringLength; - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoWordIoDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a long "WordIO" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoWordIoDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT8 *OptionalFields; - UINT16 StringLength = 0; - UINT32 OptionIndex = 0; - UINT32 i; - BOOLEAN ResSourceIndex = FALSE; - - - InitializerOp = Op->Asl.Child; - StringLength = RsGetStringDataLength (InitializerOp); - - Rnode = RsAllocateResourceNode ( - sizeof (AML_RESOURCE_ADDRESS16) + 1 + StringLength); - - Descriptor = Rnode->Buffer; - Descriptor->Address16.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS16; - Descriptor->Address16.ResourceType = ACPI_ADDRESS_TYPE_IO_RANGE; - - /* - * Initial descriptor length -- may be enlarged if there are - * optional fields present - */ - OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS16); - Descriptor->Address16.ResourceLength = (UINT16) - (sizeof (AML_RESOURCE_ADDRESS16) - - sizeof (AML_RESOURCE_LARGE_HEADER)); - - /* Process all child initialization nodes */ - - for (i = 0; InitializerOp; i++) - { - switch (i) - { - case 0: /* Resource Usage */ - - RsSetFlagBits (&Descriptor->Address16.Flags, InitializerOp, 0, 1); - break; - - case 1: /* MinType */ - - RsSetFlagBits (&Descriptor->Address16.Flags, InitializerOp, 2, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Flags), 2); - break; - - case 2: /* MaxType */ - - RsSetFlagBits (&Descriptor->Address16.Flags, InitializerOp, 3, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Flags), 3); - break; - - case 3: /* DecodeType */ - - RsSetFlagBits (&Descriptor->Address16.Flags, InitializerOp, 1, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Flags), 1); - break; - - case 4: /* Range Type */ - - RsSetFlagBits (&Descriptor->Address16.SpecificFlags, InitializerOp, 0, 3); - RsCreateBitField (InitializerOp, ACPI_RESTAG_RANGETYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.SpecificFlags), 0); - break; - - case 5: /* Address Granularity */ - - Descriptor->Address16.Granularity = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity)); - break; - - case 6: /* Address Min */ - - Descriptor->Address16.Minimum = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum)); - break; - - case 7: /* Address Max */ - - Descriptor->Address16.Maximum = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum)); - break; - - case 8: /* Translation Offset */ - - Descriptor->Address16.TranslationOffset = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateByteField (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, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength)); - break; - - case 10: /* ResSourceIndex [Optional Field - BYTE] */ - - if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) - { - OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; - OptionIndex++; - Descriptor->Address16.ResourceLength++; - ResSourceIndex = TRUE; - } - break; - - case 11: /* ResSource [Optional Field - STRING] */ - - if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && - (InitializerOp->Asl.Value.String)) - { - if (StringLength) - { - Descriptor->Address16.ResourceLength = (UINT16) - (Descriptor->Address16.ResourceLength + StringLength); - - strcpy ((char *) - &OptionalFields[OptionIndex], - InitializerOp->Asl.Value.String); - - /* ResourceSourceIndex must also be valid */ - - if (!ResSourceIndex) - { - AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX, - InitializerOp, NULL); - } - } - } - -#if 0 - /* - * Not a valid ResourceSource, ResourceSourceIndex must also - * be invalid - */ - else if (ResSourceIndex) - { - AslError (ASL_ERROR, ASL_MSG_RESOURCE_SOURCE, - InitializerOp, NULL); - } -#endif - break; - - case 12: /* ResourceTag */ - - UtAttachNamepathToOwner (Op, InitializerOp); - break; - - case 13: /* Type */ - - RsSetFlagBits (&Descriptor->Address16.SpecificFlags, InitializerOp, 4, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_TYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.SpecificFlags), 4); - break; - - case 14: /* Translation Type */ - - RsSetFlagBits (&Descriptor->Address16.SpecificFlags, InitializerOp, 5, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_TRANSTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.SpecificFlags), 5); - break; - - default: - - AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); - break; - } - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS16) + - OptionIndex + StringLength; - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoWordBusNumberDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a long "WordBusNumber" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoWordBusNumberDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT8 *OptionalFields; - UINT16 StringLength = 0; - UINT32 OptionIndex = 0; - UINT32 i; - BOOLEAN ResSourceIndex = FALSE; - - - InitializerOp = Op->Asl.Child; - StringLength = RsGetStringDataLength (InitializerOp); - - Rnode = RsAllocateResourceNode ( - sizeof (AML_RESOURCE_ADDRESS16) + 1 + StringLength); - - Descriptor = Rnode->Buffer; - Descriptor->Address16.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS16; - Descriptor->Address16.ResourceType = ACPI_ADDRESS_TYPE_BUS_NUMBER_RANGE; - - /* - * Initial descriptor length -- may be enlarged if there are - * optional fields present - */ - OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS16); - Descriptor->Address16.ResourceLength = (UINT16) - (sizeof (AML_RESOURCE_ADDRESS16) - - sizeof (AML_RESOURCE_LARGE_HEADER)); - - /* Process all child initialization nodes */ - - for (i = 0; InitializerOp; i++) - { - switch (i) - { - case 0: /* Resource Usage */ - - RsSetFlagBits (&Descriptor->Address16.Flags, InitializerOp, 0, 1); - break; - - case 1: /* MinType */ - - RsSetFlagBits (&Descriptor->Address16.Flags, InitializerOp, 2, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Flags), 2); - break; - - case 2: /* MaxType */ - - RsSetFlagBits (&Descriptor->Address16.Flags, InitializerOp, 3, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Flags), 3); - break; - - case 3: /* DecodeType */ - - RsSetFlagBits (&Descriptor->Address16.Flags, InitializerOp, 1, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Flags), 1); - break; - - case 4: /* Address Granularity */ - - Descriptor->Address16.Granularity = - (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity)); - break; - - case 5: /* Min Address */ - - Descriptor->Address16.Minimum = - (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum)); - break; - - case 6: /* Max Address */ - - Descriptor->Address16.Maximum = - (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum)); - break; - - case 7: /* Translation Offset */ - - Descriptor->Address16.TranslationOffset = - (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset)); - break; - - case 8: /* Address Length */ - - Descriptor->Address16.AddressLength = - (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength)); - break; - - case 9: /* ResSourceIndex [Optional Field - BYTE] */ - - if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) - { - OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; - OptionIndex++; - Descriptor->Address16.ResourceLength++; - ResSourceIndex = TRUE; - } - break; - - case 10: /* ResSource [Optional Field - STRING] */ - - if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && - (InitializerOp->Asl.Value.String)) - { - if (StringLength) - { - Descriptor->Address16.ResourceLength = (UINT16) - (Descriptor->Address16.ResourceLength + StringLength); - - strcpy ((char *) - &OptionalFields[OptionIndex], - InitializerOp->Asl.Value.String); - - /* ResourceSourceIndex must also be valid */ - - if (!ResSourceIndex) - { - AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX, - InitializerOp, NULL); - } - } - } - -#if 0 - /* - * Not a valid ResourceSource, ResourceSourceIndex must also - * be invalid - */ - else if (ResSourceIndex) - { - AslError (ASL_ERROR, ASL_MSG_RESOURCE_SOURCE, - InitializerOp, NULL); - } -#endif - break; - - case 11: /* ResourceTag */ - - UtAttachNamepathToOwner (Op, InitializerOp); - break; - - default: - - AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); - break; - } - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS16) + - OptionIndex + StringLength; - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoWordSpaceDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a long "WordSpace" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoWordSpaceDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT8 *OptionalFields; - UINT16 StringLength = 0; - UINT32 OptionIndex = 0; - UINT32 i; - BOOLEAN ResSourceIndex = FALSE; - - - InitializerOp = Op->Asl.Child; - StringLength = RsGetStringDataLength (InitializerOp); - - Rnode = RsAllocateResourceNode ( - sizeof (AML_RESOURCE_ADDRESS16) + 1 + StringLength); - - Descriptor = Rnode->Buffer; - Descriptor->Address16.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS16; - - /* - * Initial descriptor length -- may be enlarged if there are - * optional fields present - */ - OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS16); - Descriptor->Address16.ResourceLength = (UINT16) - (sizeof (AML_RESOURCE_ADDRESS16) - - sizeof (AML_RESOURCE_LARGE_HEADER)); - - /* Process all child initialization nodes */ - - for (i = 0; InitializerOp; i++) - { - switch (i) - { - case 0: /* Resource Type */ - - Descriptor->Address16.ResourceType = - (UINT8) InitializerOp->Asl.Value.Integer; - break; - - case 1: /* Resource Usage */ - - RsSetFlagBits (&Descriptor->Address16.Flags, InitializerOp, 0, 1); - break; - - case 2: /* DecodeType */ - - RsSetFlagBits (&Descriptor->Address16.Flags, InitializerOp, 1, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Flags), 1); - break; - - case 3: /* MinType */ - - RsSetFlagBits (&Descriptor->Address16.Flags, InitializerOp, 2, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Flags), 2); - break; - - case 4: /* MaxType */ - - RsSetFlagBits (&Descriptor->Address16.Flags, InitializerOp, 3, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Flags), 3); - break; - - case 5: /* Type-Specific flags */ - - Descriptor->Address16.SpecificFlags = - (UINT8) InitializerOp->Asl.Value.Integer; - break; - - case 6: /* Address Granularity */ - - Descriptor->Address16.Granularity = - (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity)); - break; - - case 7: /* Min Address */ - - Descriptor->Address16.Minimum = - (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum)); - break; - - case 8: /* Max Address */ - - Descriptor->Address16.Maximum = - (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum)); - break; - - case 9: /* Translation Offset */ - - Descriptor->Address16.TranslationOffset = - (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset)); - break; - - case 10: /* Address Length */ - - Descriptor->Address16.AddressLength = - (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength)); - break; - - case 11: /* ResSourceIndex [Optional Field - BYTE] */ - - if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) - { - OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; - OptionIndex++; - Descriptor->Address16.ResourceLength++; - ResSourceIndex = TRUE; - } - break; - - case 12: /* ResSource [Optional Field - STRING] */ - - if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && - (InitializerOp->Asl.Value.String)) - { - if (StringLength) - { - Descriptor->Address16.ResourceLength = (UINT16) - (Descriptor->Address16.ResourceLength + StringLength); - - strcpy ((char *) - &OptionalFields[OptionIndex], - InitializerOp->Asl.Value.String); - - /* ResourceSourceIndex must also be valid */ - - if (!ResSourceIndex) - { - AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX, - InitializerOp, NULL); - } - } - } - -#if 0 - /* - * Not a valid ResourceSource, ResourceSourceIndex must also - * be invalid - */ - else if (ResSourceIndex) - { - AslError (ASL_ERROR, ASL_MSG_RESOURCE_SOURCE, - InitializerOp, NULL); - } -#endif - break; - - case 13: /* ResourceTag */ - - UtAttachNamepathToOwner (Op, InitializerOp); - break; - - default: - - AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); - break; - } - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS16) + - OptionIndex + StringLength; - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoInterruptDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a long "Interrupt" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoInterruptDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - AML_RESOURCE *Rover = NULL; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT16 StringLength = 0; - UINT32 OptionIndex = 0; - UINT32 i; - BOOLEAN HasResSourceIndex = FALSE; - UINT8 ResSourceIndex = 0; - UINT8 *ResSourceString = NULL; - - - InitializerOp = Op->Asl.Child; - StringLength = RsGetStringDataLength (InitializerOp); - if (StringLength) - { - /* Make room for the ResourceSourceIndex */ - - OptionIndex++; - } - - /* Count the interrupt numbers */ - - for (i = 0; InitializerOp; i++) - { - InitializerOp = ASL_GET_PEER_NODE (InitializerOp); - if (i <= 6) - { - continue; - } - - OptionIndex += 4; - } - - InitializerOp = Op->Asl.Child; - Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_EXTENDED_IRQ) + - 1 + OptionIndex + StringLength); - - Descriptor = Rnode->Buffer; - Descriptor->ExtendedIrq.DescriptorType = ACPI_RESOURCE_NAME_EXTENDED_IRQ; - - /* - * Initial descriptor length -- may be enlarged if there are - * optional fields present - */ - Descriptor->ExtendedIrq.ResourceLength = 2; /* Flags and table length byte */ - Descriptor->ExtendedIrq.InterruptCount = 0; - - Rover = ACPI_CAST_PTR (AML_RESOURCE, - (&(Descriptor->ExtendedIrq.Interrupts[0]))); - - /* Process all child initialization nodes */ - - for (i = 0; InitializerOp; i++) - { - switch (i) - { - case 0: /* Resource Usage (Default: consumer (1) */ - - RsSetFlagBits (&Descriptor->ExtendedIrq.Flags, InitializerOp, 0, 1); - break; - - case 1: /* Interrupt Type (or Mode - edge/level) */ - - RsSetFlagBits (&Descriptor->ExtendedIrq.Flags, InitializerOp, 1, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_INTERRUPTTYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtendedIrq.Flags), 1); - break; - - case 2: /* Interrupt Level (or Polarity - Active high/low) */ - - RsSetFlagBits (&Descriptor->ExtendedIrq.Flags, InitializerOp, 2, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_INTERRUPTLEVEL, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtendedIrq.Flags), 2); - break; - - case 3: /* Share Type - Default: exclusive (0) */ - - RsSetFlagBits (&Descriptor->ExtendedIrq.Flags, InitializerOp, 3, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_INTERRUPTSHARE, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtendedIrq.Flags), 3); - break; - - case 4: /* ResSourceIndex [Optional Field - BYTE] */ - - if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) - { - HasResSourceIndex = TRUE; - ResSourceIndex = (UINT8) InitializerOp->Asl.Value.Integer; - } - break; - - case 5: /* ResSource [Optional Field - STRING] */ - - if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && - (InitializerOp->Asl.Value.String)) - { - if (StringLength) - { - ResSourceString = (UINT8 *) InitializerOp->Asl.Value.String; - } - - /* ResourceSourceIndex must also be valid */ - - if (!HasResSourceIndex) - { - AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX, - InitializerOp, NULL); - } - } - -#if 0 - /* - * Not a valid ResourceSource, ResourceSourceIndex must also - * be invalid - */ - else if (HasResSourceIndex) - { - AslError (ASL_ERROR, ASL_MSG_RESOURCE_SOURCE, - InitializerOp, NULL); - } -#endif - break; - - case 6: /* ResourceTag */ - - UtAttachNamepathToOwner (Op, InitializerOp); - break; - - default: - /* - * Interrupt Numbers come through here, repeatedly - */ - - /* Maximum 255 interrupts allowed for this descriptor */ - - if (Descriptor->ExtendedIrq.InterruptCount == 255) - { - AslError (ASL_ERROR, ASL_MSG_EX_INTERRUPT_LIST, - InitializerOp, NULL); - return (Rnode); - } - - /* Each interrupt number must be a 32-bit value */ - - if (InitializerOp->Asl.Value.Integer > ACPI_UINT32_MAX) - { - AslError (ASL_ERROR, ASL_MSG_EX_INTERRUPT_NUMBER, - InitializerOp, NULL); - } - - /* Save the integer and move pointer to the next one */ - - Rover->DwordItem = (UINT32) InitializerOp->Asl.Value.Integer; - Rover = ACPI_ADD_PTR (AML_RESOURCE, &(Rover->DwordItem), 4); - Descriptor->ExtendedIrq.InterruptCount++; - Descriptor->ExtendedIrq.ResourceLength += 4; - - /* Case 7: First interrupt number in list */ - - if (i == 7) - { - /* Check now for duplicates in list */ - - RsCheckListForDuplicates (InitializerOp); - - /* Create a named field at the start of the list */ - - RsCreateByteField (InitializerOp, ACPI_RESTAG_INTERRUPT, - CurrentByteOffset + - ASL_RESDESC_OFFSET (ExtendedIrq.Interrupts[0])); - } - } - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - - /* Add optional ResSourceIndex if present */ - - if (HasResSourceIndex) - { - Rover->ByteItem = ResSourceIndex; - Rover = ACPI_ADD_PTR (AML_RESOURCE, &(Rover->ByteItem), 1); - Descriptor->ExtendedIrq.ResourceLength += 1; - } - - /* Add optional ResSource string if present */ - - if (StringLength && ResSourceString) - { - - strcpy ((char *) Rover, (char *) ResSourceString); - Rover = ACPI_ADD_PTR ( - AML_RESOURCE, &(Rover->ByteItem), StringLength); - - Descriptor->ExtendedIrq.ResourceLength = (UINT16) - (Descriptor->ExtendedIrq.ResourceLength + StringLength); - } - - Rnode->BufferLength = (ASL_RESDESC_OFFSET (ExtendedIrq.Interrupts[0]) - - ASL_RESDESC_OFFSET (ExtendedIrq.DescriptorType)) - + OptionIndex + StringLength; - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoVendorLargeDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a long "VendorLong" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoVendorLargeDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT8 *VendorData; - UINT32 i; - - - /* Count the number of data bytes */ - - InitializerOp = Op->Asl.Child; - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - - for (i = 0; InitializerOp; i++) - { - if (InitializerOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) - { - break; - } - InitializerOp = InitializerOp->Asl.Next; - } - - InitializerOp = Op->Asl.Child; - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_VENDOR_LARGE) + i); - - Descriptor = Rnode->Buffer; - Descriptor->VendorLarge.DescriptorType = ACPI_RESOURCE_NAME_VENDOR_LARGE; - Descriptor->VendorLarge.ResourceLength = (UINT16) i; - - /* Point to end-of-descriptor for vendor data */ - - VendorData = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_LARGE_HEADER); - - /* Process all child initialization nodes */ - - for (i = 0; InitializerOp; i++) - { - if (InitializerOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) - { - break; - } - - VendorData[i] = (UINT8) InitializerOp->Asl.Value.Integer; - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - - return (Rnode); -} - - -/******************************************************************************* - * - * FUNCTION: RsDoGeneralRegisterDescriptor - * - * PARAMETERS: Op - Parent resource descriptor parse node - * CurrentByteOffset - Offset into the resource template AML - * buffer (to track references to the desc) - * - * RETURN: Completed resource node - * - * DESCRIPTION: Construct a long "Register" descriptor - * - ******************************************************************************/ - -ASL_RESOURCE_NODE * -RsDoGeneralRegisterDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset) -{ - AML_RESOURCE *Descriptor; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT32 i; - - - InitializerOp = Op->Asl.Child; - Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_GENERIC_REGISTER)); - - Descriptor = Rnode->Buffer; - Descriptor->GenericReg.DescriptorType = ACPI_RESOURCE_NAME_GENERIC_REGISTER; - Descriptor->GenericReg.ResourceLength = 12; - - /* Process all child initialization nodes */ - - for (i = 0; InitializerOp; i++) - { - switch (i) - { - case 0: /* Address space */ - - Descriptor->GenericReg.AddressSpaceId = (UINT8) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_ADDRESSSPACE, - CurrentByteOffset + ASL_RESDESC_OFFSET (GenericReg.AddressSpaceId)); - break; - - case 1: /* Register Bit Width */ - - Descriptor->GenericReg.BitWidth = (UINT8) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_REGISTERBITWIDTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (GenericReg.BitWidth)); - break; - - case 2: /* Register Bit Offset */ - - Descriptor->GenericReg.BitOffset = (UINT8) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_REGISTERBITOFFSET, - CurrentByteOffset + ASL_RESDESC_OFFSET (GenericReg.BitOffset)); - break; - - case 3: /* Register Address */ - - Descriptor->GenericReg.Address = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_ADDRESS, - CurrentByteOffset + ASL_RESDESC_OFFSET (GenericReg.Address)); - break; - - case 4: /* Access Size (ACPI 3.0) */ - - Descriptor->GenericReg.AccessSize = (UINT8) InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_ACCESSSIZE, - CurrentByteOffset + ASL_RESDESC_OFFSET (GenericReg.AccessSize)); - break; - - case 5: /* ResourceTag (ACPI 3.0b) */ - - UtAttachNamepathToOwner (Op, InitializerOp); - break; - - default: - - AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); - break; - } - - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - return (Rnode); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/aslstubs.c b/sys/contrib/dev/acpica-unix-20061109/compiler/aslstubs.c deleted file mode 100644 index 3ec4ab736b..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/aslstubs.c +++ /dev/null @@ -1,280 +0,0 @@ - -/****************************************************************************** - * - * Module Name: aslstubs - Stubs used to link to Aml interpreter - * $Revision: 1.19 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include -#include "aslcompiler.h" -#include "acdispat.h" -#include "actables.h" - -#define _COMPONENT ACPI_COMPILER - ACPI_MODULE_NAME ("aslstubs") - - -/* - * Stubs to simplify linkage to the ACPI CA core subsystem. - * Things like Events, Global Lock, etc. are not used - * by the compiler, so they are stubbed out here. - */ -ACPI_PHYSICAL_ADDRESS -AeLocalGetRootPointer ( - void) -{ - return 0; -} - -ACPI_STATUS -AcpiDsMethodError ( - ACPI_STATUS Status, - ACPI_WALK_STATE *WalkState) -{ - return (Status); -} - -ACPI_STATUS -AcpiDsMethodDataGetValue ( - UINT16 Opcode, - UINT32 Index, - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT **DestDesc) -{ - return (AE_OK); -} - -ACPI_STATUS -AcpiDsMethodDataGetNode ( - UINT16 Opcode, - UINT32 Index, - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE **Node) -{ - return (AE_OK); -} - -ACPI_STATUS -AcpiDsStoreObjectToLocal ( - UINT16 Opcode, - UINT32 Index, - ACPI_OPERAND_OBJECT *SrcDesc, - ACPI_WALK_STATE *WalkState) -{ - return (AE_OK); -} - -ACPI_STATUS -AcpiEvDeleteGpeBlock ( - ACPI_GPE_BLOCK_INFO *GpeBlock) -{ - return (AE_OK); -} - -ACPI_STATUS -AcpiEvQueueNotifyRequest ( - ACPI_NAMESPACE_NODE *Node, - UINT32 NotifyValue) -{ - return (AE_OK); -} - -BOOLEAN -AcpiEvIsNotifyObject ( - ACPI_NAMESPACE_NODE *Node) -{ - return (FALSE); -} - -ACPI_STATUS -AcpiEvAcquireGlobalLock( - UINT32 Timeout) -{ - return (AE_OK); -} - -ACPI_STATUS -AcpiEvReleaseGlobalLock( - void) -{ - return (AE_OK); -} - -ACPI_STATUS -AcpiEvInitializeRegion ( - ACPI_OPERAND_OBJECT *RegionObj, - BOOLEAN AcpiNsLocked) -{ - return (AE_OK); -} - -ACPI_STATUS -AcpiEvCheckForWakeOnlyGpe ( - ACPI_GPE_EVENT_INFO *GpeEventInfo) -{ - return (AE_OK); -} - -ACPI_STATUS -AcpiExReadDataFromField ( - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT **RetBufferDesc) -{ - return (AE_SUPPORT); -} - -ACPI_STATUS -AcpiExWriteDataToField ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT **ResultDesc) -{ - return (AE_SUPPORT); -} - -ACPI_STATUS -AcpiExLoadTableOp ( - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT **ReturnDesc) -{ - return (AE_SUPPORT); -} - - -ACPI_STATUS -AcpiExUnloadTable ( - ACPI_OPERAND_OBJECT *DdbHandle) -{ - return (AE_SUPPORT); -} - -ACPI_STATUS -AcpiExLoadOp ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT *Target, - ACPI_WALK_STATE *WalkState) -{ - return (AE_SUPPORT); -} - -ACPI_STATUS -AcpiTbFindTable ( - char *Signature, - char *OemId, - char *OemTableId, - ACPI_NATIVE_UINT *TableIndex) -{ - return (AE_SUPPORT); -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/asltransform.c b/sys/contrib/dev/acpica-unix-20061109/compiler/asltransform.c deleted file mode 100644 index 4976c9dbba..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/asltransform.c +++ /dev/null @@ -1,806 +0,0 @@ - -/****************************************************************************** - * - * Module Name: asltransform - Parse tree transforms - * $Revision: 1.41 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "aslcompiler.h" -#include "aslcompiler.y.h" - -#define _COMPONENT ACPI_COMPILER - ACPI_MODULE_NAME ("asltransform") - -/* Local prototypes */ - -static void -TrTransformSubtree ( - ACPI_PARSE_OBJECT *Op); - -static char * -TrAmlGetNextTempName ( - ACPI_PARSE_OBJECT *Op, - UINT8 *TempCount); - -static void -TrAmlInitLineNumbers ( - ACPI_PARSE_OBJECT *Op, - ACPI_PARSE_OBJECT *Neighbor); - -static void -TrAmlInitNode ( - ACPI_PARSE_OBJECT *Op, - UINT16 ParseOpcode); - -static void -TrAmlSetSubtreeParent ( - ACPI_PARSE_OBJECT *Op, - ACPI_PARSE_OBJECT *Parent); - -static void -TrAmlInsertPeer ( - ACPI_PARSE_OBJECT *Op, - ACPI_PARSE_OBJECT *NewPeer); - -static void -TrDoDefinitionBlock ( - ACPI_PARSE_OBJECT *Op); - -static void -TrDoSwitch ( - ACPI_PARSE_OBJECT *StartNode); - - -/******************************************************************************* - * - * FUNCTION: TrAmlGetNextTempName - * - * PARAMETERS: Op - Current parse op - * TempCount - Current temporary counter. Was originally - * per-module; Currently per method, could be - * expanded to per-scope. - * - * RETURN: A pointer to name (allocated here). - * - * DESCRIPTION: Generate an ACPI name of the form _T_x. These names are - * reserved for use by the ASL compiler. (_T_0 through _T_Z) - * - ******************************************************************************/ - -static char * -TrAmlGetNextTempName ( - ACPI_PARSE_OBJECT *Op, - UINT8 *TempCount) -{ - char *TempName; - - - if (*TempCount >= (10+26)) /* 0-35 valid: 0-9 and A-Z for TempName[3] */ - { - /* Too many temps */ - - AslError (ASL_ERROR, ASL_MSG_TOO_MANY_TEMPS, Op, NULL); - return (NULL); - } - - TempName = UtLocalCalloc (5); - - if (*TempCount < 10) /* 0-9 */ - { - TempName[3] = (char) (*TempCount + '0'); - } - else /* 10-35: A-Z */ - { - TempName[3] = (char) (*TempCount + ('A' - 10)); - } - (*TempCount)++; - - /* First three characters are always "_T_" */ - - TempName[0] = '_'; - TempName[1] = 'T'; - TempName[2] = '_'; - - return (TempName); -} - - -/******************************************************************************* - * - * FUNCTION: TrAmlInitLineNumbers - * - * PARAMETERS: Op - Op to be initialized - * Neighbor - Op used for initialization values - * - * RETURN: None - * - * DESCRIPTION: Initialized the various line numbers for a parse node. - * - ******************************************************************************/ - -static void -TrAmlInitLineNumbers ( - ACPI_PARSE_OBJECT *Op, - ACPI_PARSE_OBJECT *Neighbor) -{ - - Op->Asl.EndLine = Neighbor->Asl.EndLine; - Op->Asl.EndLogicalLine = Neighbor->Asl.EndLogicalLine; - Op->Asl.LineNumber = Neighbor->Asl.LineNumber; - Op->Asl.LogicalByteOffset = Neighbor->Asl.LogicalByteOffset; - Op->Asl.LogicalLineNumber = Neighbor->Asl.LogicalLineNumber; -} - - -/******************************************************************************* - * - * FUNCTION: TrAmlInitNode - * - * PARAMETERS: Op - Op to be initialized - * ParseOpcode - Opcode for this node - * - * RETURN: None - * - * DESCRIPTION: Initialize a node with the parse opcode and opcode name. - * - ******************************************************************************/ - -static void -TrAmlInitNode ( - ACPI_PARSE_OBJECT *Op, - UINT16 ParseOpcode) -{ - - Op->Asl.ParseOpcode = ParseOpcode; - UtSetParseOpName (Op); -} - - -/******************************************************************************* - * - * FUNCTION: TrAmlSetSubtreeParent - * - * PARAMETERS: Op - First node in a list of peer nodes - * Parent - Parent of the subtree - * - * RETURN: None - * - * DESCRIPTION: Set the parent for all peer nodes in a subtree - * - ******************************************************************************/ - -static void -TrAmlSetSubtreeParent ( - ACPI_PARSE_OBJECT *Op, - ACPI_PARSE_OBJECT *Parent) -{ - ACPI_PARSE_OBJECT *Next; - - - Next = Op; - while (Next) - { - Next->Asl.Parent = Parent; - Next = Next->Asl.Next; - } -} - - -/******************************************************************************* - * - * FUNCTION: TrAmlInsertPeer - * - * PARAMETERS: Op - First node in a list of peer nodes - * NewPeer - Peer node to insert - * - * RETURN: None - * - * DESCRIPTION: Insert a new peer node into a list of peers. - * - ******************************************************************************/ - -static void -TrAmlInsertPeer ( - ACPI_PARSE_OBJECT *Op, - ACPI_PARSE_OBJECT *NewPeer) -{ - - NewPeer->Asl.Next = Op->Asl.Next; - Op->Asl.Next = NewPeer; -} - - -/******************************************************************************* - * - * FUNCTION: TrAmlTransformWalk - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: None - * - * DESCRIPTION: Parse tree walk to generate both the AML opcodes and the AML - * operands. - * - ******************************************************************************/ - -ACPI_STATUS -TrAmlTransformWalk ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - - TrTransformSubtree (Op); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: TrTransformSubtree - * - * PARAMETERS: Op - The parent parse node - * - * RETURN: None - * - * DESCRIPTION: Prepare nodes to be output as AML data and operands. The more - * complex AML opcodes require processing of the child nodes - * (arguments/operands). - * - ******************************************************************************/ - -static void -TrTransformSubtree ( - ACPI_PARSE_OBJECT *Op) -{ - - if (Op->Asl.AmlOpcode == AML_RAW_DATA_BYTE) - { - return; - } - - switch (Op->Asl.ParseOpcode) - { - case PARSEOP_DEFINITIONBLOCK: - TrDoDefinitionBlock (Op); - break; - - case PARSEOP_SWITCH: - TrDoSwitch (Op); - break; - - case PARSEOP_METHOD: - - /* - * TBD: Zero the tempname (_T_x) count. Probably shouldn't be a global, - * however - */ - Gbl_TempCount = 0; - break; - - default: - /* Nothing to do here for other opcodes */ - break; - } -} - - -/******************************************************************************* - * - * FUNCTION: TrDoDefinitionBlock - * - * PARAMETERS: Op - Parse node - * - * RETURN: None - * - * DESCRIPTION: Find the end of the definition block and set a global to this - * node. It is used by the compiler to insert compiler-generated - * names at the root level of the namespace. - * - ******************************************************************************/ - -static void -TrDoDefinitionBlock ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Next; - UINT32 i; - - - Next = Op->Asl.Child; - for (i = 0; i < 5; i++) - { - Next = Next->Asl.Next; - if (i == 0) - { - /* - * This is the table signature. Only the DSDT can be assumed - * to be at the root of the namespace; Therefore, namepath - * optimization can only be performed on the DSDT. - */ - if (!ACPI_COMPARE_NAME (Next->Asl.Value.String, ACPI_SIG_DSDT)) - { - Gbl_ReferenceOptimizationFlag = FALSE; - } - } - } - - Gbl_FirstLevelInsertionNode = Next; -} - - -/******************************************************************************* - * - * FUNCTION: TrDoSwitch - * - * PARAMETERS: StartNode - Parse node for SWITCH - * - * RETURN: None - * - * - * DESCRIPTION: Translate ASL SWITCH statement to if/else pairs. There is - * no actual AML opcode for SWITCH -- it must be simulated. - * - ******************************************************************************/ - -static void -TrDoSwitch ( - ACPI_PARSE_OBJECT *StartNode) -{ - ACPI_PARSE_OBJECT *Next; - ACPI_PARSE_OBJECT *CaseOp = NULL; - ACPI_PARSE_OBJECT *CaseBlock = NULL; - ACPI_PARSE_OBJECT *DefaultOp = NULL; - ACPI_PARSE_OBJECT *CurrentParentNode; - ACPI_PARSE_OBJECT *Conditional = NULL; - ACPI_PARSE_OBJECT *Predicate; - ACPI_PARSE_OBJECT *Peer; - ACPI_PARSE_OBJECT *NewOp; - ACPI_PARSE_OBJECT *NewOp2; - char *PredicateValueName; - UINT16 Index; - UINT32 Btype; - - - /* Start node is the Switch() node */ - - CurrentParentNode = StartNode; - - /* Create a new temp name of the form _T_x */ - - PredicateValueName = TrAmlGetNextTempName (StartNode, &Gbl_TempCount); - if (!PredicateValueName) - { - return; - } - - /* First child is the Switch() predicate */ - - Next = StartNode->Asl.Child; - - /* - * Examine the return type of the Switch Value - - * must be Integer/Buffer/String - */ - Index = (UINT16) (Next->Asl.ParseOpcode - ASL_PARSE_OPCODE_BASE); - Btype = AslKeywordMapping[Index].AcpiBtype; - if ((Btype != ACPI_BTYPE_INTEGER) && - (Btype != ACPI_BTYPE_STRING) && - (Btype != ACPI_BTYPE_BUFFER)) - { - AslError (ASL_WARNING, ASL_MSG_SWITCH_TYPE, Next, NULL); - Btype = ACPI_BTYPE_INTEGER; - } - - /* CASE statements start at next child */ - - Peer = Next->Asl.Next; - while (Peer) - { - Next = Peer; - Peer = Next->Asl.Next; - - if (Next->Asl.ParseOpcode == PARSEOP_CASE) - { - if (CaseOp) - { - /* Add an ELSE to complete the previous CASE */ - - if (!Conditional) - { - return; - } - NewOp = TrCreateLeafNode (PARSEOP_ELSE); - NewOp->Asl.Parent = Conditional->Asl.Parent; - TrAmlInitLineNumbers (NewOp, NewOp->Asl.Parent); - - /* Link ELSE node as a peer to the previous IF */ - - TrAmlInsertPeer (Conditional, NewOp); - CurrentParentNode = NewOp; - } - - CaseOp = Next; - Conditional = CaseOp; - CaseBlock = CaseOp->Asl.Child->Asl.Next; - Conditional->Asl.Child->Asl.Next = NULL; - Predicate = CaseOp->Asl.Child; - - if ((Predicate->Asl.ParseOpcode == PARSEOP_PACKAGE) || - (Predicate->Asl.ParseOpcode == PARSEOP_VAR_PACKAGE)) - { - /* - * Convert the package declaration to this form: - * - * If (LNotEqual (Match (Package(){}, - * MEQ, _T_x, MTR, Zero, Zero), Ones)) - */ - NewOp2 = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ); - Predicate->Asl.Next = NewOp2; - TrAmlInitLineNumbers (NewOp2, Conditional); - - NewOp = NewOp2; - NewOp2 = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, - (ACPI_INTEGER) ACPI_TO_INTEGER (PredicateValueName)); - NewOp->Asl.Next = NewOp2; - TrAmlInitLineNumbers (NewOp2, Predicate); - - NewOp = NewOp2; - NewOp2 = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR); - NewOp->Asl.Next = NewOp2; - TrAmlInitLineNumbers (NewOp2, Predicate); - - NewOp = NewOp2; - NewOp2 = TrCreateLeafNode (PARSEOP_ZERO); - NewOp->Asl.Next = NewOp2; - TrAmlInitLineNumbers (NewOp2, Predicate); - - NewOp = NewOp2; - NewOp2 = TrCreateLeafNode (PARSEOP_ZERO); - NewOp->Asl.Next = NewOp2; - TrAmlInitLineNumbers (NewOp2, Predicate); - - NewOp2 = TrCreateLeafNode (PARSEOP_MATCH); - NewOp2->Asl.Child = Predicate; /* PARSEOP_PACKAGE */ - TrAmlInitLineNumbers (NewOp2, Conditional); - TrAmlSetSubtreeParent (Predicate, NewOp2); - - NewOp = NewOp2; - NewOp2 = TrCreateLeafNode (PARSEOP_ONES); - NewOp->Asl.Next = NewOp2; - TrAmlInitLineNumbers (NewOp2, Conditional); - - NewOp2 = TrCreateLeafNode (PARSEOP_LEQUAL); - NewOp2->Asl.Child = NewOp; - NewOp->Asl.Parent = NewOp2; - TrAmlInitLineNumbers (NewOp2, Conditional); - TrAmlSetSubtreeParent (NewOp, NewOp2); - - NewOp = NewOp2; - NewOp2 = TrCreateLeafNode (PARSEOP_LNOT); - NewOp2->Asl.Child = NewOp; - NewOp2->Asl.Parent = Conditional; - NewOp->Asl.Parent = NewOp2; - TrAmlInitLineNumbers (NewOp2, Conditional); - - Conditional->Asl.Child = NewOp2; - NewOp2->Asl.Next = CaseBlock; - } - else - { - /* - * Integer and Buffer case. - * - * Change CaseOp() to: If (LEqual (SwitchValue, CaseValue)) {...} - * Note: SwitchValue is first to allow the CaseValue to be implicitly - * converted to the type of SwitchValue if necessary. - * - * CaseOp->Child is the case value - * CaseOp->Child->Peer is the beginning of the case block - */ - NewOp = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, - (ACPI_INTEGER) ACPI_TO_INTEGER (PredicateValueName)); - NewOp->Asl.Next = Predicate; - TrAmlInitLineNumbers (NewOp, Predicate); - - NewOp2 = TrCreateLeafNode (PARSEOP_LEQUAL); - NewOp2->Asl.Parent = Conditional; - NewOp2->Asl.Child = NewOp; - TrAmlInitLineNumbers (NewOp2, Conditional); - - TrAmlSetSubtreeParent (NewOp, NewOp2); - - Predicate = NewOp2; - Predicate->Asl.Next = CaseBlock; - - TrAmlSetSubtreeParent (Predicate, Conditional); - Conditional->Asl.Child = Predicate; - } - - /* Reinitialize the CASE node to an IF node */ - - TrAmlInitNode (Conditional, PARSEOP_IF); - - /* - * The first CASE(IF) is not nested under an ELSE. - * All other CASEs are children of a parent ELSE. - */ - if (CurrentParentNode == StartNode) - { - Conditional->Asl.Parent = CurrentParentNode->Asl.Parent; - - /* Link IF into the peer list */ - - TrAmlInsertPeer (CurrentParentNode, Conditional); - } - else - { - /* - * The IF is a child of previous IF/ELSE. It - * is therefore without peer. - */ - CurrentParentNode->Asl.Child = Conditional; - Conditional->Asl.Parent = CurrentParentNode; - Conditional->Asl.Next = NULL; - } - } - else if (Next->Asl.ParseOpcode == PARSEOP_DEFAULT) - { - if (DefaultOp) - { - /* - * More than one Default - * (Parser does not catch this, must check here) - */ - AslError (ASL_ERROR, ASL_MSG_MULTIPLE_DEFAULT, Next, NULL); - } - else - { - /* Save the DEFAULT node for later, after CASEs */ - - DefaultOp = Next; - } - } - else - { - /* Unknown peer opcode */ - - AcpiOsPrintf ("Unknown parse opcode for switch statement: %s (%d)\n", - Next->Asl.ParseOpName, Next->Asl.ParseOpcode); - } - } - - /* Add the default case at the end of the if/else construct */ - - if (DefaultOp) - { - /* If no CASE statements, this is an error - see below */ - - if (CaseOp) - { - /* Convert the DEFAULT node to an ELSE */ - - if (!Conditional) - { - return; - } - TrAmlInitNode (DefaultOp, PARSEOP_ELSE); - DefaultOp->Asl.Parent = Conditional->Asl.Parent; - - /* Link ELSE node as a peer to the previous IF */ - - TrAmlInsertPeer (Conditional, DefaultOp); - } - } - - if (!CaseOp) - { - AslError (ASL_ERROR, ASL_MSG_NO_CASES, StartNode, NULL); - } - - - /* - * Create a Name(_T_x, ...) statement. This statement must appear at the - * method level, in case a loop surrounds the switch statement and could - * cause the name to be created twice (error). - */ - - /* Create the Name node */ - - Predicate = StartNode->Asl.Child; - NewOp = TrCreateLeafNode (PARSEOP_NAME); - - /* Find the parent method */ - - Next = StartNode; - while ((Next->Asl.ParseOpcode != PARSEOP_METHOD) && - (Next->Asl.ParseOpcode != PARSEOP_DEFINITIONBLOCK)) - { - Next = Next->Asl.Parent; - } - - NewOp->Asl.CompileFlags |= NODE_COMPILER_EMITTED; - NewOp->Asl.Parent = Next; - - /* Insert name after the method name and arguments */ - - Next = Next->Asl.Child; - Next = Next->Asl.Next; - Next = Next->Asl.Next; - Next = Next->Asl.Next; - Next = Next->Asl.Next; - Next = Next->Asl.Next; - - TrAmlInsertPeer (Next, NewOp); - TrAmlInitLineNumbers (NewOp, Next); - - /* Create the NameSeg child for the Name node */ - - NewOp2 = TrCreateValuedLeafNode (PARSEOP_NAMESEG, - (ACPI_INTEGER) ACPI_TO_INTEGER (PredicateValueName)); - NewOp2->Asl.CompileFlags |= NODE_IS_NAME_DECLARATION; - NewOp->Asl.Child = NewOp2; - - /* Create the initial value for the Name. Btype was already validated above */ - - switch (Btype) - { - case ACPI_BTYPE_INTEGER: - NewOp2->Asl.Next = TrCreateValuedLeafNode (PARSEOP_ZERO, - (ACPI_INTEGER) 0); - break; - - case ACPI_BTYPE_STRING: - NewOp2->Asl.Next = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, - (ACPI_INTEGER) ""); - break; - - case ACPI_BTYPE_BUFFER: - (void) TrLinkPeerNode (NewOp2, TrCreateValuedLeafNode (PARSEOP_BUFFER, - (ACPI_INTEGER) 0)); - Next = NewOp2->Asl.Next; - (void) TrLinkChildren (Next, 1, TrCreateValuedLeafNode (PARSEOP_ZERO, - (ACPI_INTEGER) 1)); - (void) TrLinkPeerNode (Next->Asl.Child, - TrCreateValuedLeafNode (PARSEOP_DEFAULT_ARG, (ACPI_INTEGER) 0)); - - TrAmlSetSubtreeParent (Next->Asl.Child, Next); - break; - - default: - break; - } - - TrAmlSetSubtreeParent (NewOp2, NewOp); - - /* - * Transform the Switch() into a Store() node which will be used to save the - * Switch() value. The store is of the form: Store (Value, _T_x) - * where _T_x is the temp variable. - */ - TrAmlInitNode (StartNode, PARSEOP_STORE); - StartNode->Asl.Child = NULL; - - /* Complete the Store subtree */ - - StartNode->Asl.Child = Predicate; - Predicate->Asl.Parent = StartNode; - - NewOp = TrCreateValuedLeafNode (PARSEOP_NAMESEG, - (ACPI_INTEGER) ACPI_TO_INTEGER (PredicateValueName)); - NewOp->Asl.Parent = StartNode; - Predicate->Asl.Next = NewOp; -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/asltree.c b/sys/contrib/dev/acpica-unix-20061109/compiler/asltree.c deleted file mode 100644 index f4b0049b36..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/asltree.c +++ /dev/null @@ -1,1194 +0,0 @@ - -/****************************************************************************** - * - * Module Name: asltree - parse tree management - * $Revision: 1.62 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "aslcompiler.h" -#include "aslcompiler.y.h" - -#define _COMPONENT ACPI_COMPILER - ACPI_MODULE_NAME ("asltree") - -/* Local prototypes */ - -static ACPI_PARSE_OBJECT * -TrGetNextNode ( - void); - -static char * -TrGetNodeFlagName ( - UINT32 Flags); - - -/******************************************************************************* - * - * FUNCTION: TrGetNextNode - * - * PARAMETERS: None - * - * RETURN: New parse node. Aborts on allocation failure - * - * DESCRIPTION: Allocate a new parse node for the parse tree. Bypass the local - * dynamic memory manager for performance reasons (This has a - * major impact on the speed of the compiler.) - * - ******************************************************************************/ - -static ACPI_PARSE_OBJECT * -TrGetNextNode ( - void) -{ - - if (Gbl_NodeCacheNext >= Gbl_NodeCacheLast) - { - Gbl_NodeCacheNext = UtLocalCalloc (sizeof (ACPI_PARSE_OBJECT) * - ASL_NODE_CACHE_SIZE); - Gbl_NodeCacheLast = Gbl_NodeCacheNext + ASL_NODE_CACHE_SIZE; - } - - return (Gbl_NodeCacheNext++); -} - - -/******************************************************************************* - * - * FUNCTION: TrAllocateNode - * - * PARAMETERS: ParseOpcode - Opcode to be assigned to the node - * - * RETURN: New parse node. Aborts on allocation failure - * - * DESCRIPTION: Allocate and initialize a new parse node for the parse tree - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -TrAllocateNode ( - UINT32 ParseOpcode) -{ - ACPI_PARSE_OBJECT *Op; - - - Op = TrGetNextNode (); - - Op->Asl.ParseOpcode = (UINT16) ParseOpcode; - Op->Asl.Filename = Gbl_Files[ASL_FILE_INPUT].Filename; - Op->Asl.LineNumber = Gbl_CurrentLineNumber; - Op->Asl.LogicalLineNumber = Gbl_LogicalLineNumber; - Op->Asl.LogicalByteOffset = Gbl_CurrentLineOffset; - Op->Asl.Column = Gbl_CurrentColumn; - - UtSetParseOpName (Op); - return Op; -} - - -/******************************************************************************* - * - * FUNCTION: TrReleaseNode - * - * PARAMETERS: Op - Op to be released - * - * RETURN: None - * - * DESCRIPTION: "release" a node. In truth, nothing is done since the node - * is part of a larger buffer - * - ******************************************************************************/ - -void -TrReleaseNode ( - ACPI_PARSE_OBJECT *Op) -{ - - return; -} - - -/******************************************************************************* - * - * FUNCTION: TrUpdateNode - * - * PARAMETERS: ParseOpcode - New opcode to be assigned to the node - * Op - An existing parse node - * - * RETURN: The updated node - * - * DESCRIPTION: Change the parse opcode assigned to a node. Usually used to - * change an opcode to DEFAULT_ARG so that the node is ignored - * during the code generation. Also used to set generic integers - * to a specific size (8, 16, 32, or 64 bits) - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -TrUpdateNode ( - UINT32 ParseOpcode, - ACPI_PARSE_OBJECT *Op) -{ - - if (!Op) - { - return NULL; - } - - DbgPrint (ASL_PARSE_OUTPUT, - "\nUpdateNode: Old - %s, New - %s\n\n", - UtGetOpName (Op->Asl.ParseOpcode), - UtGetOpName (ParseOpcode)); - - /* Assign new opcode and name */ - - if (Op->Asl.ParseOpcode == PARSEOP_ONES) - { - switch (ParseOpcode) - { - case PARSEOP_BYTECONST: - Op->Asl.Value.Integer = 0xFF; - break; - - case PARSEOP_WORDCONST: - Op->Asl.Value.Integer = 0xFFFF; - break; - - case PARSEOP_DWORDCONST: - Op->Asl.Value.Integer = 0xFFFFFFFF; - break; - - default: - /* Don't care about others, don't need to check QWORD */ - break; - } - } - - Op->Asl.ParseOpcode = (UINT16) ParseOpcode; - UtSetParseOpName (Op); - - /* - * For the BYTE, WORD, and DWORD constants, make sure that the integer - * that was passed in will actually fit into the data type - */ - switch (ParseOpcode) - { - case PARSEOP_BYTECONST: - Op = UtCheckIntegerRange (Op, 0x00, ACPI_UINT8_MAX); - break; - - case PARSEOP_WORDCONST: - Op = UtCheckIntegerRange (Op, 0x00, ACPI_UINT16_MAX); - break; - - case PARSEOP_DWORDCONST: - Op = UtCheckIntegerRange (Op, 0x00, ACPI_UINT32_MAX); - break; - - default: - /* Don't care about others, don't need to check QWORD */ - break; - } - - return Op; -} - - -/******************************************************************************* - * - * FUNCTION: TrGetNodeFlagName - * - * PARAMETERS: Flags - Flags word to be decoded - * - * RETURN: Name string. Always returns a valid string pointer. - * - * DESCRIPTION: Decode a flags word - * - ******************************************************************************/ - -static char * -TrGetNodeFlagName ( - UINT32 Flags) -{ - - switch (Flags) - { - case NODE_VISITED: - return ("NODE_VISITED"); - - case NODE_AML_PACKAGE: - return ("NODE_AML_PACKAGE"); - - case NODE_IS_TARGET: - return ("NODE_IS_TARGET"); - - case NODE_IS_RESOURCE_DESC: - return ("NODE_IS_RESOURCE_DESC"); - - case NODE_IS_RESOURCE_FIELD: - return ("NODE_IS_RESOURCE_FIELD"); - - case NODE_HAS_NO_EXIT: - return ("NODE_HAS_NO_EXIT"); - - case NODE_IF_HAS_NO_EXIT: - return ("NODE_IF_HAS_NO_EXIT"); - - case NODE_NAME_INTERNALIZED: - return ("NODE_NAME_INTERNALIZED"); - - case NODE_METHOD_NO_RETVAL: - return ("NODE_METHOD_NO_RETVAL"); - - case NODE_METHOD_SOME_NO_RETVAL: - return ("NODE_METHOD_SOME_NO_RETVAL"); - - case NODE_RESULT_NOT_USED: - return ("NODE_RESULT_NOT_USED"); - - case NODE_METHOD_TYPED: - return ("NODE_METHOD_TYPED"); - - case NODE_IS_BIT_OFFSET: - return ("NODE_IS_BIT_OFFSET"); - - case NODE_COMPILE_TIME_CONST: - return ("NODE_COMPILE_TIME_CONST"); - - case NODE_IS_TERM_ARG: - return ("NODE_IS_TERM_ARG"); - - case NODE_WAS_ONES_OP: - return ("NODE_WAS_ONES_OP"); - - case NODE_IS_NAME_DECLARATION: - return ("NODE_IS_NAME_DECLARATION"); - - default: - return ("Multiple Flags (or unknown flag) set"); - } -} - - -/******************************************************************************* - * - * FUNCTION: TrSetNodeFlags - * - * PARAMETERS: Op - An existing parse node - * Flags - New flags word - * - * RETURN: The updated parser op - * - * DESCRIPTION: Set bits in the node flags word. Will not clear bits, only set - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -TrSetNodeFlags ( - ACPI_PARSE_OBJECT *Op, - UINT32 Flags) -{ - - DbgPrint (ASL_PARSE_OUTPUT, - "\nSetNodeFlags: Op %p, %8.8X %s\n\n", Op, Flags, - TrGetNodeFlagName (Flags)); - - if (!Op) - { - return NULL; - } - - Op->Asl.CompileFlags |= Flags; - - return Op; -} - - -/******************************************************************************* - * - * FUNCTION: TrSetEndLineNumber - * - * PARAMETERS: Op - An existing parse node - * - * RETURN: None. - * - * DESCRIPTION: Set the ending line numbers (file line and logical line) of a - * parse node to the current line numbers. - * - ******************************************************************************/ - -void -TrSetEndLineNumber ( - ACPI_PARSE_OBJECT *Op) -{ - - /* If the end line # is already set, just return */ - - if (Op->Asl.EndLine) - { - return; - } - - Op->Asl.EndLine = Gbl_CurrentLineNumber; - Op->Asl.EndLogicalLine = Gbl_LogicalLineNumber; -} - - -/******************************************************************************* - * - * FUNCTION: TrCreateLeafNode - * - * PARAMETERS: ParseOpcode - New opcode to be assigned to the node - * - * RETURN: Pointer to the new node. Aborts on allocation failure - * - * DESCRIPTION: Create a simple leaf node (no children or peers, and no value - * assigned to the node) - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -TrCreateLeafNode ( - UINT32 ParseOpcode) -{ - ACPI_PARSE_OBJECT *Op; - - - Op = TrAllocateNode (ParseOpcode); - - DbgPrint (ASL_PARSE_OUTPUT, - "\nCreateLeafNode Ln/Col %d/%d NewNode %p Op %s\n\n", - Op->Asl.LineNumber, Op->Asl.Column, Op, UtGetOpName(ParseOpcode)); - - return Op; -} - - -/******************************************************************************* - * - * FUNCTION: TrCreateValuedLeafNode - * - * PARAMETERS: ParseOpcode - New opcode to be assigned to the node - * Value - Value to be assigned to the node - * - * RETURN: Pointer to the new node. Aborts on allocation failure - * - * DESCRIPTION: Create a leaf node (no children or peers) with a value - * assigned to it - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -TrCreateValuedLeafNode ( - UINT32 ParseOpcode, - ACPI_INTEGER Value) -{ - ACPI_PARSE_OBJECT *Op; - - - Op = TrAllocateNode (ParseOpcode); - - DbgPrint (ASL_PARSE_OUTPUT, - "\nCreateValuedLeafNode Ln/Col %d/%d NewNode %p Op %s Value %8.8X%8.8X ", - Op->Asl.LineNumber, Op->Asl.Column, Op, UtGetOpName(ParseOpcode), - ACPI_FORMAT_UINT64 (Value)); - Op->Asl.Value.Integer = Value; - - switch (ParseOpcode) - { - case PARSEOP_STRING_LITERAL: - DbgPrint (ASL_PARSE_OUTPUT, "STRING->%s", Value); - break; - - case PARSEOP_NAMESEG: - DbgPrint (ASL_PARSE_OUTPUT, "NAMESEG->%s", Value); - break; - - case PARSEOP_NAMESTRING: - DbgPrint (ASL_PARSE_OUTPUT, "NAMESTRING->%s", Value); - break; - - case PARSEOP_EISAID: - DbgPrint (ASL_PARSE_OUTPUT, "EISAID->%s", Value); - break; - - case PARSEOP_METHOD: - DbgPrint (ASL_PARSE_OUTPUT, "METHOD"); - break; - - case PARSEOP_INTEGER: - DbgPrint (ASL_PARSE_OUTPUT, "INTEGER"); - break; - - default: - break; - } - - DbgPrint (ASL_PARSE_OUTPUT, "\n\n"); - return Op; -} - - -/******************************************************************************* - * - * FUNCTION: TrCreateNode - * - * PARAMETERS: ParseOpcode - Opcode to be assigned to the node - * NumChildren - Number of children to follow - * ... - A list of child nodes to link to the new - * node. NumChildren long. - * - * RETURN: Pointer to the new node. Aborts on allocation failure - * - * DESCRIPTION: Create a new parse node and link together a list of child - * nodes underneath the new node. - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -TrCreateNode ( - UINT32 ParseOpcode, - UINT32 NumChildren, - ...) -{ - ACPI_PARSE_OBJECT *Op; - ACPI_PARSE_OBJECT *Child; - ACPI_PARSE_OBJECT *PrevChild; - va_list ap; - UINT32 i; - BOOLEAN FirstChild; - - - va_start (ap, NumChildren); - - /* Allocate one new node */ - - Op = TrAllocateNode (ParseOpcode); - - DbgPrint (ASL_PARSE_OUTPUT, - "\nCreateNode Ln/Col %d/%d NewParent %p Child %d Op %s ", - Op->Asl.LineNumber, Op->Asl.Column, Op, NumChildren, UtGetOpName(ParseOpcode)); - - /* Some extra debug output based on the parse opcode */ - - switch (ParseOpcode) - { - case PARSEOP_DEFINITIONBLOCK: - RootNode = Op; - DbgPrint (ASL_PARSE_OUTPUT, "DEFINITION_BLOCK (Tree Completed)->"); - break; - - case PARSEOP_OPERATIONREGION: - DbgPrint (ASL_PARSE_OUTPUT, "OPREGION->"); - break; - - case PARSEOP_OR: - DbgPrint (ASL_PARSE_OUTPUT, "OR->"); - break; - - default: - /* Nothing to do for other opcodes */ - break; - } - - /* Link the new node to its children */ - - PrevChild = NULL; - FirstChild = TRUE; - for (i = 0; i < NumChildren; i++) - { - /* Get the next child */ - - Child = va_arg (ap, ACPI_PARSE_OBJECT *); - DbgPrint (ASL_PARSE_OUTPUT, "%p, ", Child); - - /* - * If child is NULL, this means that an optional argument - * was omitted. We must create a placeholder with a special - * opcode (DEFAULT_ARG) so that the code generator will know - * that it must emit the correct default for this argument - */ - if (!Child) - { - Child = TrAllocateNode (PARSEOP_DEFAULT_ARG); - } - - /* Link first child to parent */ - - if (FirstChild) - { - FirstChild = FALSE; - Op->Asl.Child = Child; - } - - /* Point all children to parent */ - - Child->Asl.Parent = Op; - - /* Link children in a peer list */ - - if (PrevChild) - { - PrevChild->Asl.Next = Child; - }; - - /* - * This child might be a list, point all nodes in the list - * to the same parent - */ - while (Child->Asl.Next) - { - Child = Child->Asl.Next; - Child->Asl.Parent = Op; - } - - PrevChild = Child; - } - va_end(ap); - - DbgPrint (ASL_PARSE_OUTPUT, "\n\n"); - return Op; -} - - -/******************************************************************************* - * - * FUNCTION: TrLinkChildren - * - * PARAMETERS: Op - An existing parse node - * NumChildren - Number of children to follow - * ... - A list of child nodes to link to the new - * node. NumChildren long. - * - * RETURN: The updated (linked) node - * - * DESCRIPTION: Link a group of nodes to an existing parse node - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -TrLinkChildren ( - ACPI_PARSE_OBJECT *Op, - UINT32 NumChildren, - ...) -{ - ACPI_PARSE_OBJECT *Child; - ACPI_PARSE_OBJECT *PrevChild; - va_list ap; - UINT32 i; - BOOLEAN FirstChild; - - - va_start (ap, NumChildren); - - - TrSetEndLineNumber (Op); - - DbgPrint (ASL_PARSE_OUTPUT, - "\nLinkChildren Line [%d to %d] NewParent %p Child %d Op %s ", - Op->Asl.LineNumber, Op->Asl.EndLine, - Op, NumChildren, UtGetOpName(Op->Asl.ParseOpcode)); - - switch (Op->Asl.ParseOpcode) - { - case PARSEOP_DEFINITIONBLOCK: - RootNode = Op; - DbgPrint (ASL_PARSE_OUTPUT, "DEFINITION_BLOCK (Tree Completed)->"); - break; - - case PARSEOP_OPERATIONREGION: - DbgPrint (ASL_PARSE_OUTPUT, "OPREGION->"); - break; - - case PARSEOP_OR: - DbgPrint (ASL_PARSE_OUTPUT, "OR->"); - break; - - default: - /* Nothing to do for other opcodes */ - break; - } - - /* Link the new node to it's children */ - - PrevChild = NULL; - FirstChild = TRUE; - for (i = 0; i < NumChildren; i++) - { - Child = va_arg (ap, ACPI_PARSE_OBJECT *); - - if ((Child == PrevChild) && (Child != NULL)) - { - AslError (ASL_WARNING, ASL_MSG_COMPILER_INTERNAL, Child, - "Child node list invalid"); - return Op; - } - - DbgPrint (ASL_PARSE_OUTPUT, "%p, ", Child); - - /* - * If child is NULL, this means that an optional argument - * was omitted. We must create a placeholder with a special - * opcode (DEFAULT_ARG) so that the code generator will know - * that it must emit the correct default for this argument - */ - if (!Child) - { - Child = TrAllocateNode (PARSEOP_DEFAULT_ARG); - } - - /* Link first child to parent */ - - if (FirstChild) - { - FirstChild = FALSE; - Op->Asl.Child = Child; - } - - /* Point all children to parent */ - - Child->Asl.Parent = Op; - - /* Link children in a peer list */ - - if (PrevChild) - { - PrevChild->Asl.Next = Child; - }; - - /* - * This child might be a list, point all nodes in the list - * to the same parent - */ - while (Child->Asl.Next) - { - Child = Child->Asl.Next; - Child->Asl.Parent = Op; - } - PrevChild = Child; - } - va_end(ap); - - DbgPrint (ASL_PARSE_OUTPUT, "\n\n"); - return Op; -} - - -/******************************************************************************* - * - * FUNCTION: TrLinkPeerNode - * - * PARAMETERS: Op1 - First peer - * Op2 - Second peer - * - * RETURN: Op1 or the non-null node. - * - * DESCRIPTION: Link two nodes as peers. Handles cases where one peer is null. - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -TrLinkPeerNode ( - ACPI_PARSE_OBJECT *Op1, - ACPI_PARSE_OBJECT *Op2) -{ - ACPI_PARSE_OBJECT *Next; - - - DbgPrint (ASL_PARSE_OUTPUT, - "\nLinkPeerNode: 1=%p (%s), 2=%p (%s)\n\n", - Op1, Op1 ? UtGetOpName(Op1->Asl.ParseOpcode) : NULL, - Op2, Op2 ? UtGetOpName(Op2->Asl.ParseOpcode) : NULL); - - - if ((!Op1) && (!Op2)) - { - DbgPrint (ASL_PARSE_OUTPUT, "\nTwo Null nodes!\n"); - return Op1; - } - - /* If one of the nodes is null, just return the non-null node */ - - if (!Op2) - { - return Op1; - } - - if (!Op1) - { - return Op2; - } - - if (Op1 == Op2) - { - DbgPrint (ASL_DEBUG_OUTPUT, - "\n\n************* Internal error, linking node to itself %p\n\n\n", - Op1); - AslError (ASL_WARNING, ASL_MSG_COMPILER_INTERNAL, Op1, - "Linking node to itself"); - return Op1; - } - - Op1->Asl.Parent = Op2->Asl.Parent; - - /* - * Op 1 may already have a peer list (such as an IF/ELSE pair), - * so we must walk to the end of the list and attach the new - * peer at the end - */ - Next = Op1; - while (Next->Asl.Next) - { - Next = Next->Asl.Next; - } - - Next->Asl.Next = Op2; - return Op1; -} - - -/******************************************************************************* - * - * FUNCTION: TrLinkPeerNodes - * - * PARAMETERS: NumPeers - The number of nodes in the list to follow - * ... - A list of nodes to link together as peers - * - * RETURN: The first node in the list (head of the peer list) - * - * DESCRIPTION: Link together an arbitrary number of peer nodes. - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -TrLinkPeerNodes ( - UINT32 NumPeers, - ...) -{ - ACPI_PARSE_OBJECT *This; - ACPI_PARSE_OBJECT *Next; - va_list ap; - UINT32 i; - ACPI_PARSE_OBJECT *Start; - - - DbgPrint (ASL_PARSE_OUTPUT, - "\nLinkPeerNodes: (%d) ", NumPeers); - - va_start (ap, NumPeers); - This = va_arg (ap, ACPI_PARSE_OBJECT *); - Start = This; - - /* - * Link all peers - */ - for (i = 0; i < (NumPeers -1); i++) - { - DbgPrint (ASL_PARSE_OUTPUT, "%d=%p ", (i+1), This); - - while (This->Asl.Next) - { - This = This->Asl.Next; - } - - /* Get another peer node */ - - Next = va_arg (ap, ACPI_PARSE_OBJECT *); - if (!Next) - { - Next = TrAllocateNode (PARSEOP_DEFAULT_ARG); - } - - /* link new node to the current node */ - - This->Asl.Next = Next; - This = Next; - } - - DbgPrint (ASL_PARSE_OUTPUT,"\n\n"); - return (Start); -} - - -/******************************************************************************* - * - * FUNCTION: TrLinkChildNode - * - * PARAMETERS: Op1 - Parent node - * Op2 - Op to become a child - * - * RETURN: The parent node - * - * DESCRIPTION: Link two nodes together as a parent and child - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -TrLinkChildNode ( - ACPI_PARSE_OBJECT *Op1, - ACPI_PARSE_OBJECT *Op2) -{ - ACPI_PARSE_OBJECT *Next; - - - DbgPrint (ASL_PARSE_OUTPUT, - "\nLinkChildNode: Parent=%p (%s), Child=%p (%s)\n\n", - Op1, Op1 ? UtGetOpName(Op1->Asl.ParseOpcode): NULL, - Op2, Op2 ? UtGetOpName(Op2->Asl.ParseOpcode): NULL); - - if (!Op1 || !Op2) - { - return Op1; - } - - Op1->Asl.Child = Op2; - - /* Set the child and all peers of the child to point to the parent */ - - Next = Op2; - while (Next) - { - Next->Asl.Parent = Op1; - Next = Next->Asl.Next; - } - - return Op1; -} - - -/******************************************************************************* - * - * FUNCTION: TrWalkParseTree - * - * PARAMETERS: Visitation - Type of walk - * DescendingCallback - Called during tree descent - * AscendingCallback - Called during tree ascent - * Context - To be passed to the callbacks - * - * RETURN: Status from callback(s) - * - * DESCRIPTION: Walk the entire parse tree. - * - ******************************************************************************/ - -ACPI_STATUS -TrWalkParseTree ( - ACPI_PARSE_OBJECT *Op, - UINT32 Visitation, - ASL_WALK_CALLBACK DescendingCallback, - ASL_WALK_CALLBACK AscendingCallback, - void *Context) -{ - UINT32 Level; - BOOLEAN NodePreviouslyVisited; - ACPI_PARSE_OBJECT *StartOp = Op; - ACPI_STATUS Status; - - - if (!RootNode) - { - return (AE_OK); - } - - Level = 0; - NodePreviouslyVisited = FALSE; - - switch (Visitation) - { - case ASL_WALK_VISIT_DOWNWARD: - - while (Op) - { - if (!NodePreviouslyVisited) - { - /* Let the callback process the node. */ - - Status = DescendingCallback (Op, Level, Context); - if (ACPI_SUCCESS (Status)) - { - /* Visit children first, once */ - - if (Op->Asl.Child) - { - Level++; - Op = Op->Asl.Child; - continue; - } - } - else if (Status != AE_CTRL_DEPTH) - { - /* Exit immediately on any error */ - - return (Status); - } - } - - /* Terminate walk at start op */ - - if (Op == StartOp) - { - break; - } - - /* No more children, visit peers */ - - if (Op->Asl.Next) - { - Op = Op->Asl.Next; - NodePreviouslyVisited = FALSE; - } - else - { - /* No children or peers, re-visit parent */ - - if (Level != 0 ) - { - Level--; - } - Op = Op->Asl.Parent; - NodePreviouslyVisited = TRUE; - } - } - break; - - - case ASL_WALK_VISIT_UPWARD: - - while (Op) - { - /* Visit leaf node (no children) or parent node on return trip */ - - if ((!Op->Asl.Child) || - (NodePreviouslyVisited)) - { - /* Let the callback process the node. */ - - Status = AscendingCallback (Op, Level, Context); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - } - else - { - /* Visit children first, once */ - - Level++; - Op = Op->Asl.Child; - continue; - } - - /* Terminate walk at start op */ - - if (Op == StartOp) - { - break; - } - - /* No more children, visit peers */ - - if (Op->Asl.Next) - { - Op = Op->Asl.Next; - NodePreviouslyVisited = FALSE; - } - else - { - /* No children or peers, re-visit parent */ - - if (Level != 0 ) - { - Level--; - } - Op = Op->Asl.Parent; - NodePreviouslyVisited = TRUE; - } - } - break; - - - case ASL_WALK_VISIT_TWICE: - - while (Op) - { - if (NodePreviouslyVisited) - { - Status = AscendingCallback (Op, Level, Context); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - } - else - { - /* Let the callback process the node. */ - - Status = DescendingCallback (Op, Level, Context); - if (ACPI_SUCCESS (Status)) - { - /* Visit children first, once */ - - if (Op->Asl.Child) - { - Level++; - Op = Op->Asl.Child; - continue; - } - } - else if (Status != AE_CTRL_DEPTH) - { - /* Exit immediately on any error */ - - return (Status); - } - } - - /* Terminate walk at start op */ - - if (Op == StartOp) - { - break; - } - - /* No more children, visit peers */ - - if (Op->Asl.Next) - { - Op = Op->Asl.Next; - NodePreviouslyVisited = FALSE; - } - else - { - /* No children or peers, re-visit parent */ - - if (Level != 0 ) - { - Level--; - } - Op = Op->Asl.Parent; - NodePreviouslyVisited = TRUE; - } - } - break; - - default: - /* No other types supported */ - break; - } - - /* If we get here, the walk completed with no errors */ - - return (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/asltypes.h b/sys/contrib/dev/acpica-unix-20061109/compiler/asltypes.h deleted file mode 100644 index 44f68c8f4e..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/asltypes.h +++ /dev/null @@ -1,562 +0,0 @@ - -/****************************************************************************** - * - * Module Name: asltypes.h - compiler data types and struct definitions - * $Revision: 1.88 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#ifndef __ASLTYPES_H -#define __ASLTYPES_H - - -/******************************************************************************* - * - * Structure definitions - * - ******************************************************************************/ - - -/* Op flags for the ACPI_PARSE_OBJECT */ - -#define NODE_VISITED 0x00000001 -#define NODE_AML_PACKAGE 0x00000002 -#define NODE_IS_TARGET 0x00000004 -#define NODE_IS_RESOURCE_DESC 0x00000008 -#define NODE_IS_RESOURCE_FIELD 0x00000010 -#define NODE_HAS_NO_EXIT 0x00000020 -#define NODE_IF_HAS_NO_EXIT 0x00000040 -#define NODE_NAME_INTERNALIZED 0x00000080 -#define NODE_METHOD_NO_RETVAL 0x00000100 -#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_COMPILE_TIME_CONST 0x00002000 -#define NODE_IS_TERM_ARG 0x00004000 -#define NODE_WAS_ONES_OP 0x00008000 -#define NODE_IS_NAME_DECLARATION 0x00010000 -#define NODE_COMPILER_EMITTED 0x00020000 -#define NODE_IS_DUPLICATE 0x00040000 -#define NODE_IS_RESOURCE_DATA 0x00080000 - -/* Keeps information about individual control methods */ - -typedef struct asl_method_info -{ - UINT8 NumArguments; - UINT8 LocalInitialized[ACPI_METHOD_NUM_LOCALS]; - UINT8 ArgInitialized[ACPI_METHOD_NUM_ARGS]; - UINT32 ValidArgTypes[ACPI_METHOD_NUM_ARGS]; - UINT32 ValidReturnTypes; - UINT32 NumReturnNoValue; - UINT32 NumReturnWithValue; - ACPI_PARSE_OBJECT *Op; - struct asl_method_info *Next; - UINT8 HasBeenTyped; - -} ASL_METHOD_INFO; - - -/* Parse tree walk info for control method analysis */ - -typedef struct asl_analysis_walk_info -{ - ASL_METHOD_INFO *MethodStack; - -} ASL_ANALYSIS_WALK_INFO; - - -/* An entry in the ParseOpcode to AmlOpcode mapping table */ - -typedef struct asl_mapping_entry -{ - UINT32 Value; - UINT32 AcpiBtype; /* Object type or return type */ - UINT16 AmlOpcode; - UINT8 Flags; - -} ASL_MAPPING_ENTRY; - - -/* An entry in the Reserved Name information table */ - -#define ASL_RSVD_RETURN_VALUE 0x01 -#define ASL_RSVD_RESOURCE_NAME 0x02 -#define ASL_RSVD_SCOPE 0x04 - -typedef struct asl_reserved_info -{ - char *Name; - UINT8 NumArguments; - UINT8 Flags; - -} ASL_RESERVED_INFO; - - -/* Parse tree walk info structure */ - -typedef struct asl_walk_info -{ - ACPI_PARSE_OBJECT **NodePtr; - UINT32 *LevelPtr; - -} ASL_WALK_INFO; - - -/* File info */ - -typedef struct asl_file_info -{ - FILE *Handle; - char *Filename; - -} ASL_FILE_INFO; - -typedef struct asl_file_status -{ - UINT32 Line; - UINT32 Offset; - -} ASL_FILE_STATUS; - - -/* File types */ - -typedef enum -{ - ASL_FILE_STDOUT = 0, - ASL_FILE_STDERR, - ASL_FILE_INPUT, - ASL_FILE_AML_OUTPUT, - ASL_FILE_SOURCE_OUTPUT, - ASL_FILE_LISTING_OUTPUT, - ASL_FILE_HEX_OUTPUT, - ASL_FILE_NAMESPACE_OUTPUT, - ASL_FILE_DEBUG_OUTPUT, - ASL_FILE_ASM_SOURCE_OUTPUT, - ASL_FILE_C_SOURCE_OUTPUT, - ASL_FILE_ASM_INCLUDE_OUTPUT, - ASL_FILE_C_INCLUDE_OUTPUT - -} ASL_FILE_TYPES; - - -#define ASL_MAX_FILE_TYPE 12 -#define ASL_NUM_FILES (ASL_MAX_FILE_TYPE + 1) - - -/* An entry in the exception list, one for each error/warning */ - -typedef struct asl_error_msg -{ - UINT32 LineNumber; - UINT32 LogicalLineNumber; - UINT32 LogicalByteOffset; - UINT32 Column; - char *Message; - struct asl_error_msg *Next; - char *Filename; - UINT32 FilenameLength; - UINT8 MessageId; - UINT8 Level; - -} ASL_ERROR_MSG; - - -/* An entry in the listing file stack (for include files) */ - -typedef struct asl_listing_node -{ - char *Filename; - UINT32 LineNumber; - struct asl_listing_node *Next; - -} ASL_LISTING_NODE; - - -/* Callback interface for a parse tree walk */ - -typedef -ACPI_STATUS (*ASL_WALK_CALLBACK) ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - - -typedef struct asl_event_info -{ - UINT64 StartTime; - UINT64 EndTime; - char *EventName; - BOOLEAN Valid; - -} ASL_EVENT_INFO; - - -#define ASL_WARNING 0 -#define ASL_WARNING2 1 -#define ASL_WARNING3 2 -#define ASL_ERROR 3 -#define ASL_REMARK 4 -#define ASL_OPTIMIZATION 5 -#define ASL_NUM_REPORT_LEVELS 6 - - -typedef enum -{ - ASL_MSG_RESERVED = 0, - 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_CONSTANT_EVALUATION, - ASL_MSG_CONSTANT_FOLDED, - ASL_MSG_CORE_EXCEPTION, - ASL_MSG_DEBUG_FILE_OPEN, - ASL_MSG_DEBUG_FILENAME, - ASL_MSG_DEPENDENT_NESTING, - ASL_MSG_DMA_CHANNEL, - ASL_MSG_DMA_LIST, - ASL_MSG_DUPLICATE_CASE, - ASL_MSG_DUPLICATE_ITEM, - ASL_MSG_EARLY_EOF, - ASL_MSG_ENCODING_LENGTH, - ASL_MSG_EX_INTERRUPT_LIST, - ASL_MSG_EX_INTERRUPT_NUMBER, - ASL_MSG_FIELD_ACCESS_WIDTH, - ASL_MSG_FIELD_UNIT_ACCESS_WIDTH, - ASL_MSG_FIELD_UNIT_OFFSET, - 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_CONSTANT_OP, - ASL_MSG_INVALID_EISAID, - ASL_MSG_INVALID_ESCAPE, - ASL_MSG_INVALID_OPERAND, - ASL_MSG_INVALID_PERFORMANCE, - ASL_MSG_INVALID_PRIORITY, - ASL_MSG_INVALID_STRING, - ASL_MSG_INVALID_TARGET, - ASL_MSG_INVALID_TIME, - ASL_MSG_INVALID_TYPE, - ASL_MSG_INVALID_UUID, - ASL_MSG_LIST_LENGTH, - ASL_MSG_LISTING_FILE_OPEN, - ASL_MSG_LISTING_FILENAME, - ASL_MSG_LOCAL_INIT, - ASL_MSG_LONG_LINE, - ASL_MSG_MEMORY_ALLOCATION, - ASL_MSG_MISSING_ENDDEPENDENT, - ASL_MSG_MISSING_STARTDEPENDENT, - ASL_MSG_MULTIPLE_TYPES, - ASL_MSG_NAME_EXISTS, - ASL_MSG_NAME_OPTIMIZATION, - ASL_MSG_NESTED_COMMENT, - ASL_MSG_NO_CASES, - ASL_MSG_NO_RETVAL, - ASL_MSG_NO_WHILE, - ASL_MSG_NON_ASCII, - ASL_MSG_NOT_EXIST, - ASL_MSG_NOT_FOUND, - ASL_MSG_NOT_METHOD, - ASL_MSG_NOT_PARAMETER, - ASL_MSG_NOT_REACHABLE, - ASL_MSG_OPEN, - ASL_MSG_OUTPUT_FILE_OPEN, - ASL_MSG_OUTPUT_FILENAME, - ASL_MSG_PACKAGE_LENGTH, - ASL_MSG_READ, - ASL_MSG_RECURSION, - ASL_MSG_REGION_BUFFER_ACCESS, - ASL_MSG_REGION_BYTE_ACCESS, - ASL_MSG_RESERVED_ARG_COUNT_HI, - ASL_MSG_RESERVED_ARG_COUNT_LO, - ASL_MSG_RESERVED_METHOD, - ASL_MSG_RESERVED_OPERAND_TYPE, - ASL_MSG_RESERVED_RETURN_VALUE, - ASL_MSG_RESERVED_USE, - ASL_MSG_RESERVED_WORD, - ASL_MSG_RESOURCE_FIELD, - ASL_MSG_RESOURCE_INDEX, - ASL_MSG_RESOURCE_LIST, - ASL_MSG_RESOURCE_SOURCE, - ASL_MSG_RETURN_TYPES, - ASL_MSG_SCOPE_FWD_REF, - ASL_MSG_SCOPE_TYPE, - ASL_MSG_SEEK, - ASL_MSG_SINGLE_NAME_OPTIMIZATION, - ASL_MSG_SOME_NO_RETVAL, - ASL_MSG_SWITCH_TYPE, - ASL_MSG_SYNC_LEVEL, - ASL_MSG_SYNTAX, - ASL_MSG_TABLE_SIGNATURE, - ASL_MSG_TOO_MANY_TEMPS, - ASL_MSG_UNKNOWN_RESERVED_NAME, - ASL_MSG_UNREACHABLE_CODE, - ASL_MSG_UNSUPPORTED, - 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_MESSAGE_IDS; - -#ifdef ASL_EXCEPTIONS - -char *AslMessages [] = { -/* The zeroth message is resesrved */ "", -/* 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_CONSTANT_EVALUATION */ "Could not evaluate constant expression", -/* ASL_MSG_CONSTANT_FOLDED */ "Constant expression evaluated and reduced", -/* ASL_MSG_CORE_EXCEPTION */ "From ACPI CA Subsystem", -/* ASL_MSG_DEBUG_FILE_OPEN */ "Could not open debug file", -/* ASL_MSG_DEBUG_FILENAME */ "Could not create debug filename", -/* ASL_MSG_DEPENDENT_NESTING */ "Dependent function macros cannot be nested",\ -/* ASL_MSG_DMA_CHANNEL */ "Invalid DMA channel (must be 0-7)", -/* ASL_MSG_DMA_LIST */ "Too many DMA channels (8 max)", -/* ASL_MSG_DUPLICATE_CASE */ "Case value already specified", -/* ASL_MSG_DUPLICATE_ITEM */ "Duplicate value in list", -/* ASL_MSG_EARLY_EOF */ "Premature end-of-file reached", -/* ASL_MSG_ENCODING_LENGTH */ "Package length too long to encode", -/* ASL_MSG_EX_INTERRUPT_LIST */ "Too many interrupts (255 max)", -/* ASL_MSG_EX_INTERRUPT_NUMBER */ "Invalid interrupt number (must be 32 bits)", -/* 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_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_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_OPERAND */ "Invalid operand", -/* ASL_MSG_INVALID_PERFORMANCE */ "Invalid performance/robustness value", -/* ASL_MSG_INVALID_PRIORITY */ "Invalid priority value", -/* ASL_MSG_INVALID_STRING */ "Invalid Hex/Octal Escape - Non-ASCII or NULL", -/* ASL_MSG_INVALID_TARGET */ "Target operand not allowed in constant expression", -/* 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_LIST_LENGTH */ "Initializer list too long", -/* 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_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_TYPES */ "Multiple types", -/* ASL_MSG_NAME_EXISTS */ "Name already exists in scope", -/* ASL_MSG_NAME_OPTIMIZATION */ "NamePath optimized", -/* ASL_MSG_NESTED_COMMENT */ "Nested comment found", -/* ASL_MSG_NO_CASES */ "No Case statements under Switch", -/* 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_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_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", -/* ASL_MSG_PACKAGE_LENGTH */ "Effective AML package length is zero", -/* ASL_MSG_READ */ "Could not read file", -/* ASL_MSG_RECURSION */ "Recursive method call", -/* ASL_MSG_REGION_BUFFER_ACCESS */ "Host Operation Region requires BufferAcc access", -/* ASL_MSG_REGION_BYTE_ACCESS */ "Host Operation Region requires ByteAcc access", -/* 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_OPERAND_TYPE */ "Invalid operand type for reserved name, must be", -/* ASL_MSG_RESERVED_RETURN_VALUE */ "Reserved method must return a value", -/* ASL_MSG_RESERVED_USE */ "Invalid use of reserved name", -/* ASL_MSG_RESERVED_WORD */ "Use of reserved word", -/* ASL_MSG_RESOURCE_FIELD */ "Resource field name cannot be used as a target", -/* 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_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_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_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_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_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 */ "Possible operator timeout is ignored", -/* 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" - -}; - - -char *AslErrorLevel [ASL_NUM_REPORT_LEVELS] = { - "Warning ", - "Warning ", - "Warning ", - "Error ", - "Remark ", - "Optimize" -}; - -#define ASL_ERROR_LEVEL_LENGTH 8 /* Length of strings above */ - -/* Exception counters */ - -UINT32 Gbl_ExceptionCount[ASL_NUM_REPORT_LEVELS] = {0,0,0,0,0,0}; - -#endif - - -#endif /* __ASLTYPES_H */ diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/aslutils.c b/sys/contrib/dev/acpica-unix-20061109/compiler/aslutils.c deleted file mode 100644 index 4a0fc08f7d..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/aslutils.c +++ /dev/null @@ -1,1055 +0,0 @@ - -/****************************************************************************** - * - * Module Name: aslutils -- compiler utilities - * $Revision: 1.71 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "aslcompiler.h" -#include "aslcompiler.y.h" -#include "acnamesp.h" -#include "amlcode.h" - -#define _COMPONENT ACPI_COMPILER - ACPI_MODULE_NAME ("aslutils") - -#ifdef _USE_BERKELEY_YACC -extern const char * const AslCompilername[]; -static const char * const *yytname = &AslCompilername[254]; -#else -extern const char * const yytname[]; -#endif - -/* Local prototypes */ - -static ACPI_STATUS -UtStrtoul64 ( - char *String, - UINT32 Base, - ACPI_INTEGER *RetInteger); - -static void -UtPadNameWithUnderscores ( - char *NameSeg, - char *PaddedNameSeg); - -static void -UtAttachNameseg ( - ACPI_PARSE_OBJECT *Op, - char *Name); - - -/******************************************************************************* - * - * FUNCTION: AcpiPsDisplayConstantOpcodes - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Print AML opcodes that can be used in constant expressions. - * - ******************************************************************************/ - -void -UtDisplayConstantOpcodes ( - void) -{ - UINT32 i; - - - printf ("Constant expression opcode information\n\n"); - - for (i = 0; i < sizeof (AcpiGbl_AmlOpInfo) / sizeof (ACPI_OPCODE_INFO); i++) - { - if (AcpiGbl_AmlOpInfo[i].Flags & AML_CONSTANT) - { - printf ("%s\n", AcpiGbl_AmlOpInfo[i].Name); - } - } -} - - -/******************************************************************************* - * - * FUNCTION: UtLocalCalloc - * - * PARAMETERS: Size - Bytes to be allocated - * - * RETURN: Pointer to the allocated memory. Guaranteed to be valid. - * - * DESCRIPTION: Allocate zero-initialized memory. Aborts the compile on an - * allocation failure, on the assumption that nothing more can be - * accomplished. - * - ******************************************************************************/ - -void * -UtLocalCalloc ( - UINT32 Size) -{ - void *Allocated; - - - Allocated = ACPI_ALLOCATE_ZEROED (Size); - if (!Allocated) - { - AslCommonError (ASL_ERROR, ASL_MSG_MEMORY_ALLOCATION, - Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, - Gbl_InputByteCount, Gbl_CurrentColumn, - Gbl_Files[ASL_FILE_INPUT].Filename, NULL); - exit (1); - } - - TotalAllocations++; - TotalAllocated += Size; - return (Allocated); -} - - -/******************************************************************************* - * - * FUNCTION: UtBeginEvent - * - * PARAMETERS: Name - Ascii name of this event - * - * RETURN: Event - Event number (integer index) - * - * DESCRIPTION: Saves the current time with this event - * - ******************************************************************************/ - -UINT8 -UtBeginEvent ( - char *Name) -{ - - if (AslGbl_NextEvent >= ASL_NUM_EVENTS) - { - AcpiOsPrintf ("Ran out of compiler event structs!\n"); - return (AslGbl_NextEvent); - } - - /* Init event with current (start) time */ - - AslGbl_Events[AslGbl_NextEvent].StartTime = AcpiOsGetTimer (); - AslGbl_Events[AslGbl_NextEvent].EventName = Name; - AslGbl_Events[AslGbl_NextEvent].Valid = TRUE; - - return (AslGbl_NextEvent++); -} - - -/******************************************************************************* - * - * FUNCTION: UtEndEvent - * - * PARAMETERS: Event - Event number (integer index) - * - * RETURN: None - * - * DESCRIPTION: Saves the current time (end time) with this event - * - ******************************************************************************/ - -void -UtEndEvent ( - UINT8 Event) -{ - - if (Event >= ASL_NUM_EVENTS) - { - return; - } - - /* Insert end time for event */ - - AslGbl_Events[Event].EndTime = AcpiOsGetTimer (); -} - - -/******************************************************************************* - * - * FUNCTION: UtHexCharToValue - * - * PARAMETERS: HexChar - Hex character in Ascii - * - * RETURN: The binary value of the hex character - * - * DESCRIPTION: Perform ascii-to-hex translation - * - ******************************************************************************/ - -UINT8 -UtHexCharToValue ( - int HexChar) -{ - - if (HexChar <= 0x39) - { - return ((UINT8) (HexChar - 0x30)); - } - - if (HexChar <= 0x46) - { - return ((UINT8) (HexChar - 0x37)); - } - - return ((UINT8) (HexChar - 0x57)); -} - - -/******************************************************************************* - * - * FUNCTION: UtConvertByteToHex - * - * PARAMETERS: RawByte - Binary data - * Buffer - Pointer to where the hex bytes will be stored - * - * RETURN: Ascii hex byte is stored in Buffer. - * - * DESCRIPTION: Perform hex-to-ascii translation. The return data is prefixed - * with "0x" - * - ******************************************************************************/ - -void -UtConvertByteToHex ( - UINT8 RawByte, - UINT8 *Buffer) -{ - - Buffer[0] = '0'; - Buffer[1] = 'x'; - - Buffer[2] = (UINT8) hex[(RawByte >> 4) & 0xF]; - Buffer[3] = (UINT8) hex[RawByte & 0xF]; -} - - -/******************************************************************************* - * - * FUNCTION: UtConvertByteToAsmHex - * - * PARAMETERS: RawByte - Binary data - * Buffer - Pointer to where the hex bytes will be stored - * - * RETURN: Ascii hex byte is stored in Buffer. - * - * DESCRIPTION: Perform hex-to-ascii translation. The return data is prefixed - * with "0x" - * - ******************************************************************************/ - -void -UtConvertByteToAsmHex ( - UINT8 RawByte, - UINT8 *Buffer) -{ - - Buffer[0] = '0'; - Buffer[1] = (UINT8) hex[(RawByte >> 4) & 0xF]; - Buffer[2] = (UINT8) hex[RawByte & 0xF]; - Buffer[3] = 'h'; -} - - -/******************************************************************************* - * - * FUNCTION: DbgPrint - * - * PARAMETERS: Type - Type of output - * Fmt - Printf format string - * ... - variable printf list - * - * RETURN: None - * - * DESCRIPTION: Conditional print statement. Prints to stderr only if the - * debug flag is set. - * - ******************************************************************************/ - -void -DbgPrint ( - UINT32 Type, - char *Fmt, - ...) -{ - va_list Args; - - - va_start (Args, Fmt); - - if (!Gbl_DebugFlag) - { - return; - } - - if ((Type == ASL_PARSE_OUTPUT) && - (!(AslCompilerdebug))) - { - return; - } - - (void) vfprintf (stderr, Fmt, Args); - va_end (Args); - return; -} - - -/******************************************************************************* - * - * FUNCTION: UtPrintFormattedName - * - * PARAMETERS: ParseOpcode - Parser keyword ID - * Level - Indentation level - * - * RETURN: None - * - * DESCRIPTION: Print the ascii name of the parse opcode. - * - ******************************************************************************/ - -#define TEXT_OFFSET 10 - -void -UtPrintFormattedName ( - UINT16 ParseOpcode, - UINT32 Level) -{ - - if (Level) - { - DbgPrint (ASL_TREE_OUTPUT, - "%*s", (3 * Level), " "); - } - DbgPrint (ASL_TREE_OUTPUT, - " %-20.20s", UtGetOpName (ParseOpcode)); - - if (Level < TEXT_OFFSET) - { - DbgPrint (ASL_TREE_OUTPUT, - "%*s", (TEXT_OFFSET - Level) * 3, " "); - } -} - - -/******************************************************************************* - * - * FUNCTION: UtSetParseOpName - * - * PARAMETERS: Op - * - * RETURN: None - * - * DESCRIPTION: Insert the ascii name of the parse opcode - * - ******************************************************************************/ - -void -UtSetParseOpName ( - ACPI_PARSE_OBJECT *Op) -{ - - strncpy (Op->Asl.ParseOpName, UtGetOpName (Op->Asl.ParseOpcode), - ACPI_MAX_PARSEOP_NAME); -} - - -/******************************************************************************* - * - * FUNCTION: UtGetOpName - * - * PARAMETERS: ParseOpcode - Parser keyword ID - * - * RETURN: Pointer to the opcode name - * - * DESCRIPTION: Get the ascii name of the parse opcode - * - ******************************************************************************/ - -char * -UtGetOpName ( - UINT32 ParseOpcode) -{ - - /* - * First entries (ASL_YYTNAME_START) in yytname are special reserved names. - * Ignore first 8 characters of the name - */ - return ((char *) yytname - [(ParseOpcode - ASL_FIRST_PARSE_OPCODE) + ASL_YYTNAME_START] + 8); -} - - -/******************************************************************************* - * - * FUNCTION: UtDisplaySummary - * - * PARAMETERS: FileID - ID of outpout file - * - * RETURN: None - * - * DESCRIPTION: Display compilation statistics - * - ******************************************************************************/ - -void -UtDisplaySummary ( - UINT32 FileId) -{ - - if (FileId != ASL_FILE_STDOUT) - { - /* Compiler name and version number */ - - FlPrintFile (FileId, "%s version %X [%s]\n", - CompilerId, (UINT32) ACPI_CA_VERSION, __DATE__); - } - - /* Input/Output summary */ - - FlPrintFile (FileId, - "ASL Input: %s - %d lines, %d bytes, %d keywords\n", - Gbl_Files[ASL_FILE_INPUT].Filename, Gbl_CurrentLineNumber, - Gbl_InputByteCount, TotalKeywords); - - /* AML summary */ - - if ((Gbl_ExceptionCount[ASL_ERROR] == 0) || (Gbl_IgnoreErrors)) - { - FlPrintFile (FileId, - "AML Output: %s - %d bytes %d named objects %d executable opcodes\n\n", - Gbl_Files[ASL_FILE_AML_OUTPUT].Filename, Gbl_TableLength, - TotalNamedObjects, TotalExecutableOpcodes); - } - - /* Error summary */ - - FlPrintFile (FileId, - "Compilation complete. %d Errors, %d Warnings, %d Remarks, %d Optimizations\n", - Gbl_ExceptionCount[ASL_ERROR], - Gbl_ExceptionCount[ASL_WARNING] + - Gbl_ExceptionCount[ASL_WARNING2] + - Gbl_ExceptionCount[ASL_WARNING3], - Gbl_ExceptionCount[ASL_REMARK], - Gbl_ExceptionCount[ASL_OPTIMIZATION]); -} - - -/******************************************************************************* - * - * FUNCTION: UtDisplaySummary - * - * PARAMETERS: Op - Integer parse node - * LowValue - Smallest allowed value - * HighValue - Largest allowed value - * - * RETURN: Op if OK, otherwise NULL - * - * DESCRIPTION: Check integer for an allowable range - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -UtCheckIntegerRange ( - ACPI_PARSE_OBJECT *Op, - UINT32 LowValue, - UINT32 HighValue) -{ - char *ParseError = NULL; - char Buffer[64]; - - - if (!Op) - { - return NULL; - } - - if (Op->Asl.Value.Integer < LowValue) - { - ParseError = "Value below valid range"; - Op->Asl.Value.Integer = LowValue; - } - - if (Op->Asl.Value.Integer > HighValue) - { - ParseError = "Value above valid range"; - Op->Asl.Value.Integer = HighValue; - } - - if (ParseError) - { - sprintf (Buffer, "%s 0x%X-0x%X", ParseError, LowValue, HighValue); - AslCompilererror (Buffer); - - return NULL; - } - - return Op; -} - - -/******************************************************************************* - * - * FUNCTION: UtGetStringBuffer - * - * PARAMETERS: Length - Size of buffer requested - * - * RETURN: Pointer to the buffer. Aborts on allocation failure - * - * DESCRIPTION: Allocate a string buffer. Bypass the local - * dynamic memory manager for performance reasons (This has a - * major impact on the speed of the compiler.) - * - ******************************************************************************/ - -char * -UtGetStringBuffer ( - UINT32 Length) -{ - char *Buffer; - - - if ((Gbl_StringCacheNext + Length) >= Gbl_StringCacheLast) - { - Gbl_StringCacheNext = UtLocalCalloc (ASL_STRING_CACHE_SIZE + Length); - Gbl_StringCacheLast = Gbl_StringCacheNext + ASL_STRING_CACHE_SIZE + - Length; - } - - Buffer = Gbl_StringCacheNext; - Gbl_StringCacheNext += Length; - - return (Buffer); -} - - -/******************************************************************************* - * - * FUNCTION: UtInternalizeName - * - * PARAMETERS: ExternalName - Name to convert - * ConvertedName - Where the converted name is returned - * - * RETURN: Status - * - * DESCRIPTION: Convert an external (ASL) name to an internal (AML) name - * - ******************************************************************************/ - -ACPI_STATUS -UtInternalizeName ( - char *ExternalName, - char **ConvertedName) -{ - ACPI_NAMESTRING_INFO Info; - ACPI_STATUS Status; - - - if (!ExternalName) - { - return (AE_OK); - } - - /* Get the length of the new internal name */ - - Info.ExternalName = ExternalName; - AcpiNsGetInternalNameLength (&Info); - - /* We need a segment to store the internal name */ - - Info.InternalName = UtGetStringBuffer (Info.Length); - if (!Info.InternalName) - { - return (AE_NO_MEMORY); - } - - /* Build the name */ - - Status = AcpiNsBuildInternalName (&Info); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - *ConvertedName = Info.InternalName; - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: UtPadNameWithUnderscores - * - * PARAMETERS: NameSeg - Input nameseg - * PaddedNameSeg - Output padded nameseg - * - * RETURN: Padded nameseg. - * - * DESCRIPTION: Pads a NameSeg with underscores if necessary to form a full - * ACPI_NAME. - * - ******************************************************************************/ - -static void -UtPadNameWithUnderscores ( - char *NameSeg, - char *PaddedNameSeg) -{ - UINT32 i; - - - for (i = 0; (i < ACPI_NAME_SIZE); i++) - { - if (*NameSeg) - { - *PaddedNameSeg = *NameSeg; - NameSeg++; - } - else - { - *PaddedNameSeg = '_'; - } - PaddedNameSeg++; - } -} - - -/******************************************************************************* - * - * FUNCTION: UtAttachNameseg - * - * PARAMETERS: Op - Parent parse node - * Name - Full ExternalName - * - * RETURN: None; Sets the NameSeg field in parent node - * - * DESCRIPTION: Extract the last nameseg of the ExternalName and store it - * in the NameSeg field of the Op. - * - ******************************************************************************/ - -static void -UtAttachNameseg ( - ACPI_PARSE_OBJECT *Op, - char *Name) -{ - char *NameSeg; - char PaddedNameSeg[4]; - - - if (!Name) - { - return; - } - - /* Look for the last dot in the namepath */ - - NameSeg = strrchr (Name, '.'); - if (NameSeg) - { - /* Found last dot, we have also found the final nameseg */ - - NameSeg++; - UtPadNameWithUnderscores (NameSeg, PaddedNameSeg); - } - else - { - /* No dots in the namepath, there is only a single nameseg. */ - /* Handle prefixes */ - - while ((*Name == '\\') || (*Name == '^')) - { - Name++; - } - - /* Remaing string should be one single nameseg */ - - UtPadNameWithUnderscores (Name, PaddedNameSeg); - } - - strncpy (Op->Asl.NameSeg, PaddedNameSeg, 4); -} - - -/******************************************************************************* - * - * FUNCTION: UtAttachNamepathToOwner - * - * PARAMETERS: Op - Parent parse node - * NameOp - Node that contains the name - * - * RETURN: Sets the ExternalName and Namepath in the parent node - * - * DESCRIPTION: Store the name in two forms in the parent node: The original - * (external) name, and the internalized name that is used within - * the ACPI namespace manager. - * - ******************************************************************************/ - -void -UtAttachNamepathToOwner ( - ACPI_PARSE_OBJECT *Op, - ACPI_PARSE_OBJECT *NameOp) -{ - ACPI_STATUS Status; - - - /* Full external path */ - - Op->Asl.ExternalName = NameOp->Asl.Value.String; - - /* Save the NameOp for possible error reporting later */ - - Op->Asl.ParentMethod = (void *) NameOp; - - /* Last nameseg of the path */ - - UtAttachNameseg (Op, Op->Asl.ExternalName); - - /* Create internalized path */ - - Status = UtInternalizeName (NameOp->Asl.Value.String, &Op->Asl.Namepath); - if (ACPI_FAILURE (Status)) - { - /* TBD: abort on no memory */ - } -} - - -/******************************************************************************* - * - * FUNCTION: UtDoConstant - * - * PARAMETERS: String - Hex, Octal, or Decimal string - * - * RETURN: Converted Integer - * - * DESCRIPTION: Convert a string to an integer. With error checking. - * - ******************************************************************************/ - -ACPI_INTEGER -UtDoConstant ( - char *String) -{ - ACPI_STATUS Status; - ACPI_INTEGER Converted; - char ErrBuf[64]; - - - Status = UtStrtoul64 (String, 0, &Converted); - if (ACPI_FAILURE (Status)) - { - sprintf (ErrBuf, "%s %s\n", "Conversion error:", - AcpiFormatException (Status)); - AslCompilererror (ErrBuf); - } - - return (Converted); -} - - -/* TBD: use version in ACPI CA main code base? */ - -/******************************************************************************* - * - * FUNCTION: UtStrtoul64 - * - * PARAMETERS: String - Null terminated string - * Terminater - Where a pointer to the terminating byte is - * returned - * Base - Radix of the string - * - * RETURN: Converted value - * - * DESCRIPTION: Convert a string into an unsigned value. - * - ******************************************************************************/ - -static ACPI_STATUS -UtStrtoul64 ( - char *String, - UINT32 Base, - ACPI_INTEGER *RetInteger) -{ - UINT32 Index; - UINT32 Sign; - ACPI_INTEGER ReturnValue = 0; - ACPI_STATUS Status = AE_OK; - - - *RetInteger = 0; - - switch (Base) - { - case 0: - case 8: - case 10: - case 16: - break; - - default: - /* - * The specified Base parameter is not in the domain of - * this function: - */ - return (AE_BAD_PARAMETER); - } - - /* Skip over any white space in the buffer: */ - - while (isspace (*String) || *String == '\t') - { - ++String; - } - - /* - * The buffer may contain an optional plus or minus sign. - * If it does, then skip over it but remember what is was: - */ - if (*String == '-') - { - Sign = NEGATIVE; - ++String; - } - else if (*String == '+') - { - ++String; - Sign = POSITIVE; - } - else - { - Sign = POSITIVE; - } - - /* - * If the input parameter Base is zero, then we need to - * determine if it is octal, decimal, or hexadecimal: - */ - if (Base == 0) - { - if (*String == '0') - { - if (tolower (*(++String)) == 'x') - { - Base = 16; - ++String; - } - else - { - Base = 8; - } - } - else - { - Base = 10; - } - } - - /* - * For octal and hexadecimal bases, skip over the leading - * 0 or 0x, if they are present. - */ - if (Base == 8 && *String == '0') - { - String++; - } - - if (Base == 16 && - *String == '0' && - tolower (*(++String)) == 'x') - { - String++; - } - - /* Main loop: convert the string to an unsigned long */ - - while (*String) - { - if (isdigit (*String)) - { - Index = ((UINT8) *String) - '0'; - } - else - { - Index = (UINT8) toupper (*String); - if (isupper ((char) Index)) - { - Index = Index - 'A' + 10; - } - else - { - goto ErrorExit; - } - } - - if (Index >= Base) - { - goto ErrorExit; - } - - /* Check to see if value is out of range: */ - - if (ReturnValue > ((ACPI_INTEGER_MAX - (ACPI_INTEGER) Index) / - (ACPI_INTEGER) Base)) - { - goto ErrorExit; - } - else - { - ReturnValue *= Base; - ReturnValue += Index; - } - - ++String; - } - - - /* If a minus sign was present, then "the conversion is negated": */ - - if (Sign == NEGATIVE) - { - ReturnValue = (ACPI_UINT32_MAX - ReturnValue) + 1; - } - - *RetInteger = ReturnValue; - return (Status); - - -ErrorExit: - switch (Base) - { - case 8: - Status = AE_BAD_OCTAL_CONSTANT; - break; - - case 10: - Status = AE_BAD_DECIMAL_CONSTANT; - break; - - case 16: - Status = AE_BAD_HEX_CONSTANT; - break; - - default: - /* Base validated above */ - break; - } - - return (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/compiler/readme.txt b/sys/contrib/dev/acpica-unix-20061109/compiler/readme.txt deleted file mode 100644 index fceea472e5..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/compiler/readme.txt +++ /dev/null @@ -1,85 +0,0 @@ - -Instructions for integrating iASL compiler into MS VC++ 6.0 environment. - -Part 1. Integration as a custom tool - -This procedure adds the iASL compiler as a custom tool that can be used -to compile ASL source files. The output is sent to the VC output -window. - -a) Select Tools->Customize. - -b) Select the "Tools" tab. - -c) Scroll down to the bottom of the "Menu Contents" window. There you - will see an empty rectangle. Click in the rectangle to enter a - name for this tool. - -d) Type "iASL Compiler" in the box and hit enter. You can now edit - the other fields for this new custom tool. - -e) Enter the following into the fields: - - Command: C:\Acpi\iasl.exe - Arguments: -e "$(FilePath)" - Initial Directory "$(FileDir)" - Use Output Window - - "Command" must be the path to wherever you copied the compiler. - "-e" instructs the compiler to produce messages appropriate for VC. - Quotes around FilePath and FileDir enable spaces in filenames. - -f) Select "Close". - -These steps will add the compiler to the tools menu as a custom tool. -By enabling "Use Output Window", you can click on error messages in -the output window and the source file and source line will be -automatically displayed by VC. Also, you can use F4 to step through -the messages and the corresponding source line(s). - - -Part 2. Integration into a project build - -This procedure creates a project that compiles ASL files to AML. - -a) Create a new, empty project and add your .ASL files to the project - -b) For all ASL files in the project, specify a custom build (under -Project/Settings/CustomBuild with the following settings (or similar): - -Commands: -c:\acpi\libraries\iasl.exe -vs -vi "$(InputPath)" - -Output: -$(InputDir)\$(InputPath).aml - - - -Compiler Generation From Source - -Generation of the ASL compiler from source code requires these items: - - -Required Tools -1) The Flex (or Lex) lexical analyzer generator. -2) The Bison (or Yacc) parser generator. -3) An ANSI C compiler. - - -Required Source Code. - -There are three major source code components that are required to -generate the compiler: - -1) The ASL compiler source. -2) The ACPI CA Core Subsystem source. In particular, the Namespace Manager - component is used to create an internal ACPI namespace and symbol table, - and the AML Interpreter is used to evaluate constant expressions. -3) The Common source for all ACPI components. - - - - - - - diff --git a/sys/contrib/dev/acpica-unix-20061109/debugger/dbcmds.c b/sys/contrib/dev/acpica-unix-20061109/debugger/dbcmds.c deleted file mode 100644 index 6c23876d99..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/debugger/dbcmds.c +++ /dev/null @@ -1,1841 +0,0 @@ -/******************************************************************************* - * - * Module Name: dbcmds - debug commands and output routines - * $Revision: 1.148 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acdispat.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acevents.h" -#include "acdebug.h" -#include "acresrc.h" -#include "acdisasm.h" - - -#include "acparser.h" - -#ifdef ACPI_DEBUGGER - -#define _COMPONENT ACPI_CA_DEBUGGER - ACPI_MODULE_NAME ("dbcmds") - -/* Local prototypes */ - -static ACPI_STATUS -AcpiDbIntegrityWalk ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue); - -static ACPI_STATUS -AcpiDbWalkAndMatchName ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue); - -static ACPI_STATUS -AcpiDbWalkForReferences ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue); - -static ACPI_STATUS -AcpiDbWalkForSpecificObjects ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue); - -static ACPI_NAMESPACE_NODE * -AcpiDbConvertToNode ( - char *InString); - -static void -AcpiDmCompareAmlResources ( - UINT8 *Aml1Buffer, - ACPI_RSDESC_SIZE Aml1BufferLength, - UINT8 *Aml2Buffer, - ACPI_RSDESC_SIZE Aml2BufferLength); - -static ACPI_STATUS -AcpiDmTestResourceConversion ( - ACPI_NAMESPACE_NODE *Node, - char *Name); - - -/* - * Arguments for the Objects command - * These object types map directly to the ACPI_TYPES - */ -static ARGUMENT_INFO AcpiDbObjectTypes [] = -{ - {"ANY"}, - {"INTEGERS"}, - {"STRINGS"}, - {"BUFFERS"}, - {"PACKAGES"}, - {"FIELDS"}, - {"DEVICES"}, - {"EVENTS"}, - {"METHODS"}, - {"MUTEXES"}, - {"REGIONS"}, - {"POWERRESOURCES"}, - {"PROCESSORS"}, - {"THERMALZONES"}, - {"BUFFERFIELDS"}, - {"DDBHANDLES"}, - {"DEBUG"}, - {"REGIONFIELDS"}, - {"BANKFIELDS"}, - {"INDEXFIELDS"}, - {"REFERENCES"}, - {"ALIAS"}, - {NULL} /* Must be null terminated */ -}; - - -/******************************************************************************* - * - * FUNCTION: AcpiDbConvertToNode - * - * PARAMETERS: InString - String to convert - * - * RETURN: Pointer to a NS node - * - * DESCRIPTION: Convert a string to a valid NS pointer. Handles numeric or - * alpha strings. - * - ******************************************************************************/ - -static ACPI_NAMESPACE_NODE * -AcpiDbConvertToNode ( - char *InString) -{ - ACPI_NAMESPACE_NODE *Node; - - - if ((*InString >= 0x30) && (*InString <= 0x39)) - { - /* Numeric argument, convert */ - - Node = ACPI_TO_POINTER (ACPI_STRTOUL (InString, NULL, 16)); - if (!AcpiOsReadable (Node, sizeof (ACPI_NAMESPACE_NODE))) - { - AcpiOsPrintf ("Address %p is invalid in this address space\n", - Node); - return (NULL); - } - - /* Make sure pointer is valid NS node */ - - if (ACPI_GET_DESCRIPTOR_TYPE (Node) != ACPI_DESC_TYPE_NAMED) - { - AcpiOsPrintf ("Address %p is not a valid NS node [%s]\n", - Node, AcpiUtGetDescriptorName (Node)); - return (NULL); - } - } - else - { - /* Alpha argument */ - /* The parameter is a name string that must be resolved to a - * Named obj - */ - Node = AcpiDbLocalNsLookup (InString); - if (!Node) - { - Node = AcpiGbl_RootNode; - } - } - - return (Node); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbSleep - * - * PARAMETERS: ObjectArg - Desired sleep state (0-5) - * - * RETURN: Status - * - * DESCRIPTION: Simulate a sleep/wake sequence - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbSleep ( - char *ObjectArg) -{ -#if ACPI_MACHINE_WIDTH == 16 - return (AE_OK); -#else - ACPI_STATUS Status; - UINT8 SleepState; - - - SleepState = (UINT8) ACPI_STRTOUL (ObjectArg, NULL, 0); - - AcpiOsPrintf ("**** Prepare to sleep ****\n"); - Status = AcpiEnterSleepStatePrep (SleepState); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - AcpiOsPrintf ("**** Going to sleep ****\n"); - Status = AcpiEnterSleepState (SleepState); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - AcpiOsPrintf ("**** returning from sleep ****\n"); - Status = AcpiLeaveSleepState (SleepState); - - return (Status); -#endif -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbWalkForReferences - * - * PARAMETERS: Callback from WalkNamespace - * - * RETURN: Status - * - * DESCRIPTION: Check if this namespace object refers to the target object - * that is passed in as the context value. - * - * Note: Currently doesn't check subobjects within the Node's object - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDbWalkForReferences ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue) -{ - ACPI_OPERAND_OBJECT *ObjDesc = (ACPI_OPERAND_OBJECT *) Context; - ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; - - - /* Check for match against the namespace node itself */ - - if (Node == (void *) ObjDesc) - { - AcpiOsPrintf ("Object is a Node [%4.4s]\n", - AcpiUtGetNodeName (Node)); - } - - /* Check for match against the object attached to the node */ - - if (AcpiNsGetAttachedObject (Node) == ObjDesc) - { - AcpiOsPrintf ("Reference at Node->Object %p [%4.4s]\n", - Node, AcpiUtGetNodeName (Node)); - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbFindReferences - * - * PARAMETERS: ObjectArg - String with hex value of the object - * - * RETURN: None - * - * DESCRIPTION: Search namespace for all references to the input object - * - ******************************************************************************/ - -void -AcpiDbFindReferences ( - char *ObjectArg) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - - - /* Convert string to object pointer */ - - ObjDesc = ACPI_TO_POINTER (ACPI_STRTOUL (ObjectArg, NULL, 16)); - - /* Search all nodes in namespace */ - - (void) AcpiWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, - AcpiDbWalkForReferences, (void *) ObjDesc, NULL); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayLocks - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Display information about internal mutexes. - * - ******************************************************************************/ - -void -AcpiDbDisplayLocks ( - void) -{ - UINT32 i; - - - for (i = 0; i < ACPI_MAX_MUTEX; i++) - { - AcpiOsPrintf ("%26s : %s\n", AcpiUtGetMutexName (i), - AcpiGbl_MutexInfo[i].ThreadId == ACPI_MUTEX_NOT_ACQUIRED - ? "Locked" : "Unlocked"); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayTableInfo - * - * PARAMETERS: TableArg - String with name of table to be displayed - * - * RETURN: None - * - * DESCRIPTION: Display information about loaded tables. Current - * implementation displays all loaded tables. - * - ******************************************************************************/ - -void -AcpiDbDisplayTableInfo ( - char *TableArg) -{ - ACPI_NATIVE_UINT i; - ACPI_TABLE_DESC *TableDesc; - - - /* - * Walk the root table list - */ - for (i = 0; i < AcpiGbl_RootTableList.Count; i++) - { - TableDesc = &AcpiGbl_RootTableList.Tables[i]; - AcpiOsPrintf ( "%4.4s at %p length %.5X", - TableDesc->Signature.Ascii, TableDesc->Pointer, - (UINT32) TableDesc->Length); - - if (TableDesc->Pointer && (i != ACPI_TABLE_INDEX_FACS)) - { - AcpiOsPrintf (" OemId=\"%6s\" OemTableId=\"%8s\" OemRevision=%8.8X", - TableDesc->Pointer->OemId, - TableDesc->Pointer->OemTableId, - TableDesc->Pointer->OemRevision); - } - AcpiOsPrintf ("\n"); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbUnloadAcpiTable - * - * PARAMETERS: TableArg - Name of the table to be unloaded - * InstanceArg - Which instance of the table to unload (if - * there are multiple tables of the same type) - * - * RETURN: Nonde - * - * DESCRIPTION: Unload an ACPI table. - * Instance is not implemented - * - ******************************************************************************/ - -void -AcpiDbUnloadAcpiTable ( - char *TableArg, - char *InstanceArg) -{ -/* TBD: Need to reimplement for new data structures */ - -#if 0 - UINT32 i; - ACPI_STATUS Status; - - - /* Search all tables for the target type */ - - for (i = 0; i < (ACPI_TABLE_ID_MAX+1); i++) - { - if (!ACPI_STRNCMP (TableArg, AcpiGbl_TableData[i].Signature, - AcpiGbl_TableData[i].SigLength)) - { - /* Found the table, unload it */ - - Status = AcpiUnloadTable (i); - if (ACPI_SUCCESS (Status)) - { - AcpiOsPrintf ("[%s] unloaded and uninstalled\n", TableArg); - } - else - { - AcpiOsPrintf ("%s, while unloading [%s]\n", - AcpiFormatException (Status), TableArg); - } - - return; - } - } - - AcpiOsPrintf ("Unknown table type [%s]\n", TableArg); -#endif -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbSetMethodBreakpoint - * - * PARAMETERS: Location - AML offset of breakpoint - * WalkState - Current walk info - * Op - Current Op (from parse walk) - * - * RETURN: None - * - * DESCRIPTION: Set a breakpoint in a control method at the specified - * AML offset - * - ******************************************************************************/ - -void -AcpiDbSetMethodBreakpoint ( - char *Location, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - UINT32 Address; - - - if (!Op) - { - AcpiOsPrintf ("There is no method currently executing\n"); - return; - } - - /* Get and verify the breakpoint address */ - - Address = ACPI_STRTOUL (Location, NULL, 16); - if (Address <= Op->Common.AmlOffset) - { - AcpiOsPrintf ("Breakpoint %X is beyond current address %X\n", - Address, Op->Common.AmlOffset); - } - - /* Save breakpoint in current walk */ - - WalkState->UserBreakpoint = Address; - AcpiOsPrintf ("Breakpoint set at AML offset %X\n", Address); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbSetMethodCallBreakpoint - * - * PARAMETERS: Op - Current Op (from parse walk) - * - * RETURN: None - * - * DESCRIPTION: Set a breakpoint in a control method at the specified - * AML offset - * - ******************************************************************************/ - -void -AcpiDbSetMethodCallBreakpoint ( - ACPI_PARSE_OBJECT *Op) -{ - - - if (!Op) - { - AcpiOsPrintf ("There is no method currently executing\n"); - return; - } - - AcpiGbl_StepToNextCall = TRUE; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisassembleAml - * - * PARAMETERS: Statements - Number of statements to disassemble - * Op - Current Op (from parse walk) - * - * RETURN: None - * - * DESCRIPTION: Display disassembled AML (ASL) starting from Op for the number - * of statements specified. - * - ******************************************************************************/ - -void -AcpiDbDisassembleAml ( - char *Statements, - ACPI_PARSE_OBJECT *Op) -{ - UINT32 NumStatements = 8; - - - if (!Op) - { - AcpiOsPrintf ("There is no method currently executing\n"); - return; - } - - if (Statements) - { - NumStatements = ACPI_STRTOUL (Statements, NULL, 0); - } - - AcpiDmDisassemble (NULL, Op, NumStatements); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisassembleMethod - * - * PARAMETERS: Name - Name of control method - * - * RETURN: None - * - * DESCRIPTION: Display disassembled AML (ASL) starting from Op for the number - * of statements specified. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbDisassembleMethod ( - char *Name) -{ - ACPI_STATUS Status; - ACPI_PARSE_OBJECT *Op; - ACPI_WALK_STATE *WalkState; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_NAMESPACE_NODE *Method; - - - Method = AcpiDbConvertToNode (Name); - if (!Method) - { - return (AE_BAD_PARAMETER); - } - - ObjDesc = Method->Object; - - Op = AcpiPsCreateScopeOp (); - if (!Op) - { - return (AE_NO_MEMORY); - } - - /* Create and initialize a new walk state */ - - WalkState = AcpiDsCreateWalkState (0, Op, NULL, NULL); - if (!WalkState) - { - return (AE_NO_MEMORY); - } - - Status = AcpiDsInitAmlWalk (WalkState, Op, NULL, - ObjDesc->Method.AmlStart, - ObjDesc->Method.AmlLength, NULL, ACPI_IMODE_LOAD_PASS1); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* Parse the AML */ - - WalkState->ParseFlags &= ~ACPI_PARSE_DELETE_TREE; - WalkState->ParseFlags |= ACPI_PARSE_DISASSEMBLE; - Status = AcpiPsParseAml (WalkState); - - AcpiDmDisassemble (NULL, Op, 0); - AcpiPsDeleteParseTree (Op); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDumpNamespace - * - * PARAMETERS: StartArg - Node to begin namespace dump - * DepthArg - Maximum tree depth to be dumped - * - * RETURN: None - * - * DESCRIPTION: Dump entire namespace or a subtree. Each node is displayed - * with type and other information. - * - ******************************************************************************/ - -void -AcpiDbDumpNamespace ( - char *StartArg, - char *DepthArg) -{ - ACPI_HANDLE SubtreeEntry = AcpiGbl_RootNode; - UINT32 MaxDepth = ACPI_UINT32_MAX; - - - /* No argument given, just start at the root and dump entire namespace */ - - if (StartArg) - { - SubtreeEntry = AcpiDbConvertToNode (StartArg); - if (!SubtreeEntry) - { - return; - } - - /* Now we can check for the depth argument */ - - if (DepthArg) - { - MaxDepth = ACPI_STRTOUL (DepthArg, NULL, 0); - } - } - - AcpiDbSetOutputDestination (ACPI_DB_DUPLICATE_OUTPUT); - AcpiOsPrintf ("ACPI Namespace (from %4.4s (%p) subtree):\n", - ((ACPI_NAMESPACE_NODE *) SubtreeEntry)->Name.Ascii, SubtreeEntry); - - /* Display the subtree */ - - AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT); - AcpiNsDumpObjects (ACPI_TYPE_ANY, ACPI_DISPLAY_SUMMARY, MaxDepth, - ACPI_OWNER_ID_MAX, SubtreeEntry); - AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDumpNamespaceByOwner - * - * PARAMETERS: OwnerArg - Owner ID whose nodes will be displayed - * DepthArg - Maximum tree depth to be dumped - * - * RETURN: None - * - * DESCRIPTION: Dump elements of the namespace that are owned by the OwnerId. - * - ******************************************************************************/ - -void -AcpiDbDumpNamespaceByOwner ( - char *OwnerArg, - char *DepthArg) -{ - ACPI_HANDLE SubtreeEntry = AcpiGbl_RootNode; - UINT32 MaxDepth = ACPI_UINT32_MAX; - ACPI_OWNER_ID OwnerId; - - - OwnerId = (ACPI_OWNER_ID) ACPI_STRTOUL (OwnerArg, NULL, 0); - - /* Now we can check for the depth argument */ - - if (DepthArg) - { - MaxDepth = ACPI_STRTOUL (DepthArg, NULL, 0); - } - - AcpiDbSetOutputDestination (ACPI_DB_DUPLICATE_OUTPUT); - AcpiOsPrintf ("ACPI Namespace by owner %X:\n", OwnerId); - - /* Display the subtree */ - - AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT); - AcpiNsDumpObjects (ACPI_TYPE_ANY, ACPI_DISPLAY_SUMMARY, MaxDepth, OwnerId, - SubtreeEntry); - AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbSendNotify - * - * PARAMETERS: Name - Name of ACPI object to send the notify to - * Value - Value of the notify to send. - * - * RETURN: None - * - * DESCRIPTION: Send an ACPI notification. The value specified is sent to the - * named object as an ACPI notify. - * - ******************************************************************************/ - -void -AcpiDbSendNotify ( - char *Name, - UINT32 Value) -{ - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - - - /* Translate name to an Named object */ - - Node = AcpiDbConvertToNode (Name); - if (!Node) - { - return; - } - - /* Decode Named object type */ - - switch (Node->Type) - { - case ACPI_TYPE_DEVICE: - case ACPI_TYPE_THERMAL: - - /* Send the notify */ - - Status = AcpiEvQueueNotifyRequest (Node, Value); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not queue notify\n"); - } - break; - - default: - AcpiOsPrintf ("Named object is not a device or a thermal object\n"); - break; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbSetMethodData - * - * PARAMETERS: TypeArg - L for local, A for argument - * IndexArg - which one - * ValueArg - Value to set. - * - * RETURN: None - * - * DESCRIPTION: Set a local or argument for the running control method. - * NOTE: only object supported is Number. - * - ******************************************************************************/ - -void -AcpiDbSetMethodData ( - char *TypeArg, - char *IndexArg, - char *ValueArg) -{ - char Type; - UINT32 Index; - UINT32 Value; - ACPI_WALK_STATE *WalkState; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - - - /* Validate TypeArg */ - - AcpiUtStrupr (TypeArg); - Type = TypeArg[0]; - if ((Type != 'L') && - (Type != 'A') && - (Type != 'N')) - { - AcpiOsPrintf ("Invalid SET operand: %s\n", TypeArg); - return; - } - - Value = ACPI_STRTOUL (ValueArg, NULL, 16); - - if (Type == 'N') - { - Node = AcpiDbConvertToNode (IndexArg); - if (Node->Type != ACPI_TYPE_INTEGER) - { - AcpiOsPrintf ("Can only set Integer nodes\n"); - return; - } - ObjDesc = Node->Object; - ObjDesc->Integer.Value = Value; - return; - } - - /* Get the index and value */ - - Index = ACPI_STRTOUL (IndexArg, NULL, 16); - - WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); - if (!WalkState) - { - AcpiOsPrintf ("There is no method currently executing\n"); - return; - } - - /* Create and initialize the new object */ - - ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); - if (!ObjDesc) - { - AcpiOsPrintf ("Could not create an internal object\n"); - return; - } - - ObjDesc->Integer.Value = Value; - - /* Store the new object into the target */ - - switch (Type) - { - case 'A': - - /* Set a method argument */ - - if (Index > ACPI_METHOD_MAX_ARG) - { - AcpiOsPrintf ("Arg%d - Invalid argument name\n", Index); - goto Cleanup; - } - - Status = AcpiDsStoreObjectToLocal (AML_ARG_OP, Index, ObjDesc, - WalkState); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - ObjDesc = WalkState->Arguments[Index].Object; - - AcpiOsPrintf ("Arg%d: ", Index); - AcpiDmDisplayInternalObject (ObjDesc, WalkState); - break; - - case 'L': - - /* Set a method local */ - - if (Index > ACPI_METHOD_MAX_LOCAL) - { - AcpiOsPrintf ("Local%d - Invalid local variable name\n", Index); - goto Cleanup; - } - - Status = AcpiDsStoreObjectToLocal (AML_LOCAL_OP, Index, ObjDesc, - WalkState); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - ObjDesc = WalkState->LocalVariables[Index].Object; - - AcpiOsPrintf ("Local%d: ", Index); - AcpiDmDisplayInternalObject (ObjDesc, WalkState); - break; - - default: - break; - } - -Cleanup: - AcpiUtRemoveReference (ObjDesc); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbWalkForSpecificObjects - * - * PARAMETERS: Callback from WalkNamespace - * - * RETURN: Status - * - * DESCRIPTION: Display short info about objects in the namespace - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDbWalkForSpecificObjects ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue) -{ - ACPI_WALK_INFO *Info = (ACPI_WALK_INFO *) Context; - ACPI_BUFFER Buffer; - ACPI_STATUS Status; - - - Info->Count++; - - /* Get and display the full pathname to this object */ - - Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - Status = AcpiNsHandleToPathname (ObjHandle, &Buffer); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could Not get pathname for object %p\n", ObjHandle); - return (AE_OK); - } - - AcpiOsPrintf ("%32s", (char *) Buffer.Pointer); - ACPI_FREE (Buffer.Pointer); - - /* Dump short info about the object */ - - (void) AcpiNsDumpOneObject (ObjHandle, NestingLevel, Info, NULL); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayObjects - * - * PARAMETERS: ObjTypeArg - Type of object to display - * DisplayCountArg - Max depth to display - * - * RETURN: None - * - * DESCRIPTION: Display objects in the namespace of the requested type - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbDisplayObjects ( - char *ObjTypeArg, - char *DisplayCountArg) -{ - ACPI_WALK_INFO Info; - ACPI_OBJECT_TYPE Type; - - - /* Get the object type */ - - Type = AcpiDbMatchArgument (ObjTypeArg, AcpiDbObjectTypes); - if (Type == ACPI_TYPE_NOT_FOUND) - { - AcpiOsPrintf ("Invalid or unsupported argument\n"); - return (AE_OK); - } - - AcpiDbSetOutputDestination (ACPI_DB_DUPLICATE_OUTPUT); - AcpiOsPrintf ( - "Objects of type [%s] defined in the current ACPI Namespace:\n", - AcpiUtGetTypeName (Type)); - - AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT); - - Info.Count = 0; - Info.OwnerId = ACPI_OWNER_ID_MAX; - Info.DebugLevel = ACPI_UINT32_MAX; - Info.DisplayType = ACPI_DISPLAY_SUMMARY | ACPI_DISPLAY_SHORT; - - /* Walk the namespace from the root */ - - (void) AcpiWalkNamespace (Type, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, - AcpiDbWalkForSpecificObjects, (void *) &Info, NULL); - - AcpiOsPrintf ( - "\nFound %u objects of type [%s] in the current ACPI Namespace\n", - Info.Count, AcpiUtGetTypeName (Type)); - - AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbWalkAndMatchName - * - * PARAMETERS: Callback from WalkNamespace - * - * RETURN: Status - * - * DESCRIPTION: Find a particular name/names within the namespace. Wildcards - * are supported -- '?' matches any character. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDbWalkAndMatchName ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue) -{ - ACPI_STATUS Status; - char *RequestedName = (char *) Context; - UINT32 i; - ACPI_BUFFER Buffer; - ACPI_WALK_INFO Info; - - - /* Check for a name match */ - - for (i = 0; i < 4; i++) - { - /* Wildcard support */ - - if ((RequestedName[i] != '?') && - (RequestedName[i] != ((ACPI_NAMESPACE_NODE *) ObjHandle)->Name.Ascii[i])) - { - /* No match, just exit */ - - return (AE_OK); - } - } - - /* Get the full pathname to this object */ - - Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - Status = AcpiNsHandleToPathname (ObjHandle, &Buffer); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could Not get pathname for object %p\n", ObjHandle); - } - else - { - Info.OwnerId = ACPI_OWNER_ID_MAX; - Info.DebugLevel = ACPI_UINT32_MAX; - Info.DisplayType = ACPI_DISPLAY_SUMMARY | ACPI_DISPLAY_SHORT; - - AcpiOsPrintf ("%32s", (char *) Buffer.Pointer); - (void) AcpiNsDumpOneObject (ObjHandle, NestingLevel, &Info, NULL); - ACPI_FREE (Buffer.Pointer); - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbFindNameInNamespace - * - * PARAMETERS: NameArg - The 4-character ACPI name to find. - * wildcards are supported. - * - * RETURN: None - * - * DESCRIPTION: Search the namespace for a given name (with wildcards) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbFindNameInNamespace ( - char *NameArg) -{ - - if (ACPI_STRLEN (NameArg) > 4) - { - AcpiOsPrintf ("Name must be no longer than 4 characters\n"); - return (AE_OK); - } - - /* Walk the namespace from the root */ - - AcpiUtStrupr (NameArg); - (void) AcpiWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, - AcpiDbWalkAndMatchName, NameArg, NULL); - - AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbSetScope - * - * PARAMETERS: Name - New scope path - * - * RETURN: Status - * - * DESCRIPTION: Set the "current scope" as maintained by this utility. - * The scope is used as a prefix to ACPI paths. - * - ******************************************************************************/ - -void -AcpiDbSetScope ( - char *Name) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - - - if (!Name || Name[0] == 0) - { - AcpiOsPrintf ("Current scope: %s\n", AcpiGbl_DbScopeBuf); - return; - } - - AcpiDbPrepNamestring (Name); - - if (Name[0] == '\\') - { - /* Validate new scope from the root */ - - Status = AcpiNsGetNode (AcpiGbl_RootNode, Name, ACPI_NS_NO_UPSEARCH, - &Node); - if (ACPI_FAILURE (Status)) - { - goto ErrorExit; - } - - ACPI_STRCPY (AcpiGbl_DbScopeBuf, Name); - ACPI_STRCAT (AcpiGbl_DbScopeBuf, "\\"); - } - else - { - /* Validate new scope relative to old scope */ - - Status = AcpiNsGetNode (AcpiGbl_DbScopeNode, Name, ACPI_NS_NO_UPSEARCH, - &Node); - if (ACPI_FAILURE (Status)) - { - goto ErrorExit; - } - - ACPI_STRCAT (AcpiGbl_DbScopeBuf, Name); - ACPI_STRCAT (AcpiGbl_DbScopeBuf, "\\"); - } - - AcpiGbl_DbScopeNode = Node; - AcpiOsPrintf ("New scope: %s\n", AcpiGbl_DbScopeBuf); - return; - -ErrorExit: - - AcpiOsPrintf ("Could not attach scope: %s, %s\n", - Name, AcpiFormatException (Status)); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmCompareAmlResources - * - * PARAMETERS: Aml1Buffer - Contains first resource list - * Aml1BufferLength - Length of first resource list - * Aml2Buffer - Contains second resource list - * Aml2BufferLength - Length of second resource list - * - * RETURN: None - * - * DESCRIPTION: Compare two AML resource lists, descriptor by descriptor (in - * order to isolate a miscompare to an individual resource) - * - ******************************************************************************/ - -static void -AcpiDmCompareAmlResources ( - UINT8 *Aml1Buffer, - ACPI_RSDESC_SIZE Aml1BufferLength, - UINT8 *Aml2Buffer, - ACPI_RSDESC_SIZE Aml2BufferLength) -{ - UINT8 *Aml1; - UINT8 *Aml2; - ACPI_RSDESC_SIZE Aml1Length; - ACPI_RSDESC_SIZE Aml2Length; - ACPI_RSDESC_SIZE Offset = 0; - UINT8 ResourceType; - UINT32 Count = 0; - - - /* Compare overall buffer sizes (may be different due to size rounding) */ - - if (Aml1BufferLength != Aml2BufferLength) - { - AcpiOsPrintf ( - "**** Buffer length mismatch in converted AML: original %X new %X ****\n", - Aml1BufferLength, Aml2BufferLength); - } - - Aml1 = Aml1Buffer; - Aml2 = Aml2Buffer; - - /* Walk the descriptor lists, comparing each descriptor */ - - while (Aml1 < (Aml1Buffer + Aml1BufferLength)) - { - /* Get the lengths of each descriptor */ - - Aml1Length = AcpiUtGetDescriptorLength (Aml1); - Aml2Length = AcpiUtGetDescriptorLength (Aml2); - ResourceType = AcpiUtGetResourceType (Aml1); - - /* Check for descriptor length match */ - - if (Aml1Length != Aml2Length) - { - AcpiOsPrintf ( - "**** Length mismatch in descriptor [%.2X] type %2.2X, Offset %8.8X L1 %X L2 %X ****\n", - Count, ResourceType, Offset, Aml1Length, Aml2Length); - } - - /* Check for descriptor byte match */ - - else if (ACPI_MEMCMP (Aml1, Aml2, Aml1Length)) - { - AcpiOsPrintf ( - "**** Data mismatch in descriptor [%.2X] type %2.2X, Offset %8.8X ****\n", - Count, ResourceType, Offset); - } - - /* Exit on EndTag descriptor */ - - if (ResourceType == ACPI_RESOURCE_NAME_END_TAG) - { - return; - } - - /* Point to next descriptor in each buffer */ - - Count++; - Offset += Aml1Length; - Aml1 += Aml1Length; - Aml2 += Aml2Length; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmTestResourceConversion - * - * PARAMETERS: Node - Parent device node - * Name - resource method name (_CRS) - * - * RETURN: Status - * - * DESCRIPTION: Compare the original AML with a conversion of the AML to - * internal resource list, then back to AML. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDmTestResourceConversion ( - ACPI_NAMESPACE_NODE *Node, - char *Name) -{ - ACPI_STATUS Status; - ACPI_BUFFER ReturnObj; - ACPI_BUFFER ResourceObj; - ACPI_BUFFER NewAml; - ACPI_OBJECT *OriginalAml; - - - AcpiOsPrintf ("Resource Conversion Comparison:\n"); - - NewAml.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - ReturnObj.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - ResourceObj.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - - /* Get the original _CRS AML resource template */ - - Status = AcpiEvaluateObject (Node, Name, NULL, &ReturnObj); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not obtain %s: %s\n", - Name, AcpiFormatException (Status)); - return (Status); - } - - /* Get the AML resource template, converted to internal resource structs */ - - Status = AcpiGetCurrentResources (Node, &ResourceObj); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("AcpiGetCurrentResources failed: %s\n", - AcpiFormatException (Status)); - goto Exit1; - } - - /* Convert internal resource list to external AML resource template */ - - Status = AcpiRsCreateAmlResources (ResourceObj.Pointer, &NewAml); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("AcpiRsCreateAmlResources failed: %s\n", - AcpiFormatException (Status)); - goto Exit2; - } - - /* Compare original AML to the newly created AML resource list */ - - OriginalAml = ReturnObj.Pointer; - - AcpiDmCompareAmlResources ( - OriginalAml->Buffer.Pointer, OriginalAml->Buffer.Length, - NewAml.Pointer, NewAml.Length); - - /* Cleanup and exit */ - - ACPI_FREE (NewAml.Pointer); -Exit2: - ACPI_FREE (ResourceObj.Pointer); -Exit1: - ACPI_FREE (ReturnObj.Pointer); - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayResources - * - * PARAMETERS: ObjectArg - String with hex value of the object - * - * RETURN: None - * - * DESCRIPTION: Display the resource objects associated with a device. - * - ******************************************************************************/ - -void -AcpiDbDisplayResources ( - char *ObjectArg) -{ -#if ACPI_MACHINE_WIDTH != 16 - - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - ACPI_BUFFER ReturnObj; - - - AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT); - AcpiDbgLevel |= ACPI_LV_RESOURCES; - - /* Convert string to object pointer */ - - Node = AcpiDbConvertToNode (ObjectArg); - if (!Node) - { - return; - } - - /* Prepare for a return object of arbitrary size */ - - ReturnObj.Pointer = AcpiGbl_DbBuffer; - ReturnObj.Length = ACPI_DEBUG_BUFFER_SIZE; - - /* _PRT */ - - AcpiOsPrintf ("Evaluating _PRT\n"); - - /* Check if _PRT exists */ - - Status = AcpiEvaluateObject (Node, METHOD_NAME__PRT, NULL, &ReturnObj); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not obtain _PRT: %s\n", - AcpiFormatException (Status)); - goto GetCrs; - } - - ReturnObj.Pointer = AcpiGbl_DbBuffer; - ReturnObj.Length = ACPI_DEBUG_BUFFER_SIZE; - - Status = AcpiGetIrqRoutingTable (Node, &ReturnObj); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("GetIrqRoutingTable failed: %s\n", - AcpiFormatException (Status)); - goto GetCrs; - } - - AcpiRsDumpIrqList (ACPI_CAST_PTR (UINT8, AcpiGbl_DbBuffer)); - - - /* _CRS */ - -GetCrs: - AcpiOsPrintf ("Evaluating _CRS\n"); - - ReturnObj.Pointer = AcpiGbl_DbBuffer; - ReturnObj.Length = ACPI_DEBUG_BUFFER_SIZE; - - /* Check if _CRS exists */ - - Status = AcpiEvaluateObject (Node, METHOD_NAME__CRS, NULL, &ReturnObj); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not obtain _CRS: %s\n", - AcpiFormatException (Status)); - goto GetPrs; - } - - /* Get the _CRS resource list */ - - ReturnObj.Pointer = AcpiGbl_DbBuffer; - ReturnObj.Length = ACPI_DEBUG_BUFFER_SIZE; - - Status = AcpiGetCurrentResources (Node, &ReturnObj); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("AcpiGetCurrentResources failed: %s\n", - AcpiFormatException (Status)); - goto GetPrs; - } - - /* Dump the _CRS resource list */ - - AcpiRsDumpResourceList (ACPI_CAST_PTR (ACPI_RESOURCE, - ReturnObj.Pointer)); - - /* - * Perform comparison of original AML to newly created AML. This tests both - * the AML->Resource conversion and the Resource->Aml conversion. - */ - Status = AcpiDmTestResourceConversion (Node, METHOD_NAME__CRS); - - /* Execute _SRS with the resource list */ - - Status = AcpiSetCurrentResources (Node, &ReturnObj); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("AcpiSetCurrentResources failed: %s\n", - AcpiFormatException (Status)); - goto GetPrs; - } - - - /* _PRS */ - -GetPrs: - AcpiOsPrintf ("Evaluating _PRS\n"); - - ReturnObj.Pointer = AcpiGbl_DbBuffer; - ReturnObj.Length = ACPI_DEBUG_BUFFER_SIZE; - - /* Check if _PRS exists */ - - Status = AcpiEvaluateObject (Node, METHOD_NAME__PRS, NULL, &ReturnObj); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not obtain _PRS: %s\n", - AcpiFormatException (Status)); - goto Cleanup; - } - - ReturnObj.Pointer = AcpiGbl_DbBuffer; - ReturnObj.Length = ACPI_DEBUG_BUFFER_SIZE; - - Status = AcpiGetPossibleResources (Node, &ReturnObj); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("AcpiGetPossibleResources failed: %s\n", - AcpiFormatException (Status)); - goto Cleanup; - } - - AcpiRsDumpResourceList (ACPI_CAST_PTR (ACPI_RESOURCE, AcpiGbl_DbBuffer)); - -Cleanup: - - AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); - return; -#endif -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbIntegrityWalk - * - * PARAMETERS: Callback from WalkNamespace - * - * RETURN: Status - * - * DESCRIPTION: Examine one NS node for valid values. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDbIntegrityWalk ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue) -{ - ACPI_INTEGRITY_INFO *Info = (ACPI_INTEGRITY_INFO *) Context; - ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; - ACPI_OPERAND_OBJECT *Object; - - - Info->Nodes++; - if (ACPI_GET_DESCRIPTOR_TYPE (Node) != ACPI_DESC_TYPE_NAMED) - { - AcpiOsPrintf ("Invalid Descriptor Type for Node %p [%s]\n", - Node, AcpiUtGetDescriptorName (Node)); - } - - if (Node->Type > ACPI_TYPE_LOCAL_MAX) - { - AcpiOsPrintf ("Invalid Object Type for Node %p, Type = %X\n", - Node, Node->Type); - } - - if (!AcpiUtValidAcpiName (Node->Name.Integer)) - { - AcpiOsPrintf ("Invalid AcpiName for Node %p\n", Node); - } - - Object = AcpiNsGetAttachedObject (Node); - if (Object) - { - Info->Objects++; - if (ACPI_GET_DESCRIPTOR_TYPE (Object) != ACPI_DESC_TYPE_OPERAND) - { - AcpiOsPrintf ("Invalid Descriptor Type for Object %p [%s]\n", - Object, AcpiUtGetDescriptorName (Object)); - } - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbCheckIntegrity - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Check entire namespace for data structure integrity - * - ******************************************************************************/ - -void -AcpiDbCheckIntegrity ( - void) -{ - ACPI_INTEGRITY_INFO Info = {0,0}; - - /* Search all nodes in namespace */ - - (void) AcpiWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, - AcpiDbIntegrityWalk, (void *) &Info, NULL); - - AcpiOsPrintf ("Verified %d namespace nodes with %d Objects\n", - Info.Nodes, Info.Objects); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbGenerateGpe - * - * PARAMETERS: GpeArg - Raw GPE number, ascii string - * BlockArg - GPE block number, ascii string - * 0 or 1 for FADT GPE blocks - * - * RETURN: None - * - * DESCRIPTION: Generate a GPE - * - ******************************************************************************/ - -void -AcpiDbGenerateGpe ( - char *GpeArg, - char *BlockArg) -{ - UINT32 BlockNumber; - UINT32 GpeNumber; - ACPI_GPE_EVENT_INFO *GpeEventInfo; - - - GpeNumber = ACPI_STRTOUL (GpeArg, NULL, 0); - BlockNumber = ACPI_STRTOUL (BlockArg, NULL, 0); - - - GpeEventInfo = AcpiEvGetGpeEventInfo (ACPI_TO_POINTER (BlockNumber), - GpeNumber); - if (!GpeEventInfo) - { - AcpiOsPrintf ("Invalid GPE\n"); - return; - } - - (void) AcpiEvGpeDispatch (GpeEventInfo, GpeNumber); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbBusWalk - * - * PARAMETERS: Callback from WalkNamespace - * - * RETURN: Status - * - * DESCRIPTION: Display info about device objects that have a corresponding - * _PRT method. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDbBusWalk ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue) -{ - ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; - ACPI_STATUS Status; - ACPI_BUFFER Buffer; - ACPI_INTEGER ADR; - ACPI_DEVICE_ID Id; - ACPI_COMPATIBLE_ID_LIST *Cid; - ACPI_NAMESPACE_NODE *TempNode; - - - /* Exit if there is no _PRT under this device */ - - Status = AcpiGetHandle (Node, METHOD_NAME__PRT, - ACPI_CAST_PTR (ACPI_HANDLE, &TempNode)); - if (ACPI_FAILURE (Status)) - { - return (AE_OK); - } - - /* Get the full path to this device object */ - - Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - Status = AcpiNsHandleToPathname (ObjHandle, &Buffer); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could Not get pathname for object %p\n", ObjHandle); - return (AE_OK); - } - - /* Display the full path */ - - AcpiOsPrintf ("%-32s", (char *) Buffer.Pointer); - ACPI_FREE (Buffer.Pointer); - - /* _PRT info */ - - AcpiOsPrintf ("_PRT=%p", TempNode); - - /* Get the _ADR value */ - - Status = AcpiUtEvaluateNumericObject (METHOD_NAME__ADR, Node, &ADR); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf (" No _ADR "); - } - else - { - AcpiOsPrintf (" _ADR=%8.8X", (UINT32) ADR); - } - - /* Get the _HID if present */ - - Status = AcpiUtExecute_HID (Node, &Id); - if (ACPI_SUCCESS (Status)) - { - AcpiOsPrintf (" _HID=%s", Id.Value); - } - else - { - AcpiOsPrintf (" "); - } - - /* Get the _UID if present */ - - Status = AcpiUtExecute_UID (Node, &Id); - if (ACPI_SUCCESS (Status)) - { - AcpiOsPrintf (" _UID=%s", Id.Value); - } - - /* Get the _CID if present */ - - Status = AcpiUtExecute_CID (Node, &Cid); - if (ACPI_SUCCESS (Status)) - { - AcpiOsPrintf (" _CID=%s", Cid->Id[0].Value); - ACPI_FREE (Cid); - } - - AcpiOsPrintf ("\n"); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbGetBusInfo - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Display info about system busses. - * - ******************************************************************************/ - -void -AcpiDbGetBusInfo ( - void) -{ - /* Search all nodes in namespace */ - - (void) AcpiWalkNamespace (ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, - AcpiDbBusWalk, NULL, NULL); -} - -#endif /* ACPI_DEBUGGER */ diff --git a/sys/contrib/dev/acpica-unix-20061109/debugger/dbdisply.c b/sys/contrib/dev/acpica-unix-20061109/debugger/dbdisply.c deleted file mode 100644 index 49b6d196e0..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/debugger/dbdisply.c +++ /dev/null @@ -1,965 +0,0 @@ -/******************************************************************************* - * - * Module Name: dbdisply - debug display commands - * $Revision: 1.117 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "amlcode.h" -#include "acdispat.h" -#include "acnamesp.h" -#include "acparser.h" -#include "acinterp.h" -#include "acdebug.h" -#include "acdisasm.h" - - -#ifdef ACPI_DEBUGGER - -#define _COMPONENT ACPI_CA_DEBUGGER - ACPI_MODULE_NAME ("dbdisply") - -/* Local prototypes */ - -static void -AcpiDbDumpParserDescriptor ( - ACPI_PARSE_OBJECT *Op); - -static void * -AcpiDbGetPointer ( - void *Target); - - -/******************************************************************************* - * - * FUNCTION: AcpiDbGetPointer - * - * PARAMETERS: Target - Pointer to string to be converted - * - * RETURN: Converted pointer - * - * DESCRIPTION: Convert an ascii pointer value to a real value - * - ******************************************************************************/ - -static void * -AcpiDbGetPointer ( - void *Target) -{ - void *ObjPtr; - - -#if ACPI_MACHINE_WIDTH == 16 -#include - - /* Have to handle 16-bit pointers of the form segment:offset */ - - if (!sscanf (Target, "%p", &ObjPtr)) - { - AcpiOsPrintf ("Invalid pointer: %s\n", Target); - return (NULL); - } - -#else - - /* Simple flat pointer */ - - ObjPtr = ACPI_TO_POINTER (ACPI_STRTOUL (Target, NULL, 16)); -#endif - - return (ObjPtr); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDumpParserDescriptor - * - * PARAMETERS: Op - A parser Op descriptor - * - * RETURN: None - * - * DESCRIPTION: Display a formatted parser object - * - ******************************************************************************/ - -static void -AcpiDbDumpParserDescriptor ( - ACPI_PARSE_OBJECT *Op) -{ - const ACPI_OPCODE_INFO *Info; - - - Info = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - - AcpiOsPrintf ("Parser Op Descriptor:\n"); - AcpiOsPrintf ("%20.20s : %4.4X\n", "Opcode", Op->Common.AmlOpcode); - - ACPI_DEBUG_ONLY_MEMBERS (AcpiOsPrintf ("%20.20s : %s\n", "Opcode Name", - Info->Name)); - - AcpiOsPrintf ("%20.20s : %p\n", "Value/ArgList", Op->Common.Value.Arg); - AcpiOsPrintf ("%20.20s : %p\n", "Parent", Op->Common.Parent); - AcpiOsPrintf ("%20.20s : %p\n", "NextOp", Op->Common.Next); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDecodeAndDisplayObject - * - * PARAMETERS: Target - String with object to be displayed. Names - * and hex pointers are supported. - * OutputType - Byte, Word, Dword, or Qword (B|W|D|Q) - * - * RETURN: None - * - * DESCRIPTION: Display a formatted ACPI object - * - ******************************************************************************/ - -void -AcpiDbDecodeAndDisplayObject ( - char *Target, - char *OutputType) -{ - void *ObjPtr; - ACPI_NAMESPACE_NODE *Node; - ACPI_OPERAND_OBJECT *ObjDesc; - UINT32 Display = DB_BYTE_DISPLAY; - char Buffer[80]; - ACPI_BUFFER RetBuf; - ACPI_STATUS Status; - UINT32 Size; - - - if (!Target) - { - return; - } - - /* Decode the output type */ - - if (OutputType) - { - AcpiUtStrupr (OutputType); - if (OutputType[0] == 'W') - { - Display = DB_WORD_DISPLAY; - } - else if (OutputType[0] == 'D') - { - Display = DB_DWORD_DISPLAY; - } - else if (OutputType[0] == 'Q') - { - Display = DB_QWORD_DISPLAY; - } - } - - RetBuf.Length = sizeof (Buffer); - RetBuf.Pointer = Buffer; - - /* Differentiate between a number and a name */ - - if ((Target[0] >= 0x30) && (Target[0] <= 0x39)) - { - ObjPtr = AcpiDbGetPointer (Target); - if (!AcpiOsReadable (ObjPtr, 16)) - { - AcpiOsPrintf ("Address %p is invalid in this address space\n", - ObjPtr); - return; - } - - /* Decode the object type */ - - switch (ACPI_GET_DESCRIPTOR_TYPE (ObjPtr)) - { - case ACPI_DESC_TYPE_NAMED: - - /* This is a namespace Node */ - - if (!AcpiOsReadable (ObjPtr, sizeof (ACPI_NAMESPACE_NODE))) - { - AcpiOsPrintf ( - "Cannot read entire Named object at address %p\n", ObjPtr); - return; - } - - Node = ObjPtr; - goto DumpNode; - - - case ACPI_DESC_TYPE_OPERAND: - - /* This is a ACPI OPERAND OBJECT */ - - if (!AcpiOsReadable (ObjPtr, sizeof (ACPI_OPERAND_OBJECT))) - { - AcpiOsPrintf ("Cannot read entire ACPI object at address %p\n", - ObjPtr); - return; - } - - AcpiUtDumpBuffer (ObjPtr, sizeof (ACPI_OPERAND_OBJECT), Display, - ACPI_UINT32_MAX); - AcpiExDumpObjectDescriptor (ObjPtr, 1); - break; - - - case ACPI_DESC_TYPE_PARSER: - - /* This is a Parser Op object */ - - if (!AcpiOsReadable (ObjPtr, sizeof (ACPI_PARSE_OBJECT))) - { - AcpiOsPrintf ( - "Cannot read entire Parser object at address %p\n", ObjPtr); - return; - } - - AcpiUtDumpBuffer (ObjPtr, sizeof (ACPI_PARSE_OBJECT), Display, - ACPI_UINT32_MAX); - AcpiDbDumpParserDescriptor ((ACPI_PARSE_OBJECT *) ObjPtr); - break; - - - default: - - /* Is not a recognizeable object */ - - Size = 16; - if (AcpiOsReadable (ObjPtr, 64)) - { - Size = 64; - } - - /* Just dump some memory */ - - AcpiUtDumpBuffer (ObjPtr, Size, Display, ACPI_UINT32_MAX); - break; - } - - return; - } - - /* The parameter is a name string that must be resolved to a Named obj */ - - Node = AcpiDbLocalNsLookup (Target); - if (!Node) - { - return; - } - - -DumpNode: - /* Now dump the NS node */ - - Status = AcpiGetName (Node, ACPI_FULL_PATHNAME, &RetBuf); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not convert name to pathname\n"); - } - - else - { - AcpiOsPrintf ("Object (%p) Pathname: %s\n", - Node, (char *) RetBuf.Pointer); - } - - if (!AcpiOsReadable (Node, sizeof (ACPI_NAMESPACE_NODE))) - { - AcpiOsPrintf ("Invalid Named object at address %p\n", Node); - return; - } - - AcpiUtDumpBuffer ((void *) Node, sizeof (ACPI_NAMESPACE_NODE), - Display, ACPI_UINT32_MAX); - AcpiExDumpNamespaceNode (Node, 1); - - ObjDesc = AcpiNsGetAttachedObject (Node); - if (ObjDesc) - { - AcpiOsPrintf ("\nAttached Object (%p):\n", ObjDesc); - if (!AcpiOsReadable (ObjDesc, sizeof (ACPI_OPERAND_OBJECT))) - { - AcpiOsPrintf ("Invalid internal ACPI Object at address %p\n", - ObjDesc); - return; - } - - AcpiUtDumpBuffer ((void *) ObjDesc, sizeof (ACPI_OPERAND_OBJECT), - Display, ACPI_UINT32_MAX); - AcpiExDumpObjectDescriptor (ObjDesc, 1); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayMethodInfo - * - * PARAMETERS: StartOp - Root of the control method parse tree - * - * RETURN: None - * - * DESCRIPTION: Display information about the current method - * - ******************************************************************************/ - -void -AcpiDbDisplayMethodInfo ( - ACPI_PARSE_OBJECT *StartOp) -{ - ACPI_WALK_STATE *WalkState; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_NAMESPACE_NODE *Node; - ACPI_PARSE_OBJECT *RootOp; - ACPI_PARSE_OBJECT *Op; - const ACPI_OPCODE_INFO *OpInfo; - UINT32 NumOps = 0; - UINT32 NumOperands = 0; - UINT32 NumOperators = 0; - UINT32 NumRemainingOps = 0; - UINT32 NumRemainingOperands = 0; - UINT32 NumRemainingOperators = 0; - BOOLEAN CountRemaining = FALSE; - - - WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); - if (!WalkState) - { - AcpiOsPrintf ("There is no method currently executing\n"); - return; - } - - ObjDesc = WalkState->MethodDesc; - Node = WalkState->MethodNode; - - AcpiOsPrintf ("Currently executing control method is [%4.4s]\n", - AcpiUtGetNodeName (Node)); - AcpiOsPrintf ("%X Arguments, SyncLevel = %X\n", - (UINT32) ObjDesc->Method.ParamCount, - (UINT32) ObjDesc->Method.SyncLevel); - - - RootOp = StartOp; - while (RootOp->Common.Parent) - { - RootOp = RootOp->Common.Parent; - } - - Op = RootOp; - - while (Op) - { - if (Op == StartOp) - { - CountRemaining = TRUE; - } - - NumOps++; - if (CountRemaining) - { - NumRemainingOps++; - } - - /* Decode the opcode */ - - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - switch (OpInfo->Class) - { - case AML_CLASS_ARGUMENT: - if (CountRemaining) - { - NumRemainingOperands++; - } - - NumOperands++; - break; - - case AML_CLASS_UNKNOWN: - /* Bad opcode or ASCII character */ - - continue; - - default: - if (CountRemaining) - { - NumRemainingOperators++; - } - - NumOperators++; - break; - } - - Op = AcpiPsGetDepthNext (StartOp, Op); - } - - AcpiOsPrintf ( - "Method contains: %X AML Opcodes - %X Operators, %X Operands\n", - NumOps, NumOperators, NumOperands); - - AcpiOsPrintf ( - "Remaining to execute: %X AML Opcodes - %X Operators, %X Operands\n", - NumRemainingOps, NumRemainingOperators, NumRemainingOperands); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayLocals - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Display all locals for the currently running control method - * - ******************************************************************************/ - -void -AcpiDbDisplayLocals ( - void) -{ - ACPI_WALK_STATE *WalkState; - - - WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); - if (!WalkState) - { - AcpiOsPrintf ("There is no method currently executing\n"); - return; - } - - AcpiDmDisplayLocals (WalkState); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayArguments - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Display all arguments for the currently running control method - * - ******************************************************************************/ - -void -AcpiDbDisplayArguments ( - void) -{ - ACPI_WALK_STATE *WalkState; - - - WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); - if (!WalkState) - { - AcpiOsPrintf ("There is no method currently executing\n"); - return; - } - - AcpiDmDisplayArguments (WalkState); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayResults - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Display current contents of a method result stack - * - ******************************************************************************/ - -void -AcpiDbDisplayResults ( - void) -{ - UINT32 i; - ACPI_WALK_STATE *WalkState; - ACPI_OPERAND_OBJECT *ObjDesc; - UINT32 NumResults = 0; - ACPI_NAMESPACE_NODE *Node; - - - WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); - if (!WalkState) - { - AcpiOsPrintf ("There is no method currently executing\n"); - return; - } - - ObjDesc = WalkState->MethodDesc; - Node = WalkState->MethodNode; - - if (WalkState->Results) - { - NumResults = WalkState->Results->Results.NumResults; - } - - AcpiOsPrintf ("Method [%4.4s] has %X stacked result objects\n", - AcpiUtGetNodeName (Node), NumResults); - - for (i = 0; i < NumResults; i++) - { - ObjDesc = WalkState->Results->Results.ObjDesc[i]; - AcpiOsPrintf ("Result%d: ", i); - AcpiDmDisplayInternalObject (ObjDesc, WalkState); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayCallingTree - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Display current calling tree of nested control methods - * - ******************************************************************************/ - -void -AcpiDbDisplayCallingTree ( - void) -{ - ACPI_WALK_STATE *WalkState; - ACPI_NAMESPACE_NODE *Node; - - - WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); - if (!WalkState) - { - AcpiOsPrintf ("There is no method currently executing\n"); - return; - } - - Node = WalkState->MethodNode; - AcpiOsPrintf ("Current Control Method Call Tree\n"); - - while (WalkState) - { - Node = WalkState->MethodNode; - - AcpiOsPrintf (" [%4.4s]\n", AcpiUtGetNodeName (Node)); - - WalkState = WalkState->Next; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayObjectType - * - * PARAMETERS: ObjectArg - User entered NS node handle - * - * RETURN: None - * - * DESCRIPTION: Display type of an arbitrary NS node - * - ******************************************************************************/ - -void -AcpiDbDisplayObjectType ( - char *ObjectArg) -{ - ACPI_HANDLE Handle; - ACPI_BUFFER Buffer; - ACPI_DEVICE_INFO *Info; - ACPI_STATUS Status; - ACPI_NATIVE_UINT i; - - - Handle = ACPI_TO_POINTER (ACPI_STRTOUL (ObjectArg, NULL, 16)); - Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - - Status = AcpiGetObjectInfo (Handle, &Buffer); - if (ACPI_SUCCESS (Status)) - { - Info = Buffer.Pointer; - AcpiOsPrintf ( - "S1D-%2.2X S2D-%2.2X S3D-%2.2X S4D-%2.2X HID: %s, ADR: %8.8X%8.8X, Status %8.8X\n", - Info->HighestDstates[0], Info->HighestDstates[1], - Info->HighestDstates[2], Info->HighestDstates[3], - Info->HardwareId.Value, - ACPI_FORMAT_UINT64 (Info->Address), - Info->CurrentStatus); - - if (Info->Valid & ACPI_VALID_CID) - { - for (i = 0; i < Info->CompatibilityId.Count; i++) - { - AcpiOsPrintf ("CID #%d: %s\n", (UINT32) i, - Info->CompatibilityId.Id[i].Value); - } - } - - ACPI_FREE (Info); - } - else - { - AcpiOsPrintf ("%s\n", AcpiFormatException (Status)); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayResultObject - * - * PARAMETERS: ObjDesc - Object to be displayed - * WalkState - Current walk state - * - * RETURN: None - * - * DESCRIPTION: Display the result of an AML opcode - * - * Note: Curently only displays the result object if we are single stepping. - * However, this output may be useful in other contexts and could be enabled - * to do so if needed. - * - ******************************************************************************/ - -void -AcpiDbDisplayResultObject ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState) -{ - - /* Only display if single stepping */ - - if (!AcpiGbl_CmSingleStep) - { - return; - } - - AcpiOsPrintf ("ResultObj: "); - AcpiDmDisplayInternalObject (ObjDesc, WalkState); - AcpiOsPrintf ("\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayArgumentObject - * - * PARAMETERS: ObjDesc - Object to be displayed - * WalkState - Current walk state - * - * RETURN: None - * - * DESCRIPTION: Display the result of an AML opcode - * - ******************************************************************************/ - -void -AcpiDbDisplayArgumentObject ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState) -{ - - if (!AcpiGbl_CmSingleStep) - { - return; - } - - AcpiOsPrintf ("ArgObj: "); - AcpiDmDisplayInternalObject (ObjDesc, WalkState); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayGpes - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Display the current GPE structures - * - ******************************************************************************/ - -void -AcpiDbDisplayGpes ( - void) -{ - ACPI_GPE_BLOCK_INFO *GpeBlock; - ACPI_GPE_XRUPT_INFO *GpeXruptInfo; - ACPI_GPE_EVENT_INFO *GpeEventInfo; - ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; - UINT32 GpeIndex; - UINT32 Block = 0; - UINT32 i; - UINT32 j; - char Buffer[80]; - ACPI_BUFFER RetBuf; - ACPI_STATUS Status; - - - RetBuf.Length = sizeof (Buffer); - RetBuf.Pointer = Buffer; - - Block = 0; - - /* Walk the GPE lists */ - - GpeXruptInfo = AcpiGbl_GpeXruptListHead; - while (GpeXruptInfo) - { - GpeBlock = GpeXruptInfo->GpeBlockListHead; - while (GpeBlock) - { - Status = AcpiGetName (GpeBlock->Node, ACPI_FULL_PATHNAME, &RetBuf); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not convert name to pathname\n"); - } - - AcpiOsPrintf ("\nBlock %d - Info %p DeviceNode %p [%s]\n", - Block, GpeBlock, GpeBlock->Node, Buffer); - - AcpiOsPrintf (" Registers: %u (%u GPEs)\n", - GpeBlock->RegisterCount, - ACPI_MUL_8 (GpeBlock->RegisterCount)); - - AcpiOsPrintf (" GPE range: 0x%X to 0x%X\n", - GpeBlock->BlockBaseNumber, - GpeBlock->BlockBaseNumber + - (GpeBlock->RegisterCount * 8) -1); - - AcpiOsPrintf ( - " RegisterInfo: %p Status %8.8X%8.8X Enable %8.8X%8.8X\n", - GpeBlock->RegisterInfo, - ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (GpeBlock->RegisterInfo->StatusAddress.Address)), - ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (GpeBlock->RegisterInfo->EnableAddress.Address))); - - AcpiOsPrintf (" EventInfo: %p\n", GpeBlock->EventInfo); - - /* Examine each GPE Register within the block */ - - for (i = 0; i < GpeBlock->RegisterCount; i++) - { - GpeRegisterInfo = &GpeBlock->RegisterInfo[i]; - - AcpiOsPrintf ( - " Reg %u: WakeEnable %2.2X, RunEnable %2.2X Status %8.8X%8.8X Enable %8.8X%8.8X\n", - i, GpeRegisterInfo->EnableForWake, - GpeRegisterInfo->EnableForRun, - ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (GpeRegisterInfo->StatusAddress.Address)), - ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (GpeRegisterInfo->EnableAddress.Address))); - - /* Now look at the individual GPEs in this byte register */ - - for (j = 0; j < ACPI_GPE_REGISTER_WIDTH; j++) - { - GpeIndex = (i * ACPI_GPE_REGISTER_WIDTH) + j; - GpeEventInfo = &GpeBlock->EventInfo[GpeIndex]; - - if (!(GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK)) - { - /* This GPE is not used (no method or handler) */ - - continue; - } - - AcpiOsPrintf ( - " GPE %.3X: %p Flags %2.2X: ", - GpeBlock->BlockBaseNumber + GpeIndex, - GpeEventInfo, - GpeEventInfo->Flags); - - if (GpeEventInfo->Flags & ACPI_GPE_LEVEL_TRIGGERED) - { - AcpiOsPrintf ("Level, "); - } - else - { - AcpiOsPrintf ("Edge, "); - } - - switch (GpeEventInfo->Flags & ACPI_GPE_TYPE_MASK) - { - case ACPI_GPE_TYPE_WAKE: - AcpiOsPrintf ("WakeOnly: "); - break; - case ACPI_GPE_TYPE_RUNTIME: - AcpiOsPrintf (" RunOnly: "); - break; - case ACPI_GPE_TYPE_WAKE_RUN: - AcpiOsPrintf (" WakeRun: "); - break; - default: - AcpiOsPrintf (" NotUsed: "); - break; - } - - if (GpeEventInfo->Flags & ACPI_GPE_WAKE_ENABLED) - { - AcpiOsPrintf ("[Wake 1 "); - } - else - { - AcpiOsPrintf ("[Wake 0 "); - } - - if (GpeEventInfo->Flags & ACPI_GPE_RUN_ENABLED) - { - AcpiOsPrintf ("Run 1], "); - } - else - { - AcpiOsPrintf ("Run 0], "); - } - - switch (GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK) - { - case ACPI_GPE_DISPATCH_NOT_USED: - AcpiOsPrintf ("NotUsed"); - break; - case ACPI_GPE_DISPATCH_HANDLER: - AcpiOsPrintf ("Handler"); - break; - case ACPI_GPE_DISPATCH_METHOD: - AcpiOsPrintf ("Method"); - break; - default: - AcpiOsPrintf ("UNKNOWN: %X", - GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK); - break; - } - - AcpiOsPrintf ("\n"); - } - } - Block++; - GpeBlock = GpeBlock->Next; - } - GpeXruptInfo = GpeXruptInfo->Next; - } -} - -#endif /* ACPI_DEBUGGER */ - diff --git a/sys/contrib/dev/acpica-unix-20061109/debugger/dbexec.c b/sys/contrib/dev/acpica-unix-20061109/debugger/dbexec.c deleted file mode 100644 index 4547f0e5b4..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/debugger/dbexec.c +++ /dev/null @@ -1,648 +0,0 @@ -/******************************************************************************* - * - * Module Name: dbexec - debugger control method execution - * $Revision: 1.77 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acdebug.h" -#include "acnamesp.h" - -#ifdef ACPI_DEBUGGER - -#define _COMPONENT ACPI_CA_DEBUGGER - ACPI_MODULE_NAME ("dbexec") - - -static ACPI_DB_METHOD_INFO AcpiGbl_DbMethodInfo; - -/* Local prototypes */ - -static ACPI_STATUS -AcpiDbExecuteMethod ( - ACPI_DB_METHOD_INFO *Info, - ACPI_BUFFER *ReturnObj); - -static void -AcpiDbExecuteSetup ( - ACPI_DB_METHOD_INFO *Info); - -static UINT32 -AcpiDbGetOutstandingAllocations ( - void); - -static void ACPI_SYSTEM_XFACE -AcpiDbMethodThread ( - void *Context); - -static ACPI_STATUS -AcpiDbExecutionWalk ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue); - -#ifdef ACPI_DBG_TRACK_ALLOCATIONS -static UINT32 -AcpiDbGetCacheInfo ( - ACPI_MEMORY_LIST *Cache); -#endif - - -/******************************************************************************* - * - * FUNCTION: AcpiDbExecuteMethod - * - * PARAMETERS: Info - Valid info segment - * ReturnObj - Where to put return object - * - * RETURN: Status - * - * DESCRIPTION: Execute a control method. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDbExecuteMethod ( - ACPI_DB_METHOD_INFO *Info, - ACPI_BUFFER *ReturnObj) -{ - ACPI_STATUS Status; - ACPI_OBJECT_LIST ParamObjects; - ACPI_OBJECT Params[ACPI_METHOD_NUM_ARGS]; - UINT32 i; - - - if (AcpiGbl_DbOutputToFile && !AcpiDbgLevel) - { - AcpiOsPrintf ("Warning: debug output is not enabled!\n"); - } - - /* Are there arguments to the method? */ - - if (Info->Args && Info->Args[0]) - { - for (i = 0; Info->Args[i] && i < ACPI_METHOD_NUM_ARGS; i++) - { - Params[i].Type = ACPI_TYPE_INTEGER; - Params[i].Integer.Value = ACPI_STRTOUL (Info->Args[i], NULL, 16); - } - - ParamObjects.Pointer = Params; - ParamObjects.Count = i; - } - else - { - /* Setup default parameters */ - - Params[0].Type = ACPI_TYPE_INTEGER; - Params[0].Integer.Value = 0x01020304; - - Params[1].Type = ACPI_TYPE_STRING; - Params[1].String.Length = 12; - Params[1].String.Pointer = "AML Debugger"; - - ParamObjects.Pointer = Params; - ParamObjects.Count = 2; - } - - /* Prepare for a return object of arbitrary size */ - - ReturnObj->Pointer = AcpiGbl_DbBuffer; - ReturnObj->Length = ACPI_DEBUG_BUFFER_SIZE; - - /* Do the actual method execution */ - - AcpiGbl_MethodExecuting = TRUE; - Status = AcpiEvaluateObject (NULL, - Info->Pathname, &ParamObjects, ReturnObj); - - AcpiGbl_CmSingleStep = FALSE; - AcpiGbl_MethodExecuting = FALSE; - - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbExecuteSetup - * - * PARAMETERS: Info - Valid method info - * - * RETURN: None - * - * DESCRIPTION: Setup info segment prior to method execution - * - ******************************************************************************/ - -static void -AcpiDbExecuteSetup ( - ACPI_DB_METHOD_INFO *Info) -{ - - /* Catenate the current scope to the supplied name */ - - Info->Pathname[0] = 0; - if ((Info->Name[0] != '\\') && - (Info->Name[0] != '/')) - { - ACPI_STRCAT (Info->Pathname, AcpiGbl_DbScopeBuf); - } - - ACPI_STRCAT (Info->Pathname, Info->Name); - AcpiDbPrepNamestring (Info->Pathname); - - AcpiDbSetOutputDestination (ACPI_DB_DUPLICATE_OUTPUT); - AcpiOsPrintf ("Executing %s\n", Info->Pathname); - - if (Info->Flags & EX_SINGLE_STEP) - { - AcpiGbl_CmSingleStep = TRUE; - AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); - } - - else - { - /* No single step, allow redirection to a file */ - - AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT); - } -} - - -#ifdef ACPI_DBG_TRACK_ALLOCATIONS -static UINT32 -AcpiDbGetCacheInfo ( - ACPI_MEMORY_LIST *Cache) -{ - - return (Cache->TotalAllocated - Cache->TotalFreed - Cache->CurrentDepth); -} -#endif - -/******************************************************************************* - * - * FUNCTION: AcpiDbGetOutstandingAllocations - * - * PARAMETERS: None - * - * RETURN: Current global allocation count minus cache entries - * - * DESCRIPTION: Determine the current number of "outstanding" allocations -- - * those allocations that have not been freed and also are not - * in one of the various object caches. - * - ******************************************************************************/ - -static UINT32 -AcpiDbGetOutstandingAllocations ( - void) -{ - UINT32 Outstanding = 0; - -#ifdef ACPI_DBG_TRACK_ALLOCATIONS - - Outstanding += AcpiDbGetCacheInfo (AcpiGbl_StateCache); - Outstanding += AcpiDbGetCacheInfo (AcpiGbl_PsNodeCache); - Outstanding += AcpiDbGetCacheInfo (AcpiGbl_PsNodeExtCache); - Outstanding += AcpiDbGetCacheInfo (AcpiGbl_OperandCache); -#endif - - return (Outstanding); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbExecutionWalk - * - * PARAMETERS: WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Execute a control method. Name is relative to the current - * scope. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDbExecutionWalk ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; - ACPI_BUFFER ReturnObj; - ACPI_STATUS Status; - - - ObjDesc = AcpiNsGetAttachedObject (Node); - if (ObjDesc->Method.ParamCount) - { - return (AE_OK); - } - - ReturnObj.Pointer = NULL; - ReturnObj.Length = ACPI_ALLOCATE_BUFFER; - - AcpiNsPrintNodePathname (Node, "Execute"); - - /* Do the actual method execution */ - - AcpiOsPrintf ("\n"); - AcpiGbl_MethodExecuting = TRUE; - - Status = AcpiEvaluateObject (Node, NULL, NULL, &ReturnObj); - - AcpiOsPrintf ("[%4.4s] returned %s\n", AcpiUtGetNodeName (Node), - AcpiFormatException (Status)); - AcpiGbl_MethodExecuting = FALSE; - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbExecute - * - * PARAMETERS: Name - Name of method to execute - * Args - Parameters to the method - * Flags - single step/no single step - * - * RETURN: None - * - * DESCRIPTION: Execute a control method. Name is relative to the current - * scope. - * - ******************************************************************************/ - -void -AcpiDbExecute ( - char *Name, - char **Args, - UINT32 Flags) -{ - ACPI_STATUS Status; - ACPI_BUFFER ReturnObj; - char *NameString; - - -#ifdef ACPI_DEBUG_OUTPUT - UINT32 PreviousAllocations; - UINT32 Allocations; - - - /* Memory allocation tracking */ - - PreviousAllocations = AcpiDbGetOutstandingAllocations (); -#endif - - if (*Name == '*') - { - (void) AcpiWalkNamespace (ACPI_TYPE_METHOD, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, AcpiDbExecutionWalk, NULL, NULL); - return; - } - else - { - NameString = ACPI_ALLOCATE (ACPI_STRLEN (Name) + 1); - if (!NameString) - { - return; - } - - ACPI_STRCPY (NameString, Name); - AcpiUtStrupr (NameString); - AcpiGbl_DbMethodInfo.Name = NameString; - AcpiGbl_DbMethodInfo.Args = Args; - AcpiGbl_DbMethodInfo.Flags = Flags; - - ReturnObj.Pointer = NULL; - ReturnObj.Length = ACPI_ALLOCATE_BUFFER; - - AcpiDbExecuteSetup (&AcpiGbl_DbMethodInfo); - Status = AcpiDbExecuteMethod (&AcpiGbl_DbMethodInfo, &ReturnObj); - ACPI_FREE (NameString); - } - - /* - * Allow any handlers in separate threads to complete. - * (Such as Notify handlers invoked from AML executed above). - */ - AcpiOsSleep ((ACPI_INTEGER) 10); - - -#ifdef ACPI_DEBUG_OUTPUT - - /* Memory allocation tracking */ - - Allocations = AcpiDbGetOutstandingAllocations () - PreviousAllocations; - - AcpiDbSetOutputDestination (ACPI_DB_DUPLICATE_OUTPUT); - - if (Allocations > 0) - { - AcpiOsPrintf ("Outstanding: 0x%X allocations after execution\n", - Allocations); - } -#endif - - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Execution of %s failed with status %s\n", - AcpiGbl_DbMethodInfo.Pathname, AcpiFormatException (Status)); - } - else - { - /* Display a return object, if any */ - - if (ReturnObj.Length) - { - AcpiOsPrintf ("Execution of %s returned object %p Buflen %X\n", - AcpiGbl_DbMethodInfo.Pathname, ReturnObj.Pointer, - (UINT32) ReturnObj.Length); - AcpiDbDumpExternalObject (ReturnObj.Pointer, 1); - } - else - { - AcpiOsPrintf ("No return object from execution of %s\n", - AcpiGbl_DbMethodInfo.Pathname); - } - } - - AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbMethodThread - * - * PARAMETERS: Context - Execution info segment - * - * RETURN: None - * - * DESCRIPTION: Debugger execute thread. Waits for a command line, then - * simply dispatches it. - * - ******************************************************************************/ - -static void ACPI_SYSTEM_XFACE -AcpiDbMethodThread ( - void *Context) -{ - ACPI_STATUS Status; - ACPI_DB_METHOD_INFO *Info = Context; - UINT32 i; - ACPI_BUFFER ReturnObj; - - - for (i = 0; i < Info->NumLoops; i++) - { - Status = AcpiDbExecuteMethod (Info, &ReturnObj); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("%s During execution of %s at iteration %X\n", - AcpiFormatException (Status), Info->Pathname, i); - if (Status == AE_ABORT_METHOD) - { - break; - } - } - - if ((i % 100) == 0) - { - AcpiOsPrintf ("%d executions\n", i); - } - -#if 0 - if (ReturnObj.Length) - { - AcpiOsPrintf ("Execution of %s returned object %p Buflen %X\n", - Info->Pathname, ReturnObj.Pointer, (UINT32) ReturnObj.Length); - AcpiDbDumpExternalObject (ReturnObj.Pointer, 1); - } -#endif - } - - /* Signal our completion */ - - Status = AcpiOsSignalSemaphore (Info->ThreadGate, 1); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not signal debugger thread sync semaphore, %s\n", - AcpiFormatException (Status)); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbCreateExecutionThreads - * - * PARAMETERS: NumThreadsArg - Number of threads to create - * NumLoopsArg - Loop count for the thread(s) - * MethodNameArg - Control method to execute - * - * RETURN: None - * - * DESCRIPTION: Create threads to execute method(s) - * - ******************************************************************************/ - -void -AcpiDbCreateExecutionThreads ( - char *NumThreadsArg, - char *NumLoopsArg, - char *MethodNameArg) -{ - ACPI_STATUS Status; - UINT32 NumThreads; - UINT32 NumLoops; - UINT32 i; - ACPI_MUTEX ThreadGate; - - - /* Get the arguments */ - - NumThreads = ACPI_STRTOUL (NumThreadsArg, NULL, 0); - NumLoops = ACPI_STRTOUL (NumLoopsArg, NULL, 0); - - if (!NumThreads || !NumLoops) - { - AcpiOsPrintf ("Bad argument: Threads %X, Loops %X\n", - NumThreads, NumLoops); - return; - } - - /* Create the synchronization semaphore */ - - Status = AcpiOsCreateSemaphore (1, 0, &ThreadGate); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not create semaphore, %s\n", - AcpiFormatException (Status)); - return; - } - - /* Setup the context to be passed to each thread */ - - AcpiGbl_DbMethodInfo.Name = MethodNameArg; - AcpiGbl_DbMethodInfo.Args = NULL; - AcpiGbl_DbMethodInfo.Flags = 0; - AcpiGbl_DbMethodInfo.NumLoops = NumLoops; - AcpiGbl_DbMethodInfo.ThreadGate = ThreadGate; - - AcpiDbExecuteSetup (&AcpiGbl_DbMethodInfo); - - /* Create the threads */ - - AcpiOsPrintf ("Creating %X threads to execute %X times each\n", - NumThreads, NumLoops); - - for (i = 0; i < (NumThreads); i++) - { - Status = AcpiOsExecute (OSL_DEBUGGER_THREAD, AcpiDbMethodThread, - &AcpiGbl_DbMethodInfo); - if (ACPI_FAILURE (Status)) - { - break; - } - } - - /* Wait for all threads to complete */ - - i = NumThreads; - while (i) /* Brain damage for host OSs that only support wait of 1 unit */ - { - Status = AcpiOsWaitSemaphore (ThreadGate, 1, ACPI_WAIT_FOREVER); - i--; - } - - /* Cleanup and exit */ - - (void) AcpiOsDeleteSemaphore (ThreadGate); - - AcpiDbSetOutputDestination (ACPI_DB_DUPLICATE_OUTPUT); - AcpiOsPrintf ("All threads (%X) have completed\n", NumThreads); - AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); -} - -#endif /* ACPI_DEBUGGER */ - - diff --git a/sys/contrib/dev/acpica-unix-20061109/debugger/dbfileio.c b/sys/contrib/dev/acpica-unix-20061109/debugger/dbfileio.c deleted file mode 100644 index 2a060429f0..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/debugger/dbfileio.c +++ /dev/null @@ -1,651 +0,0 @@ -/******************************************************************************* - * - * Module Name: dbfileio - Debugger file I/O commands. These can't usually - * be used when running the debugger in Ring 0 (Kernel mode) - * $Revision: 1.93 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acdebug.h" -#include "acnamesp.h" -#include "actables.h" -#include "acdisasm.h" - -#if (defined ACPI_DEBUGGER || defined ACPI_DISASSEMBLER) - -#define _COMPONENT ACPI_CA_DEBUGGER - ACPI_MODULE_NAME ("dbfileio") - -/* - * NOTE: this is here for lack of a better place. It is used in all - * flavors of the debugger, need LCD file - */ -#ifdef ACPI_APPLICATION -#include -FILE *AcpiGbl_DebugFile = NULL; -#endif - - -#ifdef ACPI_DEBUGGER - -/* Local prototypes */ - -#ifdef ACPI_APPLICATION - -static ACPI_STATUS -AcpiDbCheckTextModeCorruption ( - UINT8 *Table, - UINT32 TableLength, - UINT32 FileLength); - -static ACPI_STATUS -AeLocalLoadTable ( - ACPI_TABLE_HEADER *TablePtr); -#endif - -/******************************************************************************* - * - * FUNCTION: AcpiDbCloseDebugFile - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: If open, close the current debug output file - * - ******************************************************************************/ - -void -AcpiDbCloseDebugFile ( - void) -{ - -#ifdef ACPI_APPLICATION - - if (AcpiGbl_DebugFile) - { - fclose (AcpiGbl_DebugFile); - AcpiGbl_DebugFile = NULL; - AcpiGbl_DbOutputToFile = FALSE; - AcpiOsPrintf ("Debug output file %s closed\n", AcpiGbl_DbDebugFilename); - } -#endif -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbOpenDebugFile - * - * PARAMETERS: Name - Filename to open - * - * RETURN: None - * - * DESCRIPTION: Open a file where debug output will be directed. - * - ******************************************************************************/ - -void -AcpiDbOpenDebugFile ( - char *Name) -{ - -#ifdef ACPI_APPLICATION - - AcpiDbCloseDebugFile (); - AcpiGbl_DebugFile = fopen (Name, "w+"); - if (AcpiGbl_DebugFile) - { - AcpiOsPrintf ("Debug output file %s opened\n", Name); - ACPI_STRCPY (AcpiGbl_DbDebugFilename, Name); - AcpiGbl_DbOutputToFile = TRUE; - } - else - { - AcpiOsPrintf ("Could not open debug file %s\n", Name); - } - -#endif -} -#endif - - -#ifdef ACPI_APPLICATION -/******************************************************************************* - * - * FUNCTION: AcpiDbCheckTextModeCorruption - * - * PARAMETERS: Table - Table buffer - * TableLength - Length of table from the table header - * FileLength - Length of the file that contains the table - * - * RETURN: Status - * - * DESCRIPTION: Check table for text mode file corruption where all linefeed - * characters (LF) have been replaced by carriage return linefeed - * pairs (CR/LF). - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDbCheckTextModeCorruption ( - UINT8 *Table, - UINT32 TableLength, - UINT32 FileLength) -{ - UINT32 i; - UINT32 Pairs = 0; - - - if (TableLength != FileLength) - { - ACPI_WARNING ((AE_INFO, - "File length (0x%X) is not the same as the table length (0x%X)", - FileLength, TableLength)); - } - - /* Scan entire table to determine if each LF has been prefixed with a CR */ - - for (i = 1; i < FileLength; i++) - { - if (Table[i] == 0x0A) - { - if (Table[i - 1] != 0x0D) - { - /* The LF does not have a preceeding CR, table not corrupted */ - - return (AE_OK); - } - else - { - /* Found a CR/LF pair */ - - Pairs++; - } - i++; - } - } - - if (!Pairs) - { - return (AE_OK); - } - - /* - * Entire table scanned, each CR is part of a CR/LF pair -- - * meaning that the table was treated as a text file somewhere. - * - * NOTE: We can't "fix" the table, because any existing CR/LF pairs in the - * original table are left untouched by the text conversion process -- - * meaning that we cannot simply replace CR/LF pairs with LFs. - */ - AcpiOsPrintf ("Table has been corrupted by text mode conversion\n"); - AcpiOsPrintf ("All LFs (%d) were changed to CR/LF pairs\n", Pairs); - AcpiOsPrintf ("Table cannot be repaired!\n"); - return (AE_BAD_VALUE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbReadTable - * - * PARAMETERS: fp - File that contains table - * Table - Return value, buffer with table - * TableLength - Return value, length of table - * - * RETURN: Status - * - * DESCRIPTION: Load the DSDT from the file pointer - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDbReadTable ( - FILE *fp, - ACPI_TABLE_HEADER **Table, - UINT32 *TableLength) -{ - ACPI_TABLE_HEADER TableHeader; - UINT32 Actual; - ACPI_STATUS Status; - UINT32 FileSize; - BOOLEAN StandardHeader = TRUE; - - - /* Get the file size */ - - fseek (fp, 0, SEEK_END); - FileSize = (UINT32) ftell (fp); - fseek (fp, 0, SEEK_SET); - - if (FileSize < 4) - { - return (AE_BAD_HEADER); - } - - /* Read the signature */ - - if (fread (&TableHeader, 1, 4, fp) != 4) - { - AcpiOsPrintf ("Could not read the table signature\n"); - return (AE_BAD_HEADER); - } - - fseek (fp, 0, SEEK_SET); - - /* The RSDT and FACS tables do not have standard ACPI headers */ - - if (ACPI_COMPARE_NAME (TableHeader.Signature, "RSD ") || - ACPI_COMPARE_NAME (TableHeader.Signature, "FACS")) - { - *TableLength = FileSize; - StandardHeader = FALSE; - } - else - { - /* Read the table header */ - - if (fread (&TableHeader, 1, sizeof (TableHeader), fp) != - sizeof (ACPI_TABLE_HEADER)) - { - AcpiOsPrintf ("Could not read the table header\n"); - return (AE_BAD_HEADER); - } - -#if 0 - /* Validate the table header/length */ - - Status = AcpiTbValidateTableHeader (&TableHeader); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Table header is invalid!\n"); - return (Status); - } -#endif - - /* File size must be at least as long as the Header-specified length */ - - if (TableHeader.Length > FileSize) - { - AcpiOsPrintf ( - "TableHeader length [0x%X] greater than the input file size [0x%X]\n", - TableHeader.Length, FileSize); - return (AE_BAD_HEADER); - } - -#ifdef ACPI_OBSOLETE_CODE - /* We only support a limited number of table types */ - - if (ACPI_STRNCMP ((char *) TableHeader.Signature, DSDT_SIG, 4) && - ACPI_STRNCMP ((char *) TableHeader.Signature, PSDT_SIG, 4) && - ACPI_STRNCMP ((char *) TableHeader.Signature, SSDT_SIG, 4)) - { - AcpiOsPrintf ("Table signature [%4.4s] is invalid or not supported\n", - (char *) TableHeader.Signature); - ACPI_DUMP_BUFFER (&TableHeader, sizeof (ACPI_TABLE_HEADER)); - return (AE_ERROR); - } -#endif - - *TableLength = TableHeader.Length; - } - - /* Allocate a buffer for the table */ - - *Table = AcpiOsAllocate ((size_t) FileSize); - if (!*Table) - { - AcpiOsPrintf ( - "Could not allocate memory for ACPI table %4.4s (size=0x%X)\n", - TableHeader.Signature, *TableLength); - return (AE_NO_MEMORY); - } - - /* Get the rest of the table */ - - fseek (fp, 0, SEEK_SET); - Actual = fread (*Table, 1, (size_t) FileSize, fp); - if (Actual == FileSize) - { - if (StandardHeader) - { - /* Now validate the checksum */ - - Status = AcpiTbChecksum ((void *) *Table, - ACPI_CAST_PTR (ACPI_TABLE_HEADER, *Table)->Length); - - if (Status == AE_BAD_CHECKSUM) - { - Status = AcpiDbCheckTextModeCorruption ((UINT8 *) *Table, - FileSize, (*Table)->Length); - return (Status); - } - } - return (AE_OK); - } - - if (Actual > 0) - { - AcpiOsPrintf ("Warning - reading table, asked for %X got %X\n", - FileSize, Actual); - return (AE_OK); - } - - AcpiOsPrintf ("Error - could not read the table file\n"); - AcpiOsFree (*Table); - *Table = NULL; - *TableLength = 0; - - return (AE_ERROR); -} - - -/******************************************************************************* - * - * FUNCTION: AeLocalLoadTable - * - * PARAMETERS: Table - pointer to a buffer containing the entire - * table to be loaded - * - * RETURN: Status - * - * DESCRIPTION: This function is called to load a table from the caller's - * buffer. The buffer must contain an entire ACPI Table including - * a valid header. The header fields will be verified, and if it - * is determined that the table is invalid, the call will fail. - * - ******************************************************************************/ - -static ACPI_STATUS -AeLocalLoadTable ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status = AE_OK; -/* ACPI_TABLE_DESC TableInfo; */ - - - ACPI_FUNCTION_TRACE (AeLocalLoadTable); -#if 0 - - - if (!Table) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - TableInfo.Pointer = Table; - Status = AcpiTbRecognizeTable (&TableInfo, ACPI_TABLE_ALL); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Install the new table into the local data structures */ - - Status = AcpiTbInstallTable (&TableInfo); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_ALREADY_EXISTS) - { - /* Table already exists, no error */ - - Status = AE_OK; - } - - /* Free table allocated by AcpiTbGetTable */ - - AcpiTbDeleteSingleTable (&TableInfo); - return_ACPI_STATUS (Status); - } - -#if (!defined (ACPI_NO_METHOD_EXECUTION) && !defined (ACPI_CONSTANT_EVAL_ONLY)) - - Status = AcpiNsLoadTable (TableInfo.InstalledDesc, AcpiGbl_RootNode); - if (ACPI_FAILURE (Status)) - { - /* Uninstall table and free the buffer */ - - AcpiTbDeleteTablesByType (ACPI_TABLE_ID_DSDT); - return_ACPI_STATUS (Status); - } -#endif -#endif - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbReadTableFromFile - * - * PARAMETERS: Filename - File where table is located - * Table - Where a pointer to the table is returned - * - * RETURN: Status - * - * DESCRIPTION: Get an ACPI table from a file - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbReadTableFromFile ( - char *Filename, - ACPI_TABLE_HEADER **Table) -{ - FILE *fp; - UINT32 TableLength; - ACPI_STATUS Status; - - - /* Open the file */ - - fp = fopen (Filename, "rb"); - if (!fp) - { - AcpiOsPrintf ("Could not open input file %s\n", Filename); - return (AE_ERROR); - } - - /* Get the entire file */ - - fprintf (stderr, "Loading Acpi table from file %s\n", Filename); - Status = AcpiDbReadTable (fp, Table, &TableLength); - fclose(fp); - - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not get table from the file\n"); - return (Status); - } - - return (AE_OK); - } -#endif - - -/******************************************************************************* - * - * FUNCTION: AcpiDbGetTableFromFile - * - * PARAMETERS: Filename - File where table is located - * ReturnTable - Where a pointer to the table is returned - * - * RETURN: Status - * - * DESCRIPTION: Load an ACPI table from a file - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbGetTableFromFile ( - char *Filename, - ACPI_TABLE_HEADER **ReturnTable) -{ -#ifdef ACPI_APPLICATION - ACPI_STATUS Status; - ACPI_TABLE_HEADER *Table; - BOOLEAN IsAmlTable = TRUE; - - - Status = AcpiDbReadTableFromFile (Filename, &Table); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - -#ifdef ACPI_DATA_TABLE_DISASSEMBLY - IsAmlTable = AcpiUtIsAmlTable (Table); -#endif - - if (IsAmlTable) - { - /* Attempt to recognize and install the table */ - - Status = AeLocalLoadTable (Table); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_ALREADY_EXISTS) - { - AcpiOsPrintf ("Table %4.4s is already installed\n", - Table->Signature); - } - else - { - AcpiOsPrintf ("Could not install table, %s\n", - AcpiFormatException (Status)); - } - - return (Status); - } - - fprintf (stderr, - "Acpi table [%4.4s] successfully installed and loaded\n", - Table->Signature); - } - - AcpiGbl_AcpiHardwarePresent = FALSE; - if (ReturnTable) - { - *ReturnTable = Table; - } - - -#endif /* ACPI_APPLICATION */ - return (AE_OK); -} - -#endif /* ACPI_DEBUGGER */ - diff --git a/sys/contrib/dev/acpica-unix-20061109/debugger/dbhistry.c b/sys/contrib/dev/acpica-unix-20061109/debugger/dbhistry.c deleted file mode 100644 index afc12ba0d6..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/debugger/dbhistry.c +++ /dev/null @@ -1,292 +0,0 @@ -/****************************************************************************** - * - * Module Name: dbhistry - debugger HISTORY command - * $Revision: 1.33 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acdebug.h" - -#ifdef ACPI_DEBUGGER - -#define _COMPONENT ACPI_CA_DEBUGGER - ACPI_MODULE_NAME ("dbhistry") - - -#define HI_NO_HISTORY 0 -#define HI_RECORD_HISTORY 1 -#define HISTORY_SIZE 20 - - -typedef struct HistoryInfo -{ - char Command[80]; - UINT32 CmdNum; - -} HISTORY_INFO; - - -static HISTORY_INFO AcpiGbl_HistoryBuffer[HISTORY_SIZE]; -static UINT16 AcpiGbl_LoHistory = 0; -static UINT16 AcpiGbl_NumHistory = 0; -static UINT16 AcpiGbl_NextHistoryIndex = 0; -static UINT32 AcpiGbl_NextCmdNum = 1; - - -/******************************************************************************* - * - * FUNCTION: AcpiDbAddToHistory - * - * PARAMETERS: CommandLine - Command to add - * - * RETURN: None - * - * DESCRIPTION: Add a command line to the history buffer. - * - ******************************************************************************/ - -void -AcpiDbAddToHistory ( - char *CommandLine) -{ - - /* Put command into the next available slot */ - - ACPI_STRCPY (AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].Command, - CommandLine); - - AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].CmdNum = AcpiGbl_NextCmdNum; - - /* Adjust indexes */ - - if ((AcpiGbl_NumHistory == HISTORY_SIZE) && - (AcpiGbl_NextHistoryIndex == AcpiGbl_LoHistory)) - { - AcpiGbl_LoHistory++; - if (AcpiGbl_LoHistory >= HISTORY_SIZE) - { - AcpiGbl_LoHistory = 0; - } - } - - AcpiGbl_NextHistoryIndex++; - if (AcpiGbl_NextHistoryIndex >= HISTORY_SIZE) - { - AcpiGbl_NextHistoryIndex = 0; - } - - AcpiGbl_NextCmdNum++; - if (AcpiGbl_NumHistory < HISTORY_SIZE) - { - AcpiGbl_NumHistory++; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayHistory - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Display the contents of the history buffer - * - ******************************************************************************/ - -void -AcpiDbDisplayHistory ( - void) -{ - ACPI_NATIVE_UINT i; - UINT16 HistoryIndex; - - - HistoryIndex = AcpiGbl_LoHistory; - - /* Dump entire history buffer */ - - for (i = 0; i < AcpiGbl_NumHistory; i++) - { - AcpiOsPrintf ("%ld %s\n", AcpiGbl_HistoryBuffer[HistoryIndex].CmdNum, - AcpiGbl_HistoryBuffer[HistoryIndex].Command); - - HistoryIndex++; - if (HistoryIndex >= HISTORY_SIZE) - { - HistoryIndex = 0; - } - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbGetFromHistory - * - * PARAMETERS: CommandNumArg - String containing the number of the - * command to be retrieved - * - * RETURN: Pointer to the retrieved command. Null on error. - * - * DESCRIPTION: Get a command from the history buffer - * - ******************************************************************************/ - -char * -AcpiDbGetFromHistory ( - char *CommandNumArg) -{ - ACPI_NATIVE_UINT i; - UINT16 HistoryIndex; - UINT32 CmdNum; - - - if (CommandNumArg == NULL) - { - CmdNum = AcpiGbl_NextCmdNum - 1; - } - - else - { - CmdNum = ACPI_STRTOUL (CommandNumArg, NULL, 0); - } - - /* Search history buffer */ - - HistoryIndex = AcpiGbl_LoHistory; - for (i = 0; i < AcpiGbl_NumHistory; i++) - { - if (AcpiGbl_HistoryBuffer[HistoryIndex].CmdNum == CmdNum) - { - /* Found the commnad, return it */ - - return (AcpiGbl_HistoryBuffer[HistoryIndex].Command); - } - - - HistoryIndex++; - if (HistoryIndex >= HISTORY_SIZE) - { - HistoryIndex = 0; - } - } - - AcpiOsPrintf ("Invalid history number: %d\n", HistoryIndex); - return (NULL); -} - -#endif /* ACPI_DEBUGGER */ - diff --git a/sys/contrib/dev/acpica-unix-20061109/debugger/dbinput.c b/sys/contrib/dev/acpica-unix-20061109/debugger/dbinput.c deleted file mode 100644 index cf0162f737..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/debugger/dbinput.c +++ /dev/null @@ -1,1069 +0,0 @@ -/******************************************************************************* - * - * Module Name: dbinput - user front-end to the AML debugger - * $Revision: 1.113 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acdebug.h" - - -#ifdef ACPI_DEBUGGER - -#define _COMPONENT ACPI_CA_DEBUGGER - ACPI_MODULE_NAME ("dbinput") - -/* Local prototypes */ - -static char * -AcpiDbGetNextToken ( - char *String, - char **Next); - -static UINT32 -AcpiDbGetLine ( - char *InputBuffer); - -static UINT32 -AcpiDbMatchCommand ( - char *UserCommand); - -static void -AcpiDbSingleThread ( - void); - -static void -AcpiDbDisplayHelp ( - char *HelpType); - - -/* - * Top-level debugger commands. - * - * This list of commands must match the string table below it - */ -enum AcpiExDebuggerCommands -{ - CMD_NOT_FOUND = 0, - CMD_NULL, - CMD_ALLOCATIONS, - CMD_ARGS, - CMD_ARGUMENTS, - CMD_BREAKPOINT, - CMD_BUSINFO, - CMD_CALL, - CMD_CLOSE, - CMD_DEBUG, - CMD_DISASSEMBLE, - CMD_DUMP, - CMD_ENABLEACPI, - CMD_EVENT, - CMD_EXECUTE, - CMD_EXIT, - CMD_FIND, - CMD_GO, - CMD_GPE, - CMD_GPES, - CMD_HELP, - CMD_HELP2, - CMD_HISTORY, - CMD_HISTORY_EXE, - CMD_HISTORY_LAST, - CMD_INFORMATION, - CMD_INTEGRITY, - CMD_INTO, - CMD_LEVEL, - CMD_LIST, - CMD_LOAD, - CMD_LOCALS, - CMD_LOCKS, - CMD_METHODS, - CMD_NAMESPACE, - CMD_NOTIFY, - CMD_OBJECT, - CMD_OPEN, - CMD_OWNER, - CMD_PREFIX, - CMD_QUIT, - CMD_REFERENCES, - CMD_RESOURCES, - CMD_RESULTS, - CMD_SET, - CMD_SLEEP, - CMD_STATS, - CMD_STOP, - CMD_TABLES, - CMD_TERMINATE, - CMD_THREADS, - CMD_TRACE, - CMD_TREE, - CMD_TYPE, - CMD_UNLOAD -}; - -#define CMD_FIRST_VALID 2 - -static const COMMAND_INFO AcpiGbl_DbCommands[] = -{ - {"", 0}, - {"", 0}, - {"ALLOCATIONS", 0}, - {"ARGS", 0}, - {"ARGUMENTS", 0}, - {"BREAKPOINT", 1}, - {"BUSINFO", 0}, - {"CALL", 0}, - {"CLOSE", 0}, - {"DEBUG", 1}, - {"DISASSEMBLE", 1}, - {"DUMP", 1}, - {"ENABLEACPI", 0}, - {"EVENT", 1}, - {"EXECUTE", 1}, - {"EXIT", 0}, - {"FIND", 1}, - {"GO", 0}, - {"GPE", 2}, - {"GPES", 0}, - {"HELP", 0}, - {"?", 0}, - {"HISTORY", 0}, - {"!", 1}, - {"!!", 0}, - {"INFORMATION", 0}, - {"INTEGRITY", 0}, - {"INTO", 0}, - {"LEVEL", 0}, - {"LIST", 0}, - {"LOAD", 1}, - {"LOCALS", 0}, - {"LOCKS", 0}, - {"METHODS", 0}, - {"NAMESPACE", 0}, - {"NOTIFY", 2}, - {"OBJECT", 1}, - {"OPEN", 1}, - {"OWNER", 1}, - {"PREFIX", 0}, - {"QUIT", 0}, - {"REFERENCES", 1}, - {"RESOURCES", 1}, - {"RESULTS", 0}, - {"SET", 3}, - {"SLEEP", 1}, - {"STATS", 0}, - {"STOP", 0}, - {"TABLES", 0}, - {"TERMINATE", 0}, - {"THREADS", 3}, - {"TRACE", 1}, - {"TREE", 0}, - {"TYPE", 1}, - {"UNLOAD", 1}, - {NULL, 0} -}; - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayHelp - * - * PARAMETERS: HelpType - Subcommand (optional) - * - * RETURN: None - * - * DESCRIPTION: Print a usage message. - * - ******************************************************************************/ - -static void -AcpiDbDisplayHelp ( - char *HelpType) -{ - - AcpiUtStrupr (HelpType); - - /* No parameter, just give the overview */ - - if (!HelpType) - { - AcpiOsPrintf ("ACPI CA Debugger Commands\n\n"); - AcpiOsPrintf ("The following classes of commands are available. Help is available for\n"); - AcpiOsPrintf ("each class by entering \"Help \"\n\n"); - AcpiOsPrintf (" [GENERAL] General-Purpose Commands\n"); - AcpiOsPrintf (" [NAMESPACE] Namespace Access Commands\n"); - AcpiOsPrintf (" [METHOD] Control Method Execution Commands\n"); - AcpiOsPrintf (" [STATISTICS] Statistical Information\n"); - AcpiOsPrintf (" [FILE] File I/O Commands\n"); - return; - } - - /* - * Parameter is the command class - * - * The idea here is to keep each class of commands smaller than a screenful - */ - switch (HelpType[0]) - { - case 'G': - AcpiOsPrintf ("\nGeneral-Purpose Commands\n\n"); - AcpiOsPrintf ("Allocations Display list of current memory allocations\n"); - AcpiOsPrintf ("Dump
|\n"); - AcpiOsPrintf (" [Byte|Word|Dword|Qword] Display ACPI objects or memory\n"); - AcpiOsPrintf ("EnableAcpi Enable ACPI (hardware) mode\n"); - AcpiOsPrintf ("Help This help screen\n"); - AcpiOsPrintf ("History Display command history buffer\n"); - AcpiOsPrintf ("Level [] [console] Get/Set debug level for file or console\n"); - AcpiOsPrintf ("Locks Current status of internal mutexes\n"); - AcpiOsPrintf ("Quit or Exit Exit this command\n"); - AcpiOsPrintf ("Stats [Allocations|Memory|Misc\n"); - AcpiOsPrintf (" |Objects|Sizes|Stack|Tables] Display namespace and memory statistics\n"); - AcpiOsPrintf ("Tables Display info about loaded ACPI tables\n"); - AcpiOsPrintf ("Unload [Instance] Unload an ACPI table\n"); - AcpiOsPrintf ("! Execute command from history buffer\n"); - AcpiOsPrintf ("!! Execute last command again\n"); - return; - - case 'S': - AcpiOsPrintf ("\nStats Subcommands\n\n"); - AcpiOsPrintf ("Allocations Display list of current memory allocations\n"); - AcpiOsPrintf ("Memory Dump internal memory lists\n"); - AcpiOsPrintf ("Misc Namespace search and mutex stats\n"); - AcpiOsPrintf ("Objects Summary of namespace objects\n"); - AcpiOsPrintf ("Sizes Sizes for each of the internal objects\n"); - AcpiOsPrintf ("Stack Display CPU stack usage\n"); - AcpiOsPrintf ("Tables Info about current ACPI table(s)\n"); - return; - - case 'N': - AcpiOsPrintf ("\nNamespace Access Commands\n\n"); - AcpiOsPrintf ("Businfo Display system bus info\n"); - AcpiOsPrintf ("Disassemble Disassemble a control method\n"); - AcpiOsPrintf ("Event Generate AcpiEvent (Fixed/GPE)\n"); - AcpiOsPrintf ("Find (? is wildcard) Find ACPI name(s) with wildcards\n"); - AcpiOsPrintf ("Gpe Simulate a GPE\n"); - AcpiOsPrintf ("Gpes Display info on all GPEs\n"); - AcpiOsPrintf ("Integrity Validate namespace integrity\n"); - AcpiOsPrintf ("Methods Display list of loaded control methods\n"); - AcpiOsPrintf ("Namespace [Object] [Depth] Display loaded namespace tree/subtree\n"); - AcpiOsPrintf ("Notify Send a notification on Object\n"); - AcpiOsPrintf ("Objects Display all objects of the given type\n"); - AcpiOsPrintf ("Owner [Depth] Display loaded namespace by object owner\n"); - AcpiOsPrintf ("Prefix [] Set or Get current execution prefix\n"); - AcpiOsPrintf ("References Find all references to object at addr\n"); - AcpiOsPrintf ("Resources Get and display Device resources\n"); - AcpiOsPrintf ("Set N Set value for named integer\n"); - AcpiOsPrintf ("Sleep Simulate sleep/wake sequence\n"); - AcpiOsPrintf ("Terminate Delete namespace and all internal objects\n"); - AcpiOsPrintf ("Type Display object type\n"); - return; - - case 'M': - AcpiOsPrintf ("\nControl Method Execution Commands\n\n"); - AcpiOsPrintf ("Arguments (or Args) Display method arguments\n"); - AcpiOsPrintf ("Breakpoint Set an AML execution breakpoint\n"); - AcpiOsPrintf ("Call Run to next control method invocation\n"); - AcpiOsPrintf ("Debug [Arguments] Single Step a control method\n"); - AcpiOsPrintf ("Execute [Arguments] Execute control method\n"); - AcpiOsPrintf ("Go Allow method to run to completion\n"); - AcpiOsPrintf ("Information Display info about the current method\n"); - AcpiOsPrintf ("Into Step into (not over) a method call\n"); - AcpiOsPrintf ("List [# of Aml Opcodes] Display method ASL statements\n"); - AcpiOsPrintf ("Locals Display method local variables\n"); - AcpiOsPrintf ("Results Display method result stack\n"); - AcpiOsPrintf ("Set <#> Set method data (Arguments/Locals)\n"); - AcpiOsPrintf ("Stop Terminate control method\n"); - AcpiOsPrintf ("Thread Spawn threads to execute method(s)\n"); - AcpiOsPrintf ("Trace Trace method execution\n"); - AcpiOsPrintf ("Tree Display control method calling tree\n"); - AcpiOsPrintf (" Single step next AML opcode (over calls)\n"); - return; - - case 'F': - AcpiOsPrintf ("\nFile I/O Commands\n\n"); - AcpiOsPrintf ("Close Close debug output file\n"); - AcpiOsPrintf ("Open Open a file for debug output\n"); - AcpiOsPrintf ("Load Load ACPI table from a file\n"); - return; - - default: - AcpiOsPrintf ("Unrecognized Command Class: %s\n", HelpType); - return; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbGetNextToken - * - * PARAMETERS: String - Command buffer - * Next - Return value, end of next token - * - * RETURN: Pointer to the start of the next token. - * - * DESCRIPTION: Command line parsing. Get the next token on the command line - * - ******************************************************************************/ - -static char * -AcpiDbGetNextToken ( - char *String, - char **Next) -{ - char *Start; - - - /* At end of buffer? */ - - if (!String || !(*String)) - { - return (NULL); - } - - /* Get rid of any spaces at the beginning */ - - if (*String == ' ') - { - while (*String && (*String == ' ')) - { - String++; - } - - if (!(*String)) - { - return (NULL); - } - } - - Start = String; - - /* Find end of token */ - - while (*String && (*String != ' ')) - { - String++; - } - - if (!(*String)) - { - *Next = NULL; - } - else - { - *String = 0; - *Next = String + 1; - } - - return (Start); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbGetLine - * - * PARAMETERS: InputBuffer - Command line buffer - * - * RETURN: Count of arguments to the command - * - * DESCRIPTION: Get the next command line from the user. Gets entire line - * up to the next newline - * - ******************************************************************************/ - -static UINT32 -AcpiDbGetLine ( - char *InputBuffer) -{ - UINT32 i; - UINT32 Count; - char *Next; - char *This; - - - ACPI_STRCPY (AcpiGbl_DbParsedBuf, InputBuffer); - - This = AcpiGbl_DbParsedBuf; - for (i = 0; i < ACPI_DEBUGGER_MAX_ARGS; i++) - { - AcpiGbl_DbArgs[i] = AcpiDbGetNextToken (This, &Next); - if (!AcpiGbl_DbArgs[i]) - { - break; - } - - This = Next; - } - - /* Uppercase the actual command */ - - if (AcpiGbl_DbArgs[0]) - { - AcpiUtStrupr (AcpiGbl_DbArgs[0]); - } - - Count = i; - if (Count) - { - Count--; /* Number of args only */ - } - - return (Count); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbMatchCommand - * - * PARAMETERS: UserCommand - User command line - * - * RETURN: Index into command array, -1 if not found - * - * DESCRIPTION: Search command array for a command match - * - ******************************************************************************/ - -static UINT32 -AcpiDbMatchCommand ( - char *UserCommand) -{ - UINT32 i; - - - if (!UserCommand || UserCommand[0] == 0) - { - return (CMD_NULL); - } - - for (i = CMD_FIRST_VALID; AcpiGbl_DbCommands[i].Name; i++) - { - if (ACPI_STRSTR (AcpiGbl_DbCommands[i].Name, UserCommand) == - AcpiGbl_DbCommands[i].Name) - { - return (i); - } - } - - /* Command not recognized */ - - return (CMD_NOT_FOUND); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbCommandDispatch - * - * PARAMETERS: InputBuffer - Command line buffer - * WalkState - Current walk - * Op - Current (executing) parse op - * - * RETURN: Status - * - * DESCRIPTION: Command dispatcher. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbCommandDispatch ( - char *InputBuffer, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - UINT32 Temp; - UINT32 CommandIndex; - UINT32 ParamCount; - char *CommandLine; - ACPI_STATUS Status = AE_CTRL_TRUE; - - - /* If AcpiTerminate has been called, terminate this thread */ - - if (AcpiGbl_DbTerminateThreads) - { - return (AE_CTRL_TERMINATE); - } - - ParamCount = AcpiDbGetLine (InputBuffer); - CommandIndex = AcpiDbMatchCommand (AcpiGbl_DbArgs[0]); - Temp = 0; - - /* Verify that we have the minimum number of params */ - - if (ParamCount < AcpiGbl_DbCommands[CommandIndex].MinArgs) - { - AcpiOsPrintf ("%d parameters entered, [%s] requires %d parameters\n", - ParamCount, AcpiGbl_DbCommands[CommandIndex].Name, - AcpiGbl_DbCommands[CommandIndex].MinArgs); - - return (AE_CTRL_TRUE); - } - - /* Decode and dispatch the command */ - - switch (CommandIndex) - { - case CMD_NULL: - if (Op) - { - return (AE_OK); - } - break; - - case CMD_ALLOCATIONS: - -#ifdef ACPI_DBG_TRACK_ALLOCATIONS - AcpiUtDumpAllocations ((UINT32) -1, NULL); -#endif - break; - - case CMD_ARGS: - case CMD_ARGUMENTS: - AcpiDbDisplayArguments (); - break; - - case CMD_BREAKPOINT: - AcpiDbSetMethodBreakpoint (AcpiGbl_DbArgs[1], WalkState, Op); - break; - - case CMD_BUSINFO: - AcpiDbGetBusInfo (); - break; - - case CMD_CALL: - AcpiDbSetMethodCallBreakpoint (Op); - Status = AE_OK; - break; - - case CMD_CLOSE: - AcpiDbCloseDebugFile (); - break; - - case CMD_DEBUG: - AcpiDbExecute (AcpiGbl_DbArgs[1], &AcpiGbl_DbArgs[2], EX_SINGLE_STEP); - break; - - case CMD_DISASSEMBLE: - (void) AcpiDbDisassembleMethod (AcpiGbl_DbArgs[1]); - break; - - case CMD_DUMP: - AcpiDbDecodeAndDisplayObject (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]); - break; - - case CMD_ENABLEACPI: - Status = AcpiEnable(); - if (ACPI_FAILURE(Status)) - { - AcpiOsPrintf("AcpiEnable failed (Status=%X)\n", Status); - return (Status); - } - break; - - case CMD_EVENT: - AcpiOsPrintf ("Event command not implemented\n"); - break; - - case CMD_EXECUTE: - AcpiDbExecute (AcpiGbl_DbArgs[1], - &AcpiGbl_DbArgs[2], EX_NO_SINGLE_STEP); - break; - - case CMD_FIND: - Status = AcpiDbFindNameInNamespace (AcpiGbl_DbArgs[1]); - break; - - case CMD_GO: - AcpiGbl_CmSingleStep = FALSE; - return (AE_OK); - - case CMD_GPE: - AcpiDbGenerateGpe (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]); - break; - - case CMD_GPES: - AcpiDbDisplayGpes (); - break; - - case CMD_HELP: - case CMD_HELP2: - AcpiDbDisplayHelp (AcpiGbl_DbArgs[1]); - break; - - case CMD_HISTORY: - AcpiDbDisplayHistory (); - break; - - case CMD_HISTORY_EXE: - CommandLine = AcpiDbGetFromHistory (AcpiGbl_DbArgs[1]); - if (!CommandLine) - { - return (AE_CTRL_TRUE); - } - - Status = AcpiDbCommandDispatch (CommandLine, WalkState, Op); - return (Status); - - case CMD_HISTORY_LAST: - CommandLine = AcpiDbGetFromHistory (NULL); - if (!CommandLine) - { - return (AE_CTRL_TRUE); - } - - Status = AcpiDbCommandDispatch (CommandLine, WalkState, Op); - return (Status); - - case CMD_INFORMATION: - AcpiDbDisplayMethodInfo (Op); - break; - - case CMD_INTEGRITY: - AcpiDbCheckIntegrity (); - break; - - case CMD_INTO: - if (Op) - { - AcpiGbl_CmSingleStep = TRUE; - return (AE_OK); - } - break; - - case CMD_LEVEL: - if (ParamCount == 0) - { - AcpiOsPrintf ("Current debug level for file output is: %8.8lX\n", - AcpiGbl_DbDebugLevel); - AcpiOsPrintf ("Current debug level for console output is: %8.8lX\n", - AcpiGbl_DbConsoleDebugLevel); - } - else if (ParamCount == 2) - { - Temp = AcpiGbl_DbConsoleDebugLevel; - AcpiGbl_DbConsoleDebugLevel = ACPI_STRTOUL (AcpiGbl_DbArgs[1], - NULL, 16); - AcpiOsPrintf ( - "Debug Level for console output was %8.8lX, now %8.8lX\n", - Temp, AcpiGbl_DbConsoleDebugLevel); - } - else - { - Temp = AcpiGbl_DbDebugLevel; - AcpiGbl_DbDebugLevel = ACPI_STRTOUL (AcpiGbl_DbArgs[1], NULL, 16); - AcpiOsPrintf ( - "Debug Level for file output was %8.8lX, now %8.8lX\n", - Temp, AcpiGbl_DbDebugLevel); - } - break; - - case CMD_LIST: - AcpiDbDisassembleAml (AcpiGbl_DbArgs[1], Op); - break; - - case CMD_LOAD: - Status = AcpiDbGetTableFromFile (AcpiGbl_DbArgs[1], NULL); - break; - - case CMD_LOCKS: - AcpiDbDisplayLocks (); - break; - - case CMD_LOCALS: - AcpiDbDisplayLocals (); - break; - - case CMD_METHODS: - Status = AcpiDbDisplayObjects ("METHOD", AcpiGbl_DbArgs[1]); - break; - - case CMD_NAMESPACE: - AcpiDbDumpNamespace (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]); - break; - - case CMD_NOTIFY: - Temp = ACPI_STRTOUL (AcpiGbl_DbArgs[2], NULL, 0); - AcpiDbSendNotify (AcpiGbl_DbArgs[1], Temp); - break; - - case CMD_OBJECT: - AcpiUtStrupr (AcpiGbl_DbArgs[1]); - Status = AcpiDbDisplayObjects (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]); - break; - - case CMD_OPEN: - AcpiDbOpenDebugFile (AcpiGbl_DbArgs[1]); - break; - - case CMD_OWNER: - AcpiDbDumpNamespaceByOwner (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]); - break; - - case CMD_PREFIX: - AcpiDbSetScope (AcpiGbl_DbArgs[1]); - break; - - case CMD_REFERENCES: - AcpiDbFindReferences (AcpiGbl_DbArgs[1]); - break; - - case CMD_RESOURCES: - AcpiDbDisplayResources (AcpiGbl_DbArgs[1]); - break; - - case CMD_RESULTS: - AcpiDbDisplayResults (); - break; - - case CMD_SET: - AcpiDbSetMethodData (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2], - AcpiGbl_DbArgs[3]); - break; - - case CMD_SLEEP: - Status = AcpiDbSleep (AcpiGbl_DbArgs[1]); - break; - - case CMD_STATS: - Status = AcpiDbDisplayStatistics (AcpiGbl_DbArgs[1]); - break; - - case CMD_STOP: - return (AE_NOT_IMPLEMENTED); - - case CMD_TABLES: - AcpiDbDisplayTableInfo (AcpiGbl_DbArgs[1]); - break; - - case CMD_TERMINATE: - AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT); - AcpiUtSubsystemShutdown (); - - /* - * TBD: [Restructure] Need some way to re-initialize without - * re-creating the semaphores! - */ - - /* AcpiInitialize (NULL); */ - break; - - case CMD_THREADS: - AcpiDbCreateExecutionThreads (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2], - AcpiGbl_DbArgs[3]); - break; - - case CMD_TRACE: - AcpiDebugTrace (AcpiGbl_DbArgs[1],0,0,1); - break; - - case CMD_TREE: - AcpiDbDisplayCallingTree (); - break; - - case CMD_TYPE: - AcpiDbDisplayObjectType (AcpiGbl_DbArgs[1]); - break; - - case CMD_UNLOAD: - AcpiDbUnloadAcpiTable (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]); - break; - - case CMD_EXIT: - case CMD_QUIT: - if (Op) - { - AcpiOsPrintf ("Method execution terminated\n"); - return (AE_CTRL_TERMINATE); - } - - if (!AcpiGbl_DbOutputToFile) - { - AcpiDbgLevel = ACPI_DEBUG_DEFAULT; - } - - AcpiDbCloseDebugFile (); - AcpiGbl_DbTerminateThreads = TRUE; - return (AE_CTRL_TERMINATE); - - case CMD_NOT_FOUND: - default: - AcpiOsPrintf ("Unknown Command\n"); - return (AE_CTRL_TRUE); - } - - if (ACPI_SUCCESS (Status)) - { - Status = AE_CTRL_TRUE; - } - - /* Add all commands that come here to the history buffer */ - - AcpiDbAddToHistory (InputBuffer); - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbExecuteThread - * - * PARAMETERS: Context - Not used - * - * RETURN: None - * - * DESCRIPTION: Debugger execute thread. Waits for a command line, then - * simply dispatches it. - * - ******************************************************************************/ - -void ACPI_SYSTEM_XFACE -AcpiDbExecuteThread ( - void *Context) -{ - ACPI_STATUS Status = AE_OK; - ACPI_STATUS MStatus; - - - while (Status != AE_CTRL_TERMINATE) - { - AcpiGbl_MethodExecuting = FALSE; - AcpiGbl_StepToNextCall = FALSE; - - MStatus = AcpiUtAcquireMutex (ACPI_MTX_DEBUG_CMD_READY); - if (ACPI_FAILURE (MStatus)) - { - return; - } - - Status = AcpiDbCommandDispatch (AcpiGbl_DbLineBuf, NULL, NULL); - - MStatus = AcpiUtReleaseMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); - if (ACPI_FAILURE (MStatus)) - { - return; - } - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbSingleThread - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Debugger execute thread. Waits for a command line, then - * simply dispatches it. - * - ******************************************************************************/ - -static void -AcpiDbSingleThread ( - void) -{ - - AcpiGbl_MethodExecuting = FALSE; - AcpiGbl_StepToNextCall = FALSE; - - (void) AcpiDbCommandDispatch (AcpiGbl_DbLineBuf, NULL, NULL); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbUserCommands - * - * PARAMETERS: Prompt - User prompt (depends on mode) - * Op - Current executing parse op - * - * RETURN: None - * - * DESCRIPTION: Command line execution for the AML debugger. Commands are - * matched and dispatched here. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbUserCommands ( - char Prompt, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_STATUS Status = AE_OK; - - - /* TBD: [Restructure] Need a separate command line buffer for step mode */ - - while (!AcpiGbl_DbTerminateThreads) - { - /* Force output to console until a command is entered */ - - AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); - - /* Different prompt if method is executing */ - - if (!AcpiGbl_MethodExecuting) - { - AcpiOsPrintf ("%1c ", ACPI_DEBUGGER_COMMAND_PROMPT); - } - else - { - AcpiOsPrintf ("%1c ", ACPI_DEBUGGER_EXECUTE_PROMPT); - } - - /* Get the user input line */ - - (void) AcpiOsGetLine (AcpiGbl_DbLineBuf); - - /* Check for single or multithreaded debug */ - - if (AcpiGbl_DebuggerConfiguration & DEBUGGER_MULTI_THREADED) - { - /* - * Signal the debug thread that we have a command to execute, - * and wait for the command to complete. - */ - Status = AcpiUtReleaseMutex (ACPI_MTX_DEBUG_CMD_READY); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - } - else - { - /* Just call to the command line interpreter */ - - AcpiDbSingleThread (); - } - } - - /* - * Only this thread (the original thread) should actually terminate the - * subsystem, because all the semaphores are deleted during termination - */ - Status = AcpiTerminate (); - return (Status); -} - -#endif /* ACPI_DEBUGGER */ - diff --git a/sys/contrib/dev/acpica-unix-20061109/debugger/dbstats.c b/sys/contrib/dev/acpica-unix-20061109/debugger/dbstats.c deleted file mode 100644 index 094900d017..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/debugger/dbstats.c +++ /dev/null @@ -1,614 +0,0 @@ -/******************************************************************************* - * - * Module Name: dbstats - Generation and display of ACPI table statistics - * $Revision: 1.84 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acdebug.h" -#include "acnamesp.h" - -#ifdef ACPI_DEBUGGER - -#define _COMPONENT ACPI_CA_DEBUGGER - ACPI_MODULE_NAME ("dbstats") - -/* Local prototypes */ - -static void -AcpiDbCountNamespaceObjects ( - void); - -static void -AcpiDbEnumerateObject ( - ACPI_OPERAND_OBJECT *ObjDesc); - -static ACPI_STATUS -AcpiDbClassifyOneObject ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue); - -static void -AcpiDbListInfo ( - ACPI_MEMORY_LIST *List); - - -/* - * Statistics subcommands - */ -static ARGUMENT_INFO AcpiDbStatTypes [] = -{ - {"ALLOCATIONS"}, - {"OBJECTS"}, - {"MEMORY"}, - {"MISC"}, - {"TABLES"}, - {"SIZES"}, - {"STACK"}, - {NULL} /* Must be null terminated */ -}; - -#define CMD_STAT_ALLOCATIONS 0 -#define CMD_STAT_OBJECTS 1 -#define CMD_STAT_MEMORY 2 -#define CMD_STAT_MISC 3 -#define CMD_STAT_TABLES 4 -#define CMD_STAT_SIZES 5 -#define CMD_STAT_STACK 6 - - -#if defined ACPI_DBG_TRACK_ALLOCATIONS || defined ACPI_USE_LOCAL_CACHE - -/******************************************************************************* - * - * FUNCTION: AcpiDbListInfo - * - * PARAMETERS: List - Memory list/cache to be displayed - * - * RETURN: None - * - * DESCRIPTION: Display information about the input memory list or cache. - * - ******************************************************************************/ - -static void -AcpiDbListInfo ( - ACPI_MEMORY_LIST *List) -{ -#ifdef ACPI_DBG_TRACK_ALLOCATIONS - UINT32 Outstanding; - UINT32 Temp; -#endif - - AcpiOsPrintf ("\n%s\n", List->ListName); - - /* MaxDepth > 0 indicates a cache object */ - - if (List->MaxDepth > 0) - { - AcpiOsPrintf ( - " Cache: [Depth Max Avail Size] % 7d % 7d % 7d % 7d B\n", - List->CurrentDepth, - List->MaxDepth, - List->MaxDepth - List->CurrentDepth, - (List->CurrentDepth * List->ObjectSize)); - } - -#ifdef ACPI_DBG_TRACK_ALLOCATIONS - if (List->MaxDepth > 0) - { - AcpiOsPrintf ( - " Cache: [Requests Hits Misses ObjSize] % 7d % 7d % 7d % 7d B\n", - List->Requests, - List->Hits, - List->Requests - List->Hits, - List->ObjectSize); - } - - Outstanding = List->TotalAllocated - - List->TotalFreed - - List->CurrentDepth; - - if (List->ObjectSize) - { - Temp = ACPI_ROUND_UP_TO_1K (Outstanding * List->ObjectSize); - } - else - { - Temp = ACPI_ROUND_UP_TO_1K (List->CurrentTotalSize); - } - - AcpiOsPrintf ( - " Mem: [Alloc Free Outstanding Size] % 7d % 7d % 7d % 7d Kb\n", - List->TotalAllocated, - List->TotalFreed, - Outstanding, Temp); -#endif -} -#endif - - -/******************************************************************************* - * - * FUNCTION: AcpiDbEnumerateObject - * - * PARAMETERS: ObjDesc - Object to be counted - * - * RETURN: None - * - * DESCRIPTION: Add this object to the global counts, by object type. - * Limited recursion handles subobjects and packages, and this - * is probably acceptable within the AML debugger only. - * - ******************************************************************************/ - -static void -AcpiDbEnumerateObject ( - ACPI_OPERAND_OBJECT *ObjDesc) -{ - UINT32 i; - - - if (!ObjDesc) - { - return; - } - - /* Enumerate this object first */ - - AcpiGbl_NumObjects++; - - if (ACPI_GET_OBJECT_TYPE (ObjDesc) > ACPI_TYPE_NS_NODE_MAX) - { - AcpiGbl_ObjTypeCountMisc++; - } - else - { - AcpiGbl_ObjTypeCount [ACPI_GET_OBJECT_TYPE (ObjDesc)]++; - } - - /* Count the sub-objects */ - - switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) - { - case ACPI_TYPE_PACKAGE: - - for (i = 0; i < ObjDesc->Package.Count; i++) - { - AcpiDbEnumerateObject (ObjDesc->Package.Elements[i]); - } - break; - - case ACPI_TYPE_DEVICE: - - AcpiDbEnumerateObject (ObjDesc->Device.SystemNotify); - AcpiDbEnumerateObject (ObjDesc->Device.DeviceNotify); - AcpiDbEnumerateObject (ObjDesc->Device.Handler); - break; - - case ACPI_TYPE_BUFFER_FIELD: - - if (AcpiNsGetSecondaryObject (ObjDesc)) - { - AcpiGbl_ObjTypeCount [ACPI_TYPE_BUFFER_FIELD]++; - } - break; - - case ACPI_TYPE_REGION: - - AcpiGbl_ObjTypeCount [ACPI_TYPE_LOCAL_REGION_FIELD ]++; - AcpiDbEnumerateObject (ObjDesc->Region.Handler); - break; - - case ACPI_TYPE_POWER: - - AcpiDbEnumerateObject (ObjDesc->PowerResource.SystemNotify); - AcpiDbEnumerateObject (ObjDesc->PowerResource.DeviceNotify); - break; - - case ACPI_TYPE_PROCESSOR: - - AcpiDbEnumerateObject (ObjDesc->Processor.SystemNotify); - AcpiDbEnumerateObject (ObjDesc->Processor.DeviceNotify); - AcpiDbEnumerateObject (ObjDesc->Processor.Handler); - break; - - case ACPI_TYPE_THERMAL: - - AcpiDbEnumerateObject (ObjDesc->ThermalZone.SystemNotify); - AcpiDbEnumerateObject (ObjDesc->ThermalZone.DeviceNotify); - AcpiDbEnumerateObject (ObjDesc->ThermalZone.Handler); - break; - - default: - break; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbClassifyOneObject - * - * PARAMETERS: Callback for WalkNamespace - * - * RETURN: Status - * - * DESCRIPTION: Enumerate both the object descriptor (including subobjects) and - * the parent namespace node. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDbClassifyOneObject ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue) -{ - ACPI_NAMESPACE_NODE *Node; - ACPI_OPERAND_OBJECT *ObjDesc; - UINT32 Type; - - - AcpiGbl_NumNodes++; - - Node = (ACPI_NAMESPACE_NODE *) ObjHandle; - ObjDesc = AcpiNsGetAttachedObject (Node); - - AcpiDbEnumerateObject (ObjDesc); - - Type = Node->Type; - if (Type > ACPI_TYPE_NS_NODE_MAX) - { - AcpiGbl_NodeTypeCountMisc++; - } - else - { - AcpiGbl_NodeTypeCount [Type]++; - } - - return AE_OK; - - -#ifdef ACPI_FUTURE_IMPLEMENTATION - - /* TBD: These need to be counted during the initial parsing phase */ - - if (AcpiPsIsNamedOp (Op->Opcode)) - { - NumNodes++; - } - - if (IsMethod) - { - NumMethodElements++; - } - - NumGrammarElements++; - Op = AcpiPsGetDepthNext (Root, Op); - - SizeOfParseTree = (NumGrammarElements - NumMethodElements) * - (UINT32) sizeof (ACPI_PARSE_OBJECT); - SizeOfMethodTrees = NumMethodElements * (UINT32) sizeof (ACPI_PARSE_OBJECT); - SizeOfNodeEntries = NumNodes * (UINT32) sizeof (ACPI_NAMESPACE_NODE); - SizeOfAcpiObjects = NumNodes * (UINT32) sizeof (ACPI_OPERAND_OBJECT); -#endif -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbCountNamespaceObjects - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Count and classify the entire namespace, including all - * namespace nodes and attached objects. - * - ******************************************************************************/ - -static void -AcpiDbCountNamespaceObjects ( - void) -{ - UINT32 i; - - - AcpiGbl_NumNodes = 0; - AcpiGbl_NumObjects = 0; - - AcpiGbl_ObjTypeCountMisc = 0; - for (i = 0; i < (ACPI_TYPE_NS_NODE_MAX -1); i++) - { - AcpiGbl_ObjTypeCount [i] = 0; - AcpiGbl_NodeTypeCount [i] = 0; - } - - (void) AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, FALSE, AcpiDbClassifyOneObject, NULL, NULL); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDisplayStatistics - * - * PARAMETERS: TypeArg - Subcommand - * - * RETURN: Status - * - * DESCRIPTION: Display various statistics - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbDisplayStatistics ( - char *TypeArg) -{ - UINT32 i; - UINT32 Temp; - - - if (!TypeArg) - { - AcpiOsPrintf ("The following subcommands are available:\n ALLOCATIONS, OBJECTS, MEMORY, MISC, SIZES, TABLES\n"); - return (AE_OK); - } - - AcpiUtStrupr (TypeArg); - Temp = AcpiDbMatchArgument (TypeArg, AcpiDbStatTypes); - if (Temp == (UINT32) -1) - { - AcpiOsPrintf ("Invalid or unsupported argument\n"); - return (AE_OK); - } - - - switch (Temp) - { - case CMD_STAT_ALLOCATIONS: - -#ifdef ACPI_DBG_TRACK_ALLOCATIONS - AcpiUtDumpAllocationInfo (); -#endif - break; - - case CMD_STAT_TABLES: - - AcpiOsPrintf ("ACPI Table Information (not implemented):\n\n"); - break; - - case CMD_STAT_OBJECTS: - - AcpiDbCountNamespaceObjects (); - - AcpiOsPrintf ("\nObjects defined in the current namespace:\n\n"); - - AcpiOsPrintf ("%16.16s %10.10s %10.10s\n", - "ACPI_TYPE", "NODES", "OBJECTS"); - - for (i = 0; i < ACPI_TYPE_NS_NODE_MAX; i++) - { - AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", AcpiUtGetTypeName (i), - AcpiGbl_NodeTypeCount [i], AcpiGbl_ObjTypeCount [i]); - } - AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", "Misc/Unknown", - AcpiGbl_NodeTypeCountMisc, AcpiGbl_ObjTypeCountMisc); - - AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", "TOTALS:", - AcpiGbl_NumNodes, AcpiGbl_NumObjects); - break; - - case CMD_STAT_MEMORY: - -#ifdef ACPI_DBG_TRACK_ALLOCATIONS - AcpiOsPrintf ("\n----Object and Cache Statistics---------------------------------------------\n"); - - AcpiDbListInfo (AcpiGbl_GlobalList); - AcpiDbListInfo (AcpiGbl_NsNodeList); - -#ifdef ACPI_USE_LOCAL_CACHE - AcpiDbListInfo (AcpiGbl_OperandCache); - AcpiDbListInfo (AcpiGbl_PsNodeCache); - AcpiDbListInfo (AcpiGbl_PsNodeExtCache); - AcpiDbListInfo (AcpiGbl_StateCache); -#endif -#endif - - break; - - case CMD_STAT_MISC: - - AcpiOsPrintf ("\nMiscellaneous Statistics:\n\n"); - AcpiOsPrintf ("Calls to AcpiPsFind:.. ........% 7ld\n", - AcpiGbl_PsFindCount); - AcpiOsPrintf ("Calls to AcpiNsLookup:..........% 7ld\n", - AcpiGbl_NsLookupCount); - - AcpiOsPrintf ("\n"); - - AcpiOsPrintf ("Mutex usage:\n\n"); - for (i = 0; i < ACPI_NUM_MUTEX; i++) - { - AcpiOsPrintf ("%-28s: % 7ld\n", - AcpiUtGetMutexName (i), AcpiGbl_MutexInfo[i].UseCount); - } - break; - - - case CMD_STAT_SIZES: - - AcpiOsPrintf ("\nInternal object sizes:\n\n"); - - AcpiOsPrintf ("Common %3d\n", sizeof (ACPI_OBJECT_COMMON)); - AcpiOsPrintf ("Number %3d\n", sizeof (ACPI_OBJECT_INTEGER)); - AcpiOsPrintf ("String %3d\n", sizeof (ACPI_OBJECT_STRING)); - AcpiOsPrintf ("Buffer %3d\n", sizeof (ACPI_OBJECT_BUFFER)); - AcpiOsPrintf ("Package %3d\n", sizeof (ACPI_OBJECT_PACKAGE)); - AcpiOsPrintf ("BufferField %3d\n", sizeof (ACPI_OBJECT_BUFFER_FIELD)); - AcpiOsPrintf ("Device %3d\n", sizeof (ACPI_OBJECT_DEVICE)); - AcpiOsPrintf ("Event %3d\n", sizeof (ACPI_OBJECT_EVENT)); - AcpiOsPrintf ("Method %3d\n", sizeof (ACPI_OBJECT_METHOD)); - AcpiOsPrintf ("Mutex %3d\n", sizeof (ACPI_OBJECT_MUTEX)); - AcpiOsPrintf ("Region %3d\n", sizeof (ACPI_OBJECT_REGION)); - AcpiOsPrintf ("PowerResource %3d\n", sizeof (ACPI_OBJECT_POWER_RESOURCE)); - AcpiOsPrintf ("Processor %3d\n", sizeof (ACPI_OBJECT_PROCESSOR)); - AcpiOsPrintf ("ThermalZone %3d\n", sizeof (ACPI_OBJECT_THERMAL_ZONE)); - AcpiOsPrintf ("RegionField %3d\n", sizeof (ACPI_OBJECT_REGION_FIELD)); - AcpiOsPrintf ("BankField %3d\n", sizeof (ACPI_OBJECT_BANK_FIELD)); - AcpiOsPrintf ("IndexField %3d\n", sizeof (ACPI_OBJECT_INDEX_FIELD)); - AcpiOsPrintf ("Reference %3d\n", sizeof (ACPI_OBJECT_REFERENCE)); - AcpiOsPrintf ("Notify %3d\n", sizeof (ACPI_OBJECT_NOTIFY_HANDLER)); - AcpiOsPrintf ("AddressSpace %3d\n", sizeof (ACPI_OBJECT_ADDR_HANDLER)); - AcpiOsPrintf ("Extra %3d\n", sizeof (ACPI_OBJECT_EXTRA)); - AcpiOsPrintf ("Data %3d\n", sizeof (ACPI_OBJECT_DATA)); - - AcpiOsPrintf ("\n"); - - AcpiOsPrintf ("ParseObject %3d\n", sizeof (ACPI_PARSE_OBJ_COMMON)); - AcpiOsPrintf ("ParseObjectNamed %3d\n", sizeof (ACPI_PARSE_OBJ_NAMED)); - AcpiOsPrintf ("ParseObjectAsl %3d\n", sizeof (ACPI_PARSE_OBJ_ASL)); - AcpiOsPrintf ("OperandObject %3d\n", sizeof (ACPI_OPERAND_OBJECT)); - AcpiOsPrintf ("NamespaceNode %3d\n", sizeof (ACPI_NAMESPACE_NODE)); - - break; - - - case CMD_STAT_STACK: -#if defined(ACPI_DEBUG_OUTPUT) - - Temp = (UINT32) (AcpiGbl_EntryStackPointer - AcpiGbl_LowestStackPointer); - - AcpiOsPrintf ("\nSubsystem Stack Usage:\n\n"); - AcpiOsPrintf ("Entry Stack Pointer %X\n", AcpiGbl_EntryStackPointer); - AcpiOsPrintf ("Lowest Stack Pointer %X\n", AcpiGbl_LowestStackPointer); - AcpiOsPrintf ("Stack Use %X (%d)\n", Temp, Temp); - AcpiOsPrintf ("Deepest Procedure Nesting %d\n", AcpiGbl_DeepestNesting); -#endif - break; - - default: - break; - } - - AcpiOsPrintf ("\n"); - return (AE_OK); -} - -#endif /* ACPI_DEBUGGER */ diff --git a/sys/contrib/dev/acpica-unix-20061109/debugger/dbutils.c b/sys/contrib/dev/acpica-unix-20061109/debugger/dbutils.c deleted file mode 100644 index 5a1b1b017f..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/debugger/dbutils.c +++ /dev/null @@ -1,553 +0,0 @@ -/******************************************************************************* - * - * Module Name: dbutils - AML debugger utilities - * $Revision: 1.81 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acnamesp.h" -#include "acdebug.h" -#include "acdisasm.h" - - -#ifdef ACPI_DEBUGGER - -#define _COMPONENT ACPI_CA_DEBUGGER - ACPI_MODULE_NAME ("dbutils") - -/* Local prototypes */ - -#ifdef ACPI_OBSOLETE_FUNCTIONS -ACPI_STATUS -AcpiDbSecondPassParse ( - ACPI_PARSE_OBJECT *Root); - -void -AcpiDbDumpBuffer ( - UINT32 Address); -#endif - - -/******************************************************************************* - * - * FUNCTION: AcpiDbMatchArgument - * - * PARAMETERS: UserArgument - User command line - * Arguments - Array of commands to match against - * - * RETURN: Index into command array or ACPI_TYPE_NOT_FOUND if not found - * - * DESCRIPTION: Search command array for a command match - * - ******************************************************************************/ - -ACPI_OBJECT_TYPE -AcpiDbMatchArgument ( - char *UserArgument, - ARGUMENT_INFO *Arguments) -{ - UINT32 i; - - - if (!UserArgument || UserArgument[0] == 0) - { - return (ACPI_TYPE_NOT_FOUND); - } - - for (i = 0; Arguments[i].Name; i++) - { - if (ACPI_STRSTR (Arguments[i].Name, UserArgument) == Arguments[i].Name) - { - return (i); - } - } - - /* Argument not recognized */ - - return (ACPI_TYPE_NOT_FOUND); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbSetOutputDestination - * - * PARAMETERS: OutputFlags - Current flags word - * - * RETURN: None - * - * DESCRIPTION: Set the current destination for debugger output. Also sets - * the debug output level accordingly. - * - ******************************************************************************/ - -void -AcpiDbSetOutputDestination ( - UINT32 OutputFlags) -{ - - AcpiGbl_DbOutputFlags = (UINT8) OutputFlags; - - if ((OutputFlags & ACPI_DB_REDIRECTABLE_OUTPUT) && AcpiGbl_DbOutputToFile) - { - AcpiDbgLevel = AcpiGbl_DbDebugLevel; - } - else - { - AcpiDbgLevel = AcpiGbl_DbConsoleDebugLevel; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDumpExternalObject - * - * PARAMETERS: ObjDesc - External ACPI object to dump - * Level - Nesting level. - * - * RETURN: None - * - * DESCRIPTION: Dump the contents of an ACPI external object - * - ******************************************************************************/ - -void -AcpiDbDumpExternalObject ( - ACPI_OBJECT *ObjDesc, - UINT32 Level) -{ - UINT32 i; - - - if (!ObjDesc) - { - AcpiOsPrintf ("[Null Object]\n"); - return; - } - - for (i = 0; i < Level; i++) - { - AcpiOsPrintf (" "); - } - - switch (ObjDesc->Type) - { - case ACPI_TYPE_ANY: - - AcpiOsPrintf ("[Object Reference] = %p", ObjDesc->Reference.Handle); - AcpiDmDisplayInternalObject (ObjDesc->Reference.Handle, NULL); - break; - - - case ACPI_TYPE_INTEGER: - - AcpiOsPrintf ("[Integer] = %8.8X%8.8X\n", - ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value)); - break; - - - case ACPI_TYPE_STRING: - - AcpiOsPrintf ("[String] Length %.2X = ", ObjDesc->String.Length); - for (i = 0; i < ObjDesc->String.Length; i++) - { - AcpiOsPrintf ("%c", ObjDesc->String.Pointer[i]); - } - AcpiOsPrintf ("\n"); - break; - - - case ACPI_TYPE_BUFFER: - - AcpiOsPrintf ("[Buffer] Length %.2X = ", ObjDesc->Buffer.Length); - if (ObjDesc->Buffer.Length) - { - AcpiUtDumpBuffer (ACPI_CAST_PTR (UINT8, ObjDesc->Buffer.Pointer), - ObjDesc->Buffer.Length, DB_DWORD_DISPLAY, _COMPONENT); - } - else - { - AcpiOsPrintf ("\n"); - } - break; - - - case ACPI_TYPE_PACKAGE: - - AcpiOsPrintf ("[Package] Contains %d Elements:\n", - ObjDesc->Package.Count); - - for (i = 0; i < ObjDesc->Package.Count; i++) - { - AcpiDbDumpExternalObject (&ObjDesc->Package.Elements[i], Level+1); - } - break; - - - case ACPI_TYPE_LOCAL_REFERENCE: - - AcpiOsPrintf ("[Object Reference] = %p", ObjDesc->Reference.Handle); - AcpiDmDisplayInternalObject (ObjDesc->Reference.Handle, NULL); - break; - - - case ACPI_TYPE_PROCESSOR: - - AcpiOsPrintf ("[Processor]\n"); - break; - - - case ACPI_TYPE_POWER: - - AcpiOsPrintf ("[Power Resource]\n"); - break; - - - default: - - AcpiOsPrintf ("[Unknown Type] %X\n", ObjDesc->Type); - break; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbPrepNamestring - * - * PARAMETERS: Name - String to prepare - * - * RETURN: None - * - * DESCRIPTION: Translate all forward slashes and dots to backslashes. - * - ******************************************************************************/ - -void -AcpiDbPrepNamestring ( - char *Name) -{ - - if (!Name) - { - return; - } - - AcpiUtStrupr (Name); - - /* Convert a leading forward slash to a backslash */ - - if (*Name == '/') - { - *Name = '\\'; - } - - /* Ignore a leading backslash, this is the root prefix */ - - if (*Name == '\\') - { - Name++; - } - - /* Convert all slash path separators to dots */ - - while (*Name) - { - if ((*Name == '/') || - (*Name == '\\')) - { - *Name = '.'; - } - - Name++; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbLocalNsLookup - * - * PARAMETERS: Name - Name to lookup - * - * RETURN: Pointer to a namespace node, null on failure - * - * DESCRIPTION: Lookup a name in the ACPI namespace - * - * Note: Currently begins search from the root. Could be enhanced to use - * the current prefix (scope) node as the search beginning point. - * - ******************************************************************************/ - -ACPI_NAMESPACE_NODE * -AcpiDbLocalNsLookup ( - char *Name) -{ - char *InternalPath; - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node = NULL; - - - AcpiDbPrepNamestring (Name); - - /* Build an internal namestring */ - - Status = AcpiNsInternalizeName (Name, &InternalPath); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Invalid namestring: %s\n", Name); - return (NULL); - } - - /* - * Lookup the name. - * (Uses root node as the search starting point) - */ - Status = AcpiNsLookup (NULL, InternalPath, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE, NULL, &Node); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not locate name: %s, %s\n", - Name, AcpiFormatException (Status)); - } - - ACPI_FREE (InternalPath); - return (Node); -} - - -#ifdef ACPI_OBSOLETE_FUNCTIONS -/******************************************************************************* - * - * FUNCTION: AcpiDbSecondPassParse - * - * PARAMETERS: Root - Root of the parse tree - * - * RETURN: Status - * - * DESCRIPTION: Second pass parse of the ACPI tables. We need to wait until - * second pass to parse the control methods - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbSecondPassParse ( - ACPI_PARSE_OBJECT *Root) -{ - ACPI_PARSE_OBJECT *Op = Root; - ACPI_PARSE_OBJECT *Method; - ACPI_PARSE_OBJECT *SearchOp; - ACPI_PARSE_OBJECT *StartOp; - ACPI_STATUS Status = AE_OK; - UINT32 BaseAmlOffset; - ACPI_WALK_STATE *WalkState; - - - ACPI_FUNCTION_ENTRY (); - - - AcpiOsPrintf ("Pass two parse ....\n"); - - while (Op) - { - if (Op->Common.AmlOpcode == AML_METHOD_OP) - { - Method = Op; - - /* Create a new walk state for the parse */ - - WalkState = AcpiDsCreateWalkState (0, NULL, NULL, NULL); - if (!WalkState) - { - return (AE_NO_MEMORY); - } - - /* Init the Walk State */ - - WalkState->ParserState.Aml = - WalkState->ParserState.AmlStart = Method->Named.Data; - WalkState->ParserState.AmlEnd = - WalkState->ParserState.PkgEnd = Method->Named.Data + - Method->Named.Length; - WalkState->ParserState.StartScope = Op; - - WalkState->DescendingCallback = AcpiDsLoad1BeginOp; - WalkState->AscendingCallback = AcpiDsLoad1EndOp; - - /* Perform the AML parse */ - - Status = AcpiPsParseAml (WalkState); - - BaseAmlOffset = (Method->Common.Value.Arg)->Common.AmlOffset + 1; - StartOp = (Method->Common.Value.Arg)->Common.Next; - SearchOp = StartOp; - - while (SearchOp) - { - SearchOp->Common.AmlOffset += BaseAmlOffset; - SearchOp = AcpiPsGetDepthNext (StartOp, SearchOp); - } - } - - if (Op->Common.AmlOpcode == AML_REGION_OP) - { - /* TBD: [Investigate] this isn't quite the right thing to do! */ - /* - * - * Method = (ACPI_DEFERRED_OP *) Op; - * Status = AcpiPsParseAml (Op, Method->Body, Method->BodyLength); - */ - } - - if (ACPI_FAILURE (Status)) - { - break; - } - - Op = AcpiPsGetDepthNext (Root, Op); - } - - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbDumpBuffer - * - * PARAMETERS: Address - Pointer to the buffer - * - * RETURN: None - * - * DESCRIPTION: Print a portion of a buffer - * - ******************************************************************************/ - -void -AcpiDbDumpBuffer ( - UINT32 Address) -{ - - AcpiOsPrintf ("\nLocation %X:\n", Address); - - AcpiDbgLevel |= ACPI_LV_TABLES; - AcpiUtDumpBuffer (ACPI_TO_POINTER (Address), 64, DB_BYTE_DISPLAY, - ACPI_UINT32_MAX); -} -#endif - -#endif /* ACPI_DEBUGGER */ - - diff --git a/sys/contrib/dev/acpica-unix-20061109/debugger/dbxface.c b/sys/contrib/dev/acpica-unix-20061109/debugger/dbxface.c deleted file mode 100644 index fdc2ef797c..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/debugger/dbxface.c +++ /dev/null @@ -1,606 +0,0 @@ -/******************************************************************************* - * - * Module Name: dbxface - AML Debugger external interfaces - * $Revision: 1.77 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "amlcode.h" -#include "acdebug.h" -#include "acdisasm.h" - - -#ifdef ACPI_DEBUGGER - -#define _COMPONENT ACPI_CA_DEBUGGER - ACPI_MODULE_NAME ("dbxface") - - -/* Local prototypes */ - -static ACPI_STATUS -AcpiDbStartCommand ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op); - -#ifdef ACPI_OBSOLETE_FUNCTIONS -void -AcpiDbMethodEnd ( - ACPI_WALK_STATE *WalkState); -#endif - - -/******************************************************************************* - * - * FUNCTION: AcpiDbStartCommand - * - * PARAMETERS: WalkState - Current walk - * Op - Current executing Op, from AML interpreter - * - * RETURN: Status - * - * DESCRIPTION: Enter debugger command loop - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDbStartCommand ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_STATUS Status; - - - /* TBD: [Investigate] are there namespace locking issues here? */ - - /* AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); */ - - /* Go into the command loop and await next user command */ - - - AcpiGbl_MethodExecuting = TRUE; - Status = AE_CTRL_TRUE; - while (Status == AE_CTRL_TRUE) - { - if (AcpiGbl_DebuggerConfiguration == DEBUGGER_MULTI_THREADED) - { - /* Handshake with the front-end that gets user command lines */ - - Status = AcpiUtReleaseMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - Status = AcpiUtAcquireMutex (ACPI_MTX_DEBUG_CMD_READY); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - } - else - { - /* Single threaded, we must get a command line ourselves */ - - /* Force output to console until a command is entered */ - - AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); - - /* Different prompt if method is executing */ - - if (!AcpiGbl_MethodExecuting) - { - AcpiOsPrintf ("%1c ", ACPI_DEBUGGER_COMMAND_PROMPT); - } - else - { - AcpiOsPrintf ("%1c ", ACPI_DEBUGGER_EXECUTE_PROMPT); - } - - /* Get the user input line */ - - (void) AcpiOsGetLine (AcpiGbl_DbLineBuf); - } - - Status = AcpiDbCommandDispatch (AcpiGbl_DbLineBuf, WalkState, Op); - } - - /* AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); */ - - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbSingleStep - * - * PARAMETERS: WalkState - Current walk - * Op - Current executing op (from aml interpreter) - * OpcodeClass - Class of the current AML Opcode - * - * RETURN: Status - * - * DESCRIPTION: Called just before execution of an AML opcode. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbSingleStep ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - UINT32 OpcodeClass) -{ - ACPI_PARSE_OBJECT *Next; - ACPI_STATUS Status = AE_OK; - UINT32 OriginalDebugLevel; - ACPI_PARSE_OBJECT *DisplayOp; - ACPI_PARSE_OBJECT *ParentOp; - - - ACPI_FUNCTION_ENTRY (); - - - /* Check the abort flag */ - - if (AcpiGbl_AbortMethod) - { - AcpiGbl_AbortMethod = FALSE; - return (AE_ABORT_METHOD); - } - - /* Check for single-step breakpoint */ - - if (WalkState->MethodBreakpoint && - (WalkState->MethodBreakpoint <= Op->Common.AmlOffset)) - { - /* Check if the breakpoint has been reached or passed */ - /* Hit the breakpoint, resume single step, reset breakpoint */ - - AcpiOsPrintf ("***Break*** at AML offset %X\n", Op->Common.AmlOffset); - AcpiGbl_CmSingleStep = TRUE; - AcpiGbl_StepToNextCall = FALSE; - WalkState->MethodBreakpoint = 0; - } - - /* Check for user breakpoint (Must be on exact Aml offset) */ - - else if (WalkState->UserBreakpoint && - (WalkState->UserBreakpoint == Op->Common.AmlOffset)) - { - AcpiOsPrintf ("***UserBreakpoint*** at AML offset %X\n", - Op->Common.AmlOffset); - AcpiGbl_CmSingleStep = TRUE; - AcpiGbl_StepToNextCall = FALSE; - WalkState->MethodBreakpoint = 0; - } - - /* - * Check if this is an opcode that we are interested in -- - * namely, opcodes that have arguments - */ - if (Op->Common.AmlOpcode == AML_INT_NAMEDFIELD_OP) - { - return (AE_OK); - } - - switch (OpcodeClass) - { - case AML_CLASS_UNKNOWN: - case AML_CLASS_ARGUMENT: /* constants, literals, etc. do nothing */ - return (AE_OK); - - default: - /* All other opcodes -- continue */ - break; - } - - /* - * Under certain debug conditions, display this opcode and its operands - */ - if ((AcpiGbl_DbOutputToFile) || - (AcpiGbl_CmSingleStep) || - (AcpiDbgLevel & ACPI_LV_PARSE)) - { - if ((AcpiGbl_DbOutputToFile) || - (AcpiDbgLevel & ACPI_LV_PARSE)) - { - AcpiOsPrintf ("\n[AmlDebug] Next AML Opcode to execute:\n"); - } - - /* - * Display this op (and only this op - zero out the NEXT field - * temporarily, and disable parser trace output for the duration of - * the display because we don't want the extraneous debug output) - */ - OriginalDebugLevel = AcpiDbgLevel; - AcpiDbgLevel &= ~(ACPI_LV_PARSE | ACPI_LV_FUNCTIONS); - Next = Op->Common.Next; - Op->Common.Next = NULL; - - - DisplayOp = Op; - ParentOp = Op->Common.Parent; - if (ParentOp) - { - if ((WalkState->ControlState) && - (WalkState->ControlState->Common.State == - ACPI_CONTROL_PREDICATE_EXECUTING)) - { - /* - * We are executing the predicate of an IF or WHILE statement - * Search upwards for the containing IF or WHILE so that the - * entire predicate can be displayed. - */ - while (ParentOp) - { - if ((ParentOp->Common.AmlOpcode == AML_IF_OP) || - (ParentOp->Common.AmlOpcode == AML_WHILE_OP)) - { - DisplayOp = ParentOp; - break; - } - ParentOp = ParentOp->Common.Parent; - } - } - else - { - while (ParentOp) - { - if ((ParentOp->Common.AmlOpcode == AML_IF_OP) || - (ParentOp->Common.AmlOpcode == AML_ELSE_OP) || - (ParentOp->Common.AmlOpcode == AML_SCOPE_OP) || - (ParentOp->Common.AmlOpcode == AML_METHOD_OP) || - (ParentOp->Common.AmlOpcode == AML_WHILE_OP)) - { - break; - } - DisplayOp = ParentOp; - ParentOp = ParentOp->Common.Parent; - } - } - } - - /* Now we can display it */ - - AcpiDmDisassemble (WalkState, DisplayOp, ACPI_UINT32_MAX); - - if ((Op->Common.AmlOpcode == AML_IF_OP) || - (Op->Common.AmlOpcode == AML_WHILE_OP)) - { - if (WalkState->ControlState->Common.Value) - { - AcpiOsPrintf ("Predicate = [True], IF block was executed\n"); - } - else - { - AcpiOsPrintf ("Predicate = [False], Skipping IF block\n"); - } - } - else if (Op->Common.AmlOpcode == AML_ELSE_OP) - { - AcpiOsPrintf ("Predicate = [False], ELSE block was executed\n"); - } - - /* Restore everything */ - - Op->Common.Next = Next; - AcpiOsPrintf ("\n"); - if ((AcpiGbl_DbOutputToFile) || - (AcpiDbgLevel & ACPI_LV_PARSE)) - { - AcpiOsPrintf ("\n"); - } - AcpiDbgLevel = OriginalDebugLevel; - } - - /* If we are not single stepping, just continue executing the method */ - - if (!AcpiGbl_CmSingleStep) - { - return (AE_OK); - } - - /* - * If we are executing a step-to-call command, - * Check if this is a method call. - */ - if (AcpiGbl_StepToNextCall) - { - if (Op->Common.AmlOpcode != AML_INT_METHODCALL_OP) - { - /* Not a method call, just keep executing */ - - return (AE_OK); - } - - /* Found a method call, stop executing */ - - AcpiGbl_StepToNextCall = FALSE; - } - - /* - * If the next opcode is a method call, we will "step over" it - * by default. - */ - if (Op->Common.AmlOpcode == AML_INT_METHODCALL_OP) - { - /* Force no more single stepping while executing called method */ - - AcpiGbl_CmSingleStep = FALSE; - - /* - * Set the breakpoint on/before the call, it will stop execution - * as soon as we return - */ - WalkState->MethodBreakpoint = 1; /* Must be non-zero! */ - } - - - Status = AcpiDbStartCommand (WalkState, Op); - - /* User commands complete, continue execution of the interrupted method */ - - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbInitialize - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Init and start debugger - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDbInitialize ( - void) -{ - ACPI_STATUS Status; - - - /* Init globals */ - - AcpiGbl_DbBuffer = NULL; - AcpiGbl_DbFilename = NULL; - AcpiGbl_DbOutputToFile = FALSE; - - AcpiGbl_DbDebugLevel = ACPI_LV_VERBOSITY2; - AcpiGbl_DbConsoleDebugLevel = ACPI_NORMAL_DEFAULT | ACPI_LV_TABLES; - AcpiGbl_DbOutputFlags = ACPI_DB_CONSOLE_OUTPUT; - - AcpiGbl_DbOpt_tables = FALSE; - AcpiGbl_DbOpt_disasm = FALSE; - AcpiGbl_DbOpt_stats = FALSE; - AcpiGbl_DbOpt_verbose = TRUE; - AcpiGbl_DbOpt_ini_methods = TRUE; - - AcpiGbl_DbBuffer = AcpiOsAllocate (ACPI_DEBUG_BUFFER_SIZE); - if (!AcpiGbl_DbBuffer) - { - return (AE_NO_MEMORY); - } - ACPI_MEMSET (AcpiGbl_DbBuffer, 0, ACPI_DEBUG_BUFFER_SIZE); - - /* Initial scope is the root */ - - AcpiGbl_DbScopeBuf [0] = '\\'; - AcpiGbl_DbScopeBuf [1] = 0; - AcpiGbl_DbScopeNode = AcpiGbl_RootNode; - - /* - * If configured for multi-thread support, the debug executor runs in - * a separate thread so that the front end can be in another address - * space, environment, or even another machine. - */ - if (AcpiGbl_DebuggerConfiguration & DEBUGGER_MULTI_THREADED) - { - /* These were created with one unit, grab it */ - - Status = AcpiUtAcquireMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not get debugger mutex\n"); - return (Status); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_DEBUG_CMD_READY); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not get debugger mutex\n"); - return (Status); - } - - /* Create the debug execution thread to execute commands */ - - Status = AcpiOsExecute (OSL_DEBUGGER_THREAD, AcpiDbExecuteThread, NULL); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not start debugger thread\n"); - return (Status); - } - } - - if (!AcpiGbl_DbOpt_verbose) - { - AcpiGbl_DbOpt_disasm = TRUE; - AcpiGbl_DbOpt_stats = FALSE; - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDbTerminate - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Stop debugger - * - ******************************************************************************/ - -void -AcpiDbTerminate ( - void) -{ - - if (AcpiGbl_DbTablePtr) - { - AcpiOsFree (AcpiGbl_DbTablePtr); - } - if (AcpiGbl_DbBuffer) - { - AcpiOsFree (AcpiGbl_DbBuffer); - } -} - - -#ifdef ACPI_OBSOLETE_FUNCTIONS -/******************************************************************************* - * - * FUNCTION: AcpiDbMethodEnd - * - * PARAMETERS: WalkState - Current walk - * - * RETURN: Status - * - * DESCRIPTION: Called at method termination - * - ******************************************************************************/ - -void -AcpiDbMethodEnd ( - ACPI_WALK_STATE *WalkState) -{ - - if (!AcpiGbl_CmSingleStep) - { - return; - } - - AcpiOsPrintf ("\n"); - - AcpiDbStartCommand (WalkState, NULL); -} -#endif - -#endif /* ACPI_DEBUGGER */ diff --git a/sys/contrib/dev/acpica-unix-20061109/disassembler/dmbuffer.c b/sys/contrib/dev/acpica-unix-20061109/disassembler/dmbuffer.c deleted file mode 100644 index 05d4e1ac0c..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/disassembler/dmbuffer.c +++ /dev/null @@ -1,555 +0,0 @@ -/******************************************************************************* - * - * Module Name: dmbuffer - AML disassembler, buffer and string support - * $Revision: 1.24 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acdisasm.h" -#include "acparser.h" -#include "amlcode.h" - - -#ifdef ACPI_DISASSEMBLER - -#define _COMPONENT ACPI_CA_DEBUGGER - ACPI_MODULE_NAME ("dmbuffer") - -/* Local prototypes */ - -static void -AcpiDmUnicode ( - ACPI_PARSE_OBJECT *Op); - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDisasmByteList - * - * PARAMETERS: Level - Current source code indentation level - * ByteData - Pointer to the byte list - * ByteCount - Length of the byte list - * - * RETURN: None - * - * DESCRIPTION: Dump an AML "ByteList" in Hex format. 8 bytes per line, prefixed - * with the hex buffer offset. - * - ******************************************************************************/ - -void -AcpiDmDisasmByteList ( - UINT32 Level, - UINT8 *ByteData, - UINT32 ByteCount) -{ - UINT32 i; - - - if (!ByteCount) - { - return; - } - - /* Dump the byte list */ - - for (i = 0; i < ByteCount; i++) - { - /* New line every 8 bytes */ - - if (((i % 8) == 0) && (i < ByteCount)) - { - if (i > 0) - { - AcpiOsPrintf ("\n"); - } - - AcpiDmIndent (Level); - if (ByteCount > 7) - { - AcpiOsPrintf ("/* %04X */ ", i); - } - } - - AcpiOsPrintf ("0x%2.2X", (UINT32) ByteData[i]); - - /* Add comma if there are more bytes to display */ - - if (i < (ByteCount -1)) - { - AcpiOsPrintf (", "); - } - } - - if (Level) - { - AcpiOsPrintf ("\n"); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmByteList - * - * PARAMETERS: Info - Parse tree walk info - * Op - Byte list op - * - * RETURN: None - * - * DESCRIPTION: Dump a buffer byte list, handling the various types of buffers. - * Buffer type must be already set in the Op DisasmOpcode. - * - ******************************************************************************/ - -void -AcpiDmByteList ( - ACPI_OP_WALK_INFO *Info, - ACPI_PARSE_OBJECT *Op) -{ - UINT8 *ByteData; - UINT32 ByteCount; - - - ByteData = Op->Named.Data; - ByteCount = (UINT32) Op->Common.Value.Integer; - - /* - * The byte list belongs to a buffer, and can be produced by either - * a ResourceTemplate, Unicode, quoted string, or a plain byte list. - */ - switch (Op->Common.Parent->Common.DisasmOpcode) - { - case ACPI_DASM_RESOURCE: - - AcpiDmResourceTemplate (Info, Op->Common.Parent, ByteData, ByteCount); - break; - - case ACPI_DASM_STRING: - - AcpiDmIndent (Info->Level); - AcpiUtPrintString ((char *) ByteData, ACPI_UINT8_MAX); - AcpiOsPrintf ("\n"); - break; - - case ACPI_DASM_UNICODE: - - AcpiDmUnicode (Op); - break; - - case ACPI_DASM_BUFFER: - default: - - /* - * Not a resource, string, or unicode string. - * Just dump the buffer - */ - AcpiDmDisasmByteList (Info->Level, ByteData, ByteCount); - break; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmIsUnicodeBuffer - * - * PARAMETERS: Op - Buffer Object to be examined - * - * RETURN: TRUE if buffer contains a UNICODE string - * - * DESCRIPTION: Determine if a buffer Op contains a Unicode string - * - ******************************************************************************/ - -BOOLEAN -AcpiDmIsUnicodeBuffer ( - ACPI_PARSE_OBJECT *Op) -{ - UINT8 *ByteData; - UINT32 ByteCount; - UINT32 WordCount; - ACPI_PARSE_OBJECT *SizeOp; - ACPI_PARSE_OBJECT *NextOp; - ACPI_NATIVE_UINT i; - - - /* Buffer size is the buffer argument */ - - SizeOp = Op->Common.Value.Arg; - - /* Next, the initializer byte list to examine */ - - NextOp = SizeOp->Common.Next; - if (!NextOp) - { - return (FALSE); - } - - /* Extract the byte list info */ - - ByteData = NextOp->Named.Data; - ByteCount = (UINT32) NextOp->Common.Value.Integer; - WordCount = ACPI_DIV_2 (ByteCount); - - /* - * Unicode string must have an even number of bytes and last - * word must be zero - */ - if ((!ByteCount) || - (ByteCount < 4) || - (ByteCount & 1) || - ((UINT16 *) (void *) ByteData)[WordCount - 1] != 0) - { - return (FALSE); - } - - /* For each word, 1st byte must be ascii, 2nd byte must be zero */ - - for (i = 0; i < (ByteCount - 2); i += 2) - { - if ((!ACPI_IS_PRINT (ByteData[i])) || - (ByteData[i + 1] != 0)) - { - return (FALSE); - } - } - - /* Ignore the Size argument in the disassembly of this buffer op */ - - SizeOp->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; - return (TRUE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmIsStringBuffer - * - * PARAMETERS: Op - Buffer Object to be examined - * - * RETURN: TRUE if buffer contains a ASCII string, FALSE otherwise - * - * DESCRIPTION: Determine if a buffer Op contains a ASCII string - * - ******************************************************************************/ - -BOOLEAN -AcpiDmIsStringBuffer ( - ACPI_PARSE_OBJECT *Op) -{ - UINT8 *ByteData; - UINT32 ByteCount; - ACPI_PARSE_OBJECT *SizeOp; - ACPI_PARSE_OBJECT *NextOp; - UINT32 i; - - - /* Buffer size is the buffer argument */ - - SizeOp = Op->Common.Value.Arg; - - /* Next, the initializer byte list to examine */ - - NextOp = SizeOp->Common.Next; - if (!NextOp) - { - return (FALSE); - } - - /* Extract the byte list info */ - - ByteData = NextOp->Named.Data; - ByteCount = (UINT32) NextOp->Common.Value.Integer; - - /* Last byte must be the null terminator */ - - if ((!ByteCount) || - (ByteCount < 2) || - (ByteData[ByteCount-1] != 0)) - { - return (FALSE); - } - - for (i = 0; i < (ByteCount - 1); i++) - { - /* TBD: allow some escapes (non-ascii chars). - * they will be handled in the string output routine - */ - - if (!ACPI_IS_PRINT (ByteData[i])) - { - return (FALSE); - } - } - - return (TRUE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmUnicode - * - * PARAMETERS: Op - Byte List op containing Unicode string - * - * RETURN: None - * - * DESCRIPTION: Dump Unicode string as a standard ASCII string. (Remove - * the extra zero bytes). - * - ******************************************************************************/ - -static void -AcpiDmUnicode ( - ACPI_PARSE_OBJECT *Op) -{ - UINT16 *WordData; - UINT32 WordCount; - UINT32 i; - - - /* Extract the buffer info as a WORD buffer */ - - WordData = ACPI_CAST_PTR (UINT16, Op->Named.Data); - WordCount = ACPI_DIV_2 (((UINT32) Op->Common.Value.Integer)); - - - AcpiOsPrintf ("\""); - - /* Write every other byte as an ASCII character */ - - for (i = 0; i < (WordCount - 1); i++) - { - AcpiOsPrintf ("%c", (int) WordData[i]); - } - - AcpiOsPrintf ("\")"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmIsEisaId - * - * PARAMETERS: Op - Op to be examined - * - * RETURN: None - * - * DESCRIPTION: Determine if an Op can be converted to an EisaId. - * - ******************************************************************************/ - -void -AcpiDmIsEisaId ( - ACPI_PARSE_OBJECT *Op) -{ - UINT32 Name; - UINT32 BigEndianId; - ACPI_PARSE_OBJECT *NextOp; - ACPI_NATIVE_UINT i; - UINT32 Prefix[3]; - - - /* Get the NameSegment */ - - Name = AcpiPsGetName (Op); - if (!Name) - { - return; - } - - /* We are looking for _HID */ - - if (!ACPI_COMPARE_NAME (&Name, METHOD_NAME__HID)) - { - return; - } - - /* The parameter must be either a word or a dword */ - - NextOp = AcpiPsGetDepthNext (NULL, Op); - if ((NextOp->Common.AmlOpcode != AML_DWORD_OP) && - (NextOp->Common.AmlOpcode != AML_WORD_OP)) - { - return; - } - - /* Swap from little-endian to big-endian to simplify conversion */ - - BigEndianId = AcpiUtDwordByteSwap ((UINT32) NextOp->Common.Value.Integer); - - /* Create the 3 leading ASCII letters */ - - Prefix[0] = ((BigEndianId >> 26) & 0x1F) + 0x40; - Prefix[1] = ((BigEndianId >> 21) & 0x1F) + 0x40; - Prefix[2] = ((BigEndianId >> 16) & 0x1F) + 0x40; - - /* Verify that all 3 are ascii and alpha */ - - for (i = 0; i < 3; i++) - { - if (!ACPI_IS_ASCII (Prefix[i]) || - !ACPI_IS_ALPHA (Prefix[i])) - { - return; - } - } - - /* OK - mark this node as convertable to an EISA ID */ - - NextOp->Common.DisasmOpcode = ACPI_DASM_EISAID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmEisaId - * - * PARAMETERS: EncodedId - Raw encoded EISA ID. - * - * RETURN: None - * - * DESCRIPTION: Convert an encoded EISAID back to the original ASCII String. - * - ******************************************************************************/ - -void -AcpiDmEisaId ( - UINT32 EncodedId) -{ - UINT32 BigEndianId; - - - /* Swap from little-endian to big-endian to simplify conversion */ - - BigEndianId = AcpiUtDwordByteSwap (EncodedId); - - - /* Split to form "AAANNNN" string */ - - AcpiOsPrintf ("EisaId (\"%c%c%c%4.4X\")", - - /* Three Alpha characters (AAA), 5 bits each */ - - (int) ((BigEndianId >> 26) & 0x1F) + 0x40, - (int) ((BigEndianId >> 21) & 0x1F) + 0x40, - (int) ((BigEndianId >> 16) & 0x1F) + 0x40, - - /* Numeric part (NNNN) is simply the lower 16 bits */ - - (UINT32) (BigEndianId & 0xFFFF)); -} - -#endif diff --git a/sys/contrib/dev/acpica-unix-20061109/disassembler/dmnames.c b/sys/contrib/dev/acpica-unix-20061109/disassembler/dmnames.c deleted file mode 100644 index d868cf7041..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/disassembler/dmnames.c +++ /dev/null @@ -1,521 +0,0 @@ -/******************************************************************************* - * - * Module Name: dmnames - AML disassembler, names, namestrings, pathnames - * $Revision: 1.16 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acdisasm.h" - - -#ifdef ACPI_DISASSEMBLER - -#define _COMPONENT ACPI_CA_DEBUGGER - ACPI_MODULE_NAME ("dmnames") - -/* Local prototypes */ - -#ifdef ACPI_OBSOLETE_FUNCTIONS -void -AcpiDmDisplayPath ( - ACPI_PARSE_OBJECT *Op); -#endif - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpName - * - * PARAMETERS: Name - 4 character ACPI name - * - * RETURN: Final length of name - * - * DESCRIPTION: Dump an ACPI name, minus any trailing underscores. - * - ******************************************************************************/ - -UINT32 -AcpiDmDumpName ( - char *Name) -{ - UINT32 i; - UINT32 Length; - char NewName[4]; - - - /* Ensure that the name is printable, even if we have to fix it */ - - *(UINT32 *) NewName = AcpiUtRepairName (Name); - - /* Remove all trailing underscores from the name */ - - Length = ACPI_NAME_SIZE; - for (i = (ACPI_NAME_SIZE - 1); i != 0; i--) - { - if (NewName[i] == '_') - { - Length--; - } - else - { - break; - } - } - - /* Dump the name, up to the start of the trailing underscores */ - - for (i = 0; i < Length; i++) - { - AcpiOsPrintf ("%c", NewName[i]); - } - - return (Length); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsDisplayObjectPathname - * - * PARAMETERS: WalkState - Current walk state - * Op - Object whose pathname is to be obtained - * - * RETURN: Status - * - * DESCRIPTION: Diplay the pathname associated with a named object. Two - * versions. One searches the parse tree (for parser-only - * applications suchas AcpiDump), and the other searches the - * ACPI namespace (the parse tree is probably deleted) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiPsDisplayObjectPathname ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - ACPI_BUFFER Buffer; - UINT32 DebugLevel; - - - /* Save current debug level so we don't get extraneous debug output */ - - DebugLevel = AcpiDbgLevel; - AcpiDbgLevel = 0; - - /* Just get the Node out of the Op object */ - - Node = Op->Common.Node; - if (!Node) - { - /* Node not defined in this scope, look it up */ - - Status = AcpiNsLookup (WalkState->ScopeInfo, Op->Common.Value.String, - ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, - WalkState, &(Node)); - - if (ACPI_FAILURE (Status)) - { - /* - * We can't get the pathname since the object - * is not in the namespace. This can happen during single - * stepping where a dynamic named object is *about* to be created. - */ - AcpiOsPrintf (" [Path not found]"); - goto Exit; - } - - /* Save it for next time. */ - - Op->Common.Node = Node; - } - - /* Convert NamedDesc/handle to a full pathname */ - - Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - Status = AcpiNsHandleToPathname (Node, &Buffer); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("****Could not get pathname****)"); - goto Exit; - } - - AcpiOsPrintf (" (Path %s)", (char *) Buffer.Pointer); - ACPI_FREE (Buffer.Pointer); - - -Exit: - /* Restore the debug level */ - - AcpiDbgLevel = DebugLevel; - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmNamestring - * - * PARAMETERS: Name - ACPI Name string to store - * - * RETURN: None - * - * DESCRIPTION: Decode and dump an ACPI namestring. Handles prefix characters - * - ******************************************************************************/ - -void -AcpiDmNamestring ( - char *Name) -{ - UINT32 SegCount; - - - if (!Name) - { - return; - } - - /* Handle all Scope Prefix operators */ - - while (AcpiPsIsPrefixChar (ACPI_GET8 (Name))) - { - /* Append prefix character */ - - AcpiOsPrintf ("%1c", ACPI_GET8 (Name)); - Name++; - } - - switch (ACPI_GET8 (Name)) - { - case 0: - SegCount = 0; - break; - - case AML_DUAL_NAME_PREFIX: - SegCount = 2; - Name++; - break; - - case AML_MULTI_NAME_PREFIX_OP: - SegCount = (UINT32) ACPI_GET8 (Name + 1); - Name += 2; - break; - - default: - SegCount = 1; - break; - } - - while (SegCount) - { - /* Append Name segment */ - - AcpiDmDumpName ((char *) Name); - - SegCount--; - if (SegCount) - { - /* Not last name, append dot separator */ - - AcpiOsPrintf ("."); - } - Name += ACPI_NAME_SIZE; - } -} - - -#ifdef ACPI_OBSOLETE_FUNCTIONS -/******************************************************************************* - * - * FUNCTION: AcpiDmDisplayPath - * - * PARAMETERS: Op - Named Op whose path is to be constructed - * - * RETURN: None - * - * DESCRIPTION: Walk backwards from current scope and display the name - * of each previous level of scope up to the root scope - * (like "pwd" does with file systems) - * - ******************************************************************************/ - -void -AcpiDmDisplayPath ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Prev; - ACPI_PARSE_OBJECT *Search; - UINT32 Name; - BOOLEAN DoDot = FALSE; - ACPI_PARSE_OBJECT *NamePath; - const ACPI_OPCODE_INFO *OpInfo; - - - /* We are only interested in named objects */ - - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - if (!(OpInfo->Flags & AML_NSNODE)) - { - return; - } - - if (OpInfo->Flags & AML_CREATE) - { - /* Field creation - check for a fully qualified namepath */ - - if (Op->Common.AmlOpcode == AML_CREATE_FIELD_OP) - { - NamePath = AcpiPsGetArg (Op, 3); - } - else - { - NamePath = AcpiPsGetArg (Op, 2); - } - - if ((NamePath) && - (NamePath->Common.Value.String) && - (NamePath->Common.Value.String[0] == '\\')) - { - AcpiDmNamestring (NamePath->Common.Value.String); - return; - } - } - - Prev = NULL; /* Start with Root Node */ - - while (Prev != Op) - { - /* Search upwards in the tree to find scope with "prev" as its parent */ - - Search = Op; - for (; ;) - { - if (Search->Common.Parent == Prev) - { - break; - } - - /* Go up one level */ - - Search = Search->Common.Parent; - } - - if (Prev) - { - OpInfo = AcpiPsGetOpcodeInfo (Search->Common.AmlOpcode); - if (!(OpInfo->Flags & AML_FIELD)) - { - /* Below root scope, append scope name */ - - if (DoDot) - { - /* Append dot */ - - AcpiOsPrintf ("."); - } - - if (OpInfo->Flags & AML_CREATE) - { - if (Op->Common.AmlOpcode == AML_CREATE_FIELD_OP) - { - NamePath = AcpiPsGetArg (Op, 3); - } - else - { - NamePath = AcpiPsGetArg (Op, 2); - } - - if ((NamePath) && - (NamePath->Common.Value.String)) - { - AcpiDmDumpName (NamePath->Common.Value.String); - } - } - else - { - Name = AcpiPsGetName (Search); - AcpiDmDumpName ((char *) &Name); - } - - DoDot = TRUE; - } - } - Prev = Search; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmValidateName - * - * PARAMETERS: Name - 4 character ACPI name - * - * RETURN: None - * - * DESCRIPTION: Lookup the name - * - ******************************************************************************/ - -void -AcpiDmValidateName ( - char *Name, - ACPI_PARSE_OBJECT *Op) -{ - - if ((!Name) || - (!Op->Common.Parent)) - { - return; - } - - if (!Op->Common.Node) - { - AcpiOsPrintf ( - " /**** Name not found or not accessible from this scope ****/ "); - } - - ACPI_PARSE_OBJECT *TargetOp; - - - if ((!Name) || - (!Op->Common.Parent)) - { - return; - } - - TargetOp = AcpiPsFind (Op, Name, 0, 0); - if (!TargetOp) - { - /* - * Didn't find the name in the parse tree. This may be - * a problem, or it may simply be one of the predefined names - * (such as _OS_). Rather than worry about looking up all - * the predefined names, just display the name as given - */ - AcpiOsPrintf ( - " /**** Name not found or not accessible from this scope ****/ "); - } -} -#endif - -#endif - - diff --git a/sys/contrib/dev/acpica-unix-20061109/disassembler/dmobject.c b/sys/contrib/dev/acpica-unix-20061109/disassembler/dmobject.c deleted file mode 100644 index d29796dbc6..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/disassembler/dmobject.c +++ /dev/null @@ -1,649 +0,0 @@ -/******************************************************************************* - * - * Module Name: dmobject - ACPI object decode and display - * $Revision: 1.21 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acdisasm.h" -#include "acparser.h" - - -#ifdef ACPI_DISASSEMBLER - -#define _COMPONENT ACPI_CA_DEBUGGER - ACPI_MODULE_NAME ("dmnames") - -/* Local prototypes */ - -static void -AcpiDmDecodeNode ( - ACPI_NAMESPACE_NODE *Node); - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpMethodInfo - * - * PARAMETERS: Status - Method execution status - * WalkState - Current state of the parse tree walk - * Op - Executing parse op - * - * RETURN: None - * - * DESCRIPTION: Called when a method has been aborted because of an error. - * Dumps the method execution stack, and the method locals/args, - * and disassembles the AML opcode that failed. - * - ******************************************************************************/ - -void -AcpiDmDumpMethodInfo ( - ACPI_STATUS Status, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Next; - ACPI_THREAD_STATE *Thread; - ACPI_WALK_STATE *NextWalkState; - ACPI_NAMESPACE_NODE *PreviousMethod = NULL; - - - /* Ignore control codes, they are not errors */ - - if ((Status & AE_CODE_MASK) == AE_CODE_CONTROL) - { - return; - } - - /* We may be executing a deferred opcode */ - - if (WalkState->DeferredNode) - { - AcpiOsPrintf ("Executing subtree for Buffer/Package/Region\n"); - return; - } - - /* - * If there is no Thread, we are not actually executing a method. - * This can happen when the iASL compiler calls the interpreter - * to perform constant folding. - */ - Thread = WalkState->Thread; - if (!Thread) - { - return; - } - - /* Display exception and method name */ - - AcpiOsPrintf ("\n**** Exception %s during execution of method ", - AcpiFormatException (Status)); - AcpiNsPrintNodePathname (WalkState->MethodNode, NULL); - - /* Display stack of executing methods */ - - AcpiOsPrintf ("\n\nMethod Execution Stack:\n"); - NextWalkState = Thread->WalkStateList; - - /* Walk list of linked walk states */ - - while (NextWalkState) - { - AcpiOsPrintf (" Method [%4.4s] executing: ", - AcpiUtGetNodeName (NextWalkState->MethodNode)); - - /* First method is the currently executing method */ - - if (NextWalkState == WalkState) - { - if (Op) - { - /* Display currently executing ASL statement */ - - Next = Op->Common.Next; - Op->Common.Next = NULL; - - AcpiDmDisassemble (NextWalkState, Op, ACPI_UINT32_MAX); - Op->Common.Next = Next; - } - } - else - { - /* - * This method has called another method - * NOTE: the method call parse subtree is already deleted at this - * point, so we cannot disassemble the method invocation. - */ - AcpiOsPrintf ("Call to method "); - AcpiNsPrintNodePathname (PreviousMethod, NULL); - } - - PreviousMethod = NextWalkState->MethodNode; - NextWalkState = NextWalkState->Next; - AcpiOsPrintf ("\n"); - } - - /* Display the method locals and arguments */ - - AcpiOsPrintf ("\n"); - AcpiDmDisplayLocals (WalkState); - AcpiOsPrintf ("\n"); - AcpiDmDisplayArguments (WalkState); - AcpiOsPrintf ("\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDecodeInternalObject - * - * PARAMETERS: ObjDesc - Object to be displayed - * - * RETURN: None - * - * DESCRIPTION: Short display of an internal object. Numbers/Strings/Buffers. - * - ******************************************************************************/ - -void -AcpiDmDecodeInternalObject ( - ACPI_OPERAND_OBJECT *ObjDesc) -{ - UINT32 i; - - - if (!ObjDesc) - { - AcpiOsPrintf (" Uninitialized"); - return; - } - - if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND) - { - AcpiOsPrintf (" %p [%s]", ObjDesc, AcpiUtGetDescriptorName (ObjDesc)); - return; - } - - AcpiOsPrintf (" %s", AcpiUtGetObjectTypeName (ObjDesc)); - - switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) - { - case ACPI_TYPE_INTEGER: - - AcpiOsPrintf (" %8.8X%8.8X", - ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value)); - break; - - - case ACPI_TYPE_STRING: - - AcpiOsPrintf ("(%d) \"%.24s", - ObjDesc->String.Length, ObjDesc->String.Pointer); - - if (ObjDesc->String.Length > 24) - { - AcpiOsPrintf ("..."); - } - else - { - AcpiOsPrintf ("\""); - } - break; - - - case ACPI_TYPE_BUFFER: - - AcpiOsPrintf ("(%d)", ObjDesc->Buffer.Length); - for (i = 0; (i < 8) && (i < ObjDesc->Buffer.Length); i++) - { - AcpiOsPrintf (" %2.2X", ObjDesc->Buffer.Pointer[i]); - } - break; - - - default: - - AcpiOsPrintf (" %p", ObjDesc); - break; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDecodeNode - * - * PARAMETERS: Node - Object to be displayed - * - * RETURN: None - * - * DESCRIPTION: Short display of a namespace node - * - ******************************************************************************/ - -static void -AcpiDmDecodeNode ( - ACPI_NAMESPACE_NODE *Node) -{ - - AcpiOsPrintf (" Name %4.4s", - AcpiUtGetNodeName (Node)); - - if (Node->Flags & ANOBJ_METHOD_ARG) - { - AcpiOsPrintf (" [Method Arg]"); - } - if (Node->Flags & ANOBJ_METHOD_LOCAL) - { - AcpiOsPrintf (" [Method Local]"); - } - - AcpiDmDecodeInternalObject (AcpiNsGetAttachedObject (Node)); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDisplayInternalObject - * - * PARAMETERS: ObjDesc - Object to be displayed - * WalkState - Current walk state - * - * RETURN: None - * - * DESCRIPTION: Short display of an internal object - * - ******************************************************************************/ - -void -AcpiDmDisplayInternalObject ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState) -{ - UINT8 Type; - - - AcpiOsPrintf ("%p ", ObjDesc); - - if (!ObjDesc) - { - AcpiOsPrintf ("\n"); - return; - } - - /* Decode the object type */ - - switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc)) - { - case ACPI_DESC_TYPE_PARSER: - - AcpiOsPrintf (" "); - break; - - - case ACPI_DESC_TYPE_NAMED: - - AcpiDmDecodeNode ((ACPI_NAMESPACE_NODE *) ObjDesc); - break; - - - case ACPI_DESC_TYPE_OPERAND: - - Type = ACPI_GET_OBJECT_TYPE (ObjDesc); - if (Type > ACPI_TYPE_LOCAL_MAX) - { - AcpiOsPrintf (" Type %X [Invalid Type]", (UINT32) Type); - return; - } - - /* Decode the ACPI object type */ - - switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) - { - case ACPI_TYPE_LOCAL_REFERENCE: - - switch (ObjDesc->Reference.Opcode) - { - case AML_LOCAL_OP: - - AcpiOsPrintf ("[Local%d] ", ObjDesc->Reference.Offset); - if (WalkState) - { - ObjDesc = WalkState->LocalVariables[ - ObjDesc->Reference.Offset].Object; - AcpiOsPrintf ("%p", ObjDesc); - AcpiDmDecodeInternalObject (ObjDesc); - } - break; - - - case AML_ARG_OP: - - AcpiOsPrintf ("[Arg%d] ", ObjDesc->Reference.Offset); - if (WalkState) - { - ObjDesc = WalkState->Arguments[ - ObjDesc->Reference.Offset].Object; - AcpiOsPrintf ("%p", ObjDesc); - AcpiDmDecodeInternalObject (ObjDesc); - } - break; - - - case AML_DEBUG_OP: - - AcpiOsPrintf ("[Debug] "); - break; - - - case AML_INDEX_OP: - - AcpiOsPrintf ("[Index] "); - switch (ObjDesc->Reference.TargetType) - { - case ACPI_TYPE_BUFFER_FIELD: - AcpiOsPrintf ("%p", ObjDesc->Reference.Object); - AcpiDmDecodeInternalObject (ObjDesc->Reference.Object); - break; - - case ACPI_TYPE_PACKAGE: - - AcpiOsPrintf ("%p", ObjDesc->Reference.Where); - if (!ObjDesc->Reference.Where) - { - AcpiOsPrintf (" Uninitialized WHERE ptr"); - } - else - { - AcpiDmDecodeInternalObject ( - *(ObjDesc->Reference.Where)); - } - break; - - default: - AcpiOsPrintf ("Unknown index target type"); - break; - } - break; - - - case AML_LOAD_OP: - - AcpiOsPrintf ("[DdbHandle] "); - break; - - - case AML_REF_OF_OP: - - AcpiOsPrintf ("[RefOf] "); - - if (!ObjDesc->Reference.Object) - { - AcpiOsPrintf ("Uninitialized reference subobject ptr"); - break; - } - - /* Reference can be to a Node or an Operand object */ - - switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc->Reference.Object)) - { - case ACPI_DESC_TYPE_NAMED: - AcpiDmDecodeNode (ObjDesc->Reference.Object); - break; - - case ACPI_DESC_TYPE_OPERAND: - AcpiDmDecodeInternalObject (ObjDesc->Reference.Object); - break; - - default: - break; - } - break; - - case AML_INT_NAMEPATH_OP: - - AcpiDmDecodeNode (ObjDesc->Reference.Node); - break; - - default: - - AcpiOsPrintf ("Unknown Reference opcode %X (%s)\n", - ObjDesc->Reference.Opcode, - AcpiPsGetOpcodeName (ObjDesc->Reference.Opcode)); - break; - } - break; - - default: - - AcpiOsPrintf (" "); - AcpiDmDecodeInternalObject (ObjDesc); - break; - } - break; - - - default: - - AcpiOsPrintf (" [%s]", - AcpiUtGetDescriptorName (ObjDesc)); - break; - } - - AcpiOsPrintf ("\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDisplayLocals - * - * PARAMETERS: WalkState - State for current method - * - * RETURN: None - * - * DESCRIPTION: Display all locals for the currently running control method - * - ******************************************************************************/ - -void -AcpiDmDisplayLocals ( - ACPI_WALK_STATE *WalkState) -{ - UINT32 i; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_NAMESPACE_NODE *Node; - - - ObjDesc = WalkState->MethodDesc; - Node = WalkState->MethodNode; - if (!Node) - { - AcpiOsPrintf ( - "No method node (Executing subtree for buffer or opregion)\n"); - return; - } - - if (Node->Type != ACPI_TYPE_METHOD) - { - AcpiOsPrintf ("Executing subtree for Buffer/Package/Region\n"); - return; - } - - AcpiOsPrintf ("Local Variables for method [%4.4s]:\n", - AcpiUtGetNodeName (Node)); - - for (i = 0; i < ACPI_METHOD_NUM_LOCALS; i++) - { - ObjDesc = WalkState->LocalVariables[i].Object; - AcpiOsPrintf (" Local%X: ", i); - AcpiDmDisplayInternalObject (ObjDesc, WalkState); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDisplayArguments - * - * PARAMETERS: WalkState - State for current method - * - * RETURN: None - * - * DESCRIPTION: Display all arguments for the currently running control method - * - ******************************************************************************/ - -void -AcpiDmDisplayArguments ( - ACPI_WALK_STATE *WalkState) -{ - UINT32 i; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_NAMESPACE_NODE *Node; - - - ObjDesc = WalkState->MethodDesc; - Node = WalkState->MethodNode; - if (!Node) - { - AcpiOsPrintf ( - "No method node (Executing subtree for buffer or opregion)\n"); - return; - } - - if (Node->Type != ACPI_TYPE_METHOD) - { - AcpiOsPrintf ("Executing subtree for Buffer/Package/Region\n"); - return; - } - - AcpiOsPrintf ( - "Arguments for Method [%4.4s]: (%X arguments defined, max concurrency = %X)\n", - AcpiUtGetNodeName (Node), ObjDesc->Method.ParamCount, ObjDesc->Method.SyncLevel); - - for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++) - { - ObjDesc = WalkState->Arguments[i].Object; - AcpiOsPrintf (" Arg%d: ", i); - AcpiDmDisplayInternalObject (ObjDesc, WalkState); - } -} - -#endif - - diff --git a/sys/contrib/dev/acpica-unix-20061109/disassembler/dmopcode.c b/sys/contrib/dev/acpica-unix-20061109/disassembler/dmopcode.c deleted file mode 100644 index 495182eca0..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/disassembler/dmopcode.c +++ /dev/null @@ -1,629 +0,0 @@ -/******************************************************************************* - * - * Module Name: dmopcode - AML disassembler, specific AML opcodes - * $Revision: 1.99 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" -#include "acdisasm.h" - -#ifdef ACPI_DISASSEMBLER - -#define _COMPONENT ACPI_CA_DEBUGGER - ACPI_MODULE_NAME ("dmopcode") - -/* Local prototypes */ - -static void -AcpiDmMatchKeyword ( - ACPI_PARSE_OBJECT *Op); - - -/******************************************************************************* - * - * FUNCTION: AcpiDmMethodFlags - * - * PARAMETERS: Op - Method Object to be examined - * - * RETURN: None - * - * DESCRIPTION: Decode control method flags - * - ******************************************************************************/ - -void -AcpiDmMethodFlags ( - ACPI_PARSE_OBJECT *Op) -{ - UINT32 Flags; - UINT32 Args; - - - /* The next Op contains the flags */ - - Op = AcpiPsGetDepthNext (NULL, Op); - Flags = (UINT8) Op->Common.Value.Integer; - Args = Flags & 0x07; - - /* Mark the Op as completed */ - - Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; - - /* 1) Method argument count */ - - AcpiOsPrintf (", %d, ", Args); - - /* 2) Serialize rule */ - - if (!(Flags & 0x08)) - { - AcpiOsPrintf ("Not"); - } - - AcpiOsPrintf ("Serialized"); - - /* 3) SyncLevel */ - - if (Flags & 0xF0) - { - AcpiOsPrintf (", %d", Flags >> 4); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmFieldFlags - * - * PARAMETERS: Op - Field Object to be examined - * - * RETURN: None - * - * DESCRIPTION: Decode Field definition flags - * - ******************************************************************************/ - -void -AcpiDmFieldFlags ( - ACPI_PARSE_OBJECT *Op) -{ - UINT32 Flags; - - - /* The next peer Op (not child op) contains the flags */ - - Op = Op->Common.Next; - Flags = (UINT8) Op->Common.Value.Integer; - - /* Mark the Op as completed */ - - Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; - - AcpiOsPrintf ("%s, ", AcpiGbl_AccessTypes [Flags & 0x07]); - AcpiOsPrintf ("%s, ", AcpiGbl_LockRule [(Flags & 0x10) >> 4]); - AcpiOsPrintf ("%s)", AcpiGbl_UpdateRules [(Flags & 0x60) >> 5]); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmAddressSpace - * - * PARAMETERS: SpaceId - ID to be translated - * - * RETURN: None - * - * DESCRIPTION: Decode a SpaceId to an AddressSpaceKeyword - * - ******************************************************************************/ - -void -AcpiDmAddressSpace ( - UINT8 SpaceId) -{ - - if (SpaceId >= ACPI_NUM_PREDEFINED_REGIONS) - { - if (SpaceId == 0x7F) - { - AcpiOsPrintf ("FFixedHW, "); - } - else - { - AcpiOsPrintf ("0x%.2X, ", SpaceId); - } - } - else - { - AcpiOsPrintf ("%s, ", AcpiGbl_RegionTypes [SpaceId]); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmRegionFlags - * - * PARAMETERS: Op - Object to be examined - * - * RETURN: None - * - * DESCRIPTION: Decode OperationRegion flags - * - ******************************************************************************/ - -void -AcpiDmRegionFlags ( - ACPI_PARSE_OBJECT *Op) -{ - - - /* The next Op contains the SpaceId */ - - Op = AcpiPsGetDepthNext (NULL, Op); - - /* Mark the Op as completed */ - - Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; - - AcpiOsPrintf (", "); - AcpiDmAddressSpace ((UINT8) Op->Common.Value.Integer); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmMatchOp - * - * PARAMETERS: Op - Match Object to be examined - * - * RETURN: None - * - * DESCRIPTION: Decode Match opcode operands - * - ******************************************************************************/ - -void -AcpiDmMatchOp ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *NextOp; - - - NextOp = AcpiPsGetDepthNext (NULL, Op); - NextOp = NextOp->Common.Next; - - if (!NextOp) - { - /* Handle partial tree during single-step */ - - return; - } - - /* Mark the two nodes that contain the encoding for the match keywords */ - - NextOp->Common.DisasmOpcode = ACPI_DASM_MATCHOP; - - NextOp = NextOp->Common.Next; - NextOp = NextOp->Common.Next; - NextOp->Common.DisasmOpcode = ACPI_DASM_MATCHOP; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmMatchKeyword - * - * PARAMETERS: Op - Match Object to be examined - * - * RETURN: None - * - * DESCRIPTION: Decode Match opcode operands - * - ******************************************************************************/ - -static void -AcpiDmMatchKeyword ( - ACPI_PARSE_OBJECT *Op) -{ - - - if (((UINT32) Op->Common.Value.Integer) > ACPI_MAX_MATCH_OPCODE) - { - AcpiOsPrintf ("/* Unknown Match Keyword encoding */"); - } - else - { - AcpiOsPrintf ("%s", ACPI_CAST_PTR (char, - AcpiGbl_MatchOps[(ACPI_SIZE) Op->Common.Value.Integer])); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDisassembleOneOp - * - * PARAMETERS: WalkState - Current walk info - * Info - Parse tree walk info - * Op - Op that is to be printed - * - * RETURN: None - * - * DESCRIPTION: Disassemble a single AML opcode - * - ******************************************************************************/ - -void -AcpiDmDisassembleOneOp ( - ACPI_WALK_STATE *WalkState, - ACPI_OP_WALK_INFO *Info, - ACPI_PARSE_OBJECT *Op) -{ - const ACPI_OPCODE_INFO *OpInfo = NULL; - UINT32 Offset; - UINT32 Length; - ACPI_PARSE_OBJECT *Child; - ACPI_STATUS Status; - - - if (!Op) - { - AcpiOsPrintf (""); - return; - } - - switch (Op->Common.DisasmOpcode) - { - case ACPI_DASM_MATCHOP: - - AcpiDmMatchKeyword (Op); - return; - - case ACPI_DASM_LNOT_SUFFIX: - switch (Op->Common.AmlOpcode) - { - case AML_LEQUAL_OP: - AcpiOsPrintf ("LNotEqual"); - break; - - case AML_LGREATER_OP: - AcpiOsPrintf ("LLessEqual"); - break; - - case AML_LLESS_OP: - AcpiOsPrintf ("LGreaterEqual"); - break; - } - Op->Common.DisasmOpcode = 0; - Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; - return; - - default: - break; - } - - - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - - /* The op and arguments */ - - switch (Op->Common.AmlOpcode) - { - case AML_LNOT_OP: - - Child = Op->Common.Value.Arg; - if ((Child->Common.AmlOpcode == AML_LEQUAL_OP) || - (Child->Common.AmlOpcode == AML_LGREATER_OP) || - (Child->Common.AmlOpcode == AML_LLESS_OP)) - { - Child->Common.DisasmOpcode = ACPI_DASM_LNOT_SUFFIX; - Op->Common.DisasmOpcode = ACPI_DASM_LNOT_PREFIX; - } - else - { - AcpiOsPrintf ("%s", OpInfo->Name); - } - break; - - case AML_BYTE_OP: - - AcpiOsPrintf ("0x%2.2X", (UINT32) Op->Common.Value.Integer); - break; - - - case AML_WORD_OP: - - if (Op->Common.DisasmOpcode == ACPI_DASM_EISAID) - { - AcpiDmEisaId ((UINT32) Op->Common.Value.Integer); - } - else - { - AcpiOsPrintf ("0x%4.4X", (UINT32) Op->Common.Value.Integer); - } - break; - - - case AML_DWORD_OP: - - if (Op->Common.DisasmOpcode == ACPI_DASM_EISAID) - { - AcpiDmEisaId ((UINT32) Op->Common.Value.Integer); - } - else - { - AcpiOsPrintf ("0x%8.8X", (UINT32) Op->Common.Value.Integer); - } - break; - - - case AML_QWORD_OP: - - AcpiOsPrintf ("0x%8.8X%8.8X", Op->Common.Value.Integer64.Hi, - Op->Common.Value.Integer64.Lo); - break; - - - case AML_STRING_OP: - - AcpiUtPrintString (Op->Common.Value.String, ACPI_UINT8_MAX); - break; - - - case AML_BUFFER_OP: - - /* - * Determine the type of buffer. We can have one of the following: - * - * 1) ResourceTemplate containing Resource Descriptors. - * 2) Unicode String buffer - * 3) ASCII String buffer - * 4) Raw data buffer (if none of the above) - * - * Since there are no special AML opcodes to differentiate these - * types of buffers, we have to closely look at the data in the - * buffer to determine the type. - */ - Status = AcpiDmIsResourceTemplate (Op); - if (ACPI_SUCCESS (Status)) - { - Op->Common.DisasmOpcode = ACPI_DASM_RESOURCE; - AcpiOsPrintf ("ResourceTemplate"); - break; - } - else if (Status == AE_AML_NO_RESOURCE_END_TAG) - { - AcpiOsPrintf ("/**** Is ResourceTemplate, but EndTag not at buffer end ****/ "); - } - - if (AcpiDmIsUnicodeBuffer (Op)) - { - Op->Common.DisasmOpcode = ACPI_DASM_UNICODE; - AcpiOsPrintf ("Unicode ("); - } - else if (AcpiDmIsStringBuffer (Op)) - { - Op->Common.DisasmOpcode = ACPI_DASM_STRING; - AcpiOsPrintf ("Buffer"); - } - else - { - Op->Common.DisasmOpcode = ACPI_DASM_BUFFER; - AcpiOsPrintf ("Buffer"); - } - break; - - - case AML_INT_STATICSTRING_OP: - - if (Op->Common.Value.String) - { - AcpiOsPrintf ("%s", Op->Common.Value.String); - } - else - { - AcpiOsPrintf ("\"\""); - } - break; - - - case AML_INT_NAMEPATH_OP: - - AcpiDmNamestring (Op->Common.Value.Name); - break; - - - case AML_INT_NAMEDFIELD_OP: - - Length = AcpiDmDumpName ((char *) &Op->Named.Name); - AcpiOsPrintf (",%*.s %d", (int) (5 - Length), " ", - (UINT32) Op->Common.Value.Integer); - AcpiDmCommaIfFieldMember (Op); - - Info->BitOffset += (UINT32) Op->Common.Value.Integer; - break; - - - case AML_INT_RESERVEDFIELD_OP: - - /* Offset() -- Must account for previous offsets */ - - Offset = (UINT32) Op->Common.Value.Integer; - Info->BitOffset += Offset; - - if (Info->BitOffset % 8 == 0) - { - AcpiOsPrintf (" Offset (0x%.2X)", ACPI_DIV_8 (Info->BitOffset)); - } - else - { - AcpiOsPrintf (" , %d", Offset); - } - - AcpiDmCommaIfFieldMember (Op); - break; - - - case AML_INT_ACCESSFIELD_OP: - - AcpiOsPrintf (" AccessAs (%s, ", - AcpiGbl_AccessTypes [(UINT32) (Op->Common.Value.Integer >> 8) & 0x7]); - - AcpiDmDecodeAttribute ((UINT8) Op->Common.Value.Integer); - AcpiOsPrintf (")"); - AcpiDmCommaIfFieldMember (Op); - break; - - - case AML_INT_BYTELIST_OP: - - AcpiDmByteList (Info, Op); - break; - - - case AML_INT_METHODCALL_OP: - - Op = AcpiPsGetDepthNext (NULL, Op); - Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; - - AcpiDmNamestring (Op->Common.Value.Name); - break; - - - default: - - /* Just get the opcode name and print it */ - - AcpiOsPrintf ("%s", OpInfo->Name); - - -#ifdef ACPI_DEBUGGER - - if ((Op->Common.AmlOpcode == AML_INT_RETURN_VALUE_OP) && - (WalkState) && - (WalkState->Results) && - (WalkState->Results->Results.NumResults)) - { - AcpiDmDecodeInternalObject ( - WalkState->Results->Results.ObjDesc [ - WalkState->Results->Results.NumResults-1]); - } -#endif - break; - } -} - -#endif /* ACPI_DISASSEMBLER */ diff --git a/sys/contrib/dev/acpica-unix-20061109/disassembler/dmresrc.c b/sys/contrib/dev/acpica-unix-20061109/disassembler/dmresrc.c deleted file mode 100644 index e428512e1d..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/disassembler/dmresrc.c +++ /dev/null @@ -1,510 +0,0 @@ -/******************************************************************************* - * - * Module Name: dmresrc.c - Resource Descriptor disassembly - * $Revision: 1.33 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "amlcode.h" -#include "acdisasm.h" - -#ifdef ACPI_DISASSEMBLER - -#define _COMPONENT ACPI_CA_DEBUGGER - ACPI_MODULE_NAME ("dbresrc") - - -/* Dispatch tables for Resource disassembly functions */ - -typedef -void (*ACPI_RESOURCE_HANDLER) ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level); - -static ACPI_RESOURCE_HANDLER AcpiGbl_DumpResourceDispatch [] = -{ - /* Small descriptors */ - - NULL, /* 0x00, Reserved */ - NULL, /* 0x01, Reserved */ - NULL, /* 0x02, Reserved */ - NULL, /* 0x03, Reserved */ - AcpiDmIrqDescriptor, /* 0x04, ACPI_RESOURCE_NAME_IRQ_FORMAT */ - AcpiDmDmaDescriptor, /* 0x05, ACPI_RESOURCE_NAME_DMA_FORMAT */ - AcpiDmStartDependentDescriptor, /* 0x06, ACPI_RESOURCE_NAME_START_DEPENDENT */ - AcpiDmEndDependentDescriptor, /* 0x07, ACPI_RESOURCE_NAME_END_DEPENDENT */ - AcpiDmIoDescriptor, /* 0x08, ACPI_RESOURCE_NAME_IO_PORT */ - AcpiDmFixedIoDescriptor, /* 0x09, ACPI_RESOURCE_NAME_FIXED_IO_PORT */ - NULL, /* 0x0A, Reserved */ - NULL, /* 0x0B, Reserved */ - NULL, /* 0x0C, Reserved */ - NULL, /* 0x0D, Reserved */ - AcpiDmVendorSmallDescriptor, /* 0x0E, ACPI_RESOURCE_NAME_SMALL_VENDOR */ - NULL, /* 0x0F, ACPI_RESOURCE_NAME_END_TAG (not used) */ - - /* Large descriptors */ - - NULL, /* 0x00, Reserved */ - AcpiDmMemory24Descriptor, /* 0x01, ACPI_RESOURCE_NAME_MEMORY_24 */ - AcpiDmGenericRegisterDescriptor,/* 0x02, ACPI_RESOURCE_NAME_GENERIC_REGISTER */ - NULL, /* 0x03, Reserved */ - AcpiDmVendorLargeDescriptor, /* 0x04, ACPI_RESOURCE_NAME_LARGE_VENDOR */ - AcpiDmMemory32Descriptor, /* 0x05, ACPI_RESOURCE_NAME_MEMORY_32 */ - AcpiDmFixedMemory32Descriptor, /* 0x06, ACPI_RESOURCE_NAME_FIXED_MEMORY_32 */ - AcpiDmDwordDescriptor, /* 0x07, ACPI_RESOURCE_NAME_DWORD_ADDRESS_SPACE */ - AcpiDmWordDescriptor, /* 0x08, ACPI_RESOURCE_NAME_WORD_ADDRESS_SPACE */ - AcpiDmInterruptDescriptor, /* 0x09, ACPI_RESOURCE_NAME_EXTENDED_XRUPT */ - AcpiDmQwordDescriptor, /* 0x0A, ACPI_RESOURCE_NAME_QWORD_ADDRESS_SPACE */ - AcpiDmExtendedDescriptor /* 0x0B, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS_SPACE */ -}; - - -/* Only used for single-threaded applications */ -/* TBD: remove when name is passed as parameter to the dump functions */ - -static UINT32 ResourceName; - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDescriptorName - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Emit a name for the descriptor if one is present (indicated - * by the name being changed from the default name.) A name is only - * emitted if a reference to the descriptor has been made somewhere - * in the original ASL code. - * - ******************************************************************************/ - -void -AcpiDmDescriptorName ( - void) -{ - - if (ResourceName == ACPI_DEFAULT_RESNAME) - { - return; - } - - AcpiOsPrintf ("%4.4s", (char *) &ResourceName); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpInteger* - * - * PARAMETERS: Value - Value to emit - * Name - Associated name (emitted as a comment) - * - * RETURN: None - * - * DESCRIPTION: Integer output helper functions - * - ******************************************************************************/ - -void -AcpiDmDumpInteger8 ( - UINT8 Value, - char *Name) -{ - AcpiOsPrintf ("0x%2.2X, // %s\n", Value, Name); -} - -void -AcpiDmDumpInteger16 ( - UINT16 Value, - char *Name) -{ - AcpiOsPrintf ("0x%4.4X, // %s\n", Value, Name); -} - -void -AcpiDmDumpInteger32 ( - UINT32 Value, - char *Name) -{ - AcpiOsPrintf ("0x%8.8X, // %s\n", Value, Name); -} - -void -AcpiDmDumpInteger64 ( - UINT64 Value, - char *Name) -{ - AcpiOsPrintf ("0x%8.8X%8.8X, // %s\n", - ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (Value)), Name); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmBitList - * - * PARAMETERS: Mask - 16-bit value corresponding to 16 interrupt - * or DMA values - * - * RETURN: None - * - * DESCRIPTION: Dump a bit mask as a list of individual interrupt/DMA levels. - * - ******************************************************************************/ - -void -AcpiDmBitList ( - UINT16 Mask) -{ - UINT32 i; - BOOLEAN Previous = FALSE; - - - /* Open the initializer list */ - - AcpiOsPrintf ("{"); - - /* Examine each bit */ - - for (i = 0; i < 16; i++) - { - /* Only interested in bits that are set to 1 */ - - if (Mask & 1) - { - if (Previous) - { - AcpiOsPrintf (","); - } - Previous = TRUE; - AcpiOsPrintf ("%d", i); - } - - Mask >>= 1; - } - - /* Close list */ - - AcpiOsPrintf ("}\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmResourceTemplate - * - * PARAMETERS: Info - Curent parse tree walk info - * ByteData - Pointer to the byte list data - * ByteCount - Length of the byte list - * - * RETURN: None - * - * DESCRIPTION: Dump the contents of a Resource Template containing a set of - * Resource Descriptors. - * - ******************************************************************************/ - -void -AcpiDmResourceTemplate ( - ACPI_OP_WALK_INFO *Info, - ACPI_PARSE_OBJECT *Op, - UINT8 *ByteData, - UINT32 ByteCount) -{ - ACPI_STATUS Status; - ACPI_NATIVE_UINT CurrentByteOffset; - UINT8 ResourceType; - UINT32 ResourceLength; - void *Aml; - UINT32 Level; - BOOLEAN DependentFns = FALSE; - UINT8 ResourceIndex; - ACPI_NAMESPACE_NODE *Node; - - - Level = Info->Level; - ResourceName = ACPI_DEFAULT_RESNAME; - Node = Op->Common.Node; - if (Node) - { - Node = Node->Child; - } - - for (CurrentByteOffset = 0; CurrentByteOffset < ByteCount; ) - { - Aml = &ByteData[CurrentByteOffset]; - - /* Get the descriptor type and length */ - - ResourceType = AcpiUtGetResourceType (Aml); - ResourceLength = AcpiUtGetResourceLength (Aml); - - /* Validate the Resource Type and Resource Length */ - - Status = AcpiUtValidateResource (Aml, &ResourceIndex); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("/*** Could not validate Resource, type (%X) %s***/\n", - ResourceType, AcpiFormatException (Status)); - return; - } - - /* Point to next descriptor */ - - CurrentByteOffset += AcpiUtGetDescriptorLength (Aml); - - /* Descriptor pre-processing */ - - switch (ResourceType) - { - case ACPI_RESOURCE_NAME_START_DEPENDENT: - - /* Finish a previous StartDependentFns */ - - if (DependentFns) - { - Level--; - AcpiDmIndent (Level); - AcpiOsPrintf ("}\n"); - } - break; - - case ACPI_RESOURCE_NAME_END_DEPENDENT: - - Level--; - DependentFns = FALSE; - break; - - case ACPI_RESOURCE_NAME_END_TAG: - - /* Normal exit, the resource list is finished */ - - if (DependentFns) - { - /* - * Close an open StartDependentDescriptor. This indicates a - * missing EndDependentDescriptor. - */ - Level--; - DependentFns = FALSE; - - /* Go ahead and insert EndDependentFn() */ - - AcpiDmEndDependentDescriptor (Aml, ResourceLength, Level); - - AcpiDmIndent (Level); - AcpiOsPrintf ( - "/*** Disassembler: inserted missing EndDependentFn () ***/\n"); - } - return; - - default: - break; - } - - /* Disassemble the resource structure */ - - if (Node) - { - ResourceName = Node->Name.Integer; - Node = Node->Peer; - } - - AcpiGbl_DumpResourceDispatch [ResourceIndex] ( - Aml, ResourceLength, Level); - - /* Descriptor post-processing */ - - if (ResourceType == ACPI_RESOURCE_NAME_START_DEPENDENT) - { - DependentFns = TRUE; - Level++; - } - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmIsResourceTemplate - * - * PARAMETERS: Op - Buffer Op to be examined - * - * RETURN: Status. AE_OK if valid template - * - * DESCRIPTION: Walk a byte list to determine if it consists of a valid set - * of resource descriptors. Nothing is output. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDmIsResourceTemplate ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_STATUS Status; - ACPI_PARSE_OBJECT *NextOp; - UINT8 *Aml; - UINT8 *EndAml; - ACPI_SIZE Length; - - - /* This op must be a buffer */ - - if (Op->Common.AmlOpcode != AML_BUFFER_OP) - { - return (AE_TYPE); - } - - /* Get the ByteData list and length */ - - NextOp = Op->Common.Value.Arg; - NextOp = NextOp->Common.Next; - if (!NextOp) - { - return (AE_TYPE); - } - - Aml = NextOp->Named.Data; - Length = (ACPI_SIZE) NextOp->Common.Value.Integer; - - /* Walk the byte list, abort on any invalid descriptor type or length */ - - Status = AcpiUtWalkAmlResources (Aml, Length, NULL, &EndAml); - if (ACPI_FAILURE (Status)) - { - return (AE_TYPE); - } - - /* - * For the resource template to be valid, one EndTag must appear - * at the very end of the ByteList, not before. (For proper disassembly - * of a ResourceTemplate, the buffer must not have any extra data after - * the EndTag.) - */ - if ((Aml + Length - sizeof (AML_RESOURCE_END_TAG)) != EndAml) - { - return (AE_AML_NO_RESOURCE_END_TAG); - } - - /* - * All resource descriptors are valid, therefore this list appears - * to be a valid resource template - */ - return (AE_OK); -} - -#endif diff --git a/sys/contrib/dev/acpica-unix-20061109/disassembler/dmresrcl.c b/sys/contrib/dev/acpica-unix-20061109/disassembler/dmresrcl.c deleted file mode 100644 index 514e139184..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/disassembler/dmresrcl.c +++ /dev/null @@ -1,1125 +0,0 @@ -/******************************************************************************* - * - * Module Name: dmresrcl.c - "Large" Resource Descriptor disassembly - * $Revision: 1.36 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acdisasm.h" - - -#ifdef ACPI_DISASSEMBLER - -#define _COMPONENT ACPI_CA_DEBUGGER - ACPI_MODULE_NAME ("dbresrcl") - - -/* Common names for address and memory descriptors */ - -static char *AcpiDmAddressNames[] = -{ - "Granularity", - "Range Minimum", - "Range Maximum", - "Translation Offset", - "Length" -}; - -static char *AcpiDmMemoryNames[] = -{ - "Range Minimum", - "Range Maximum", - "Alignment", - "Length" -}; - - -/* Local prototypes */ - -static void -AcpiDmSpaceFlags ( - UINT8 Flags); - -static void -AcpiDmIoFlags ( - UINT8 Flags); - -static void -AcpiDmIoFlags2 ( - UINT8 SpecificFlags); - -static void -AcpiDmMemoryFlags ( - UINT8 Flags, - UINT8 SpecificFlags); - -static void -AcpiDmMemoryFlags2 ( - UINT8 SpecificFlags); - -static void -AcpiDmResourceSource ( - AML_RESOURCE *Resource, - ACPI_SIZE MinimumLength, - UINT32 Length); - -static void -AcpiDmAddressFields ( - void *Source, - UINT8 Type, - UINT32 Level); - -static void -AcpiDmAddressPrefix ( - UINT8 Type); - -static void -AcpiDmAddressCommon ( - AML_RESOURCE *Resource, - UINT8 Type, - UINT32 Level); - -static void -AcpiDmAddressFlags ( - AML_RESOURCE *Resource); - - -/******************************************************************************* - * - * FUNCTION: AcpiDmMemoryFields - * - * PARAMETERS: Source - Pointer to the contiguous data fields - * Type - 16 or 32 (bit) - * Level - Current source code indentation level - * - * RETURN: None - * - * DESCRIPTION: Decode fields common to Memory24 and Memory32 descriptors - * - ******************************************************************************/ - -static void -AcpiDmMemoryFields ( - void *Source, - UINT8 Type, - UINT32 Level) -{ - ACPI_NATIVE_UINT i; - - - for (i = 0; i < 4; i++) - { - AcpiDmIndent (Level + 1); - - switch (Type) - { - case 16: - AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i], - AcpiDmMemoryNames[i]); - break; - - case 32: - AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i], - AcpiDmMemoryNames[i]); - break; - - default: - return; - } - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmAddressFields - * - * PARAMETERS: Source - Pointer to the contiguous data fields - * Type - 16, 32, or 64 (bit) - * Level - Current source code indentation level - * - * RETURN: None - * - * DESCRIPTION: Decode fields common to address descriptors - * - ******************************************************************************/ - -static void -AcpiDmAddressFields ( - void *Source, - UINT8 Type, - UINT32 Level) -{ - ACPI_NATIVE_UINT i; - - - AcpiOsPrintf ("\n"); - - for (i = 0; i < 5; i++) - { - AcpiDmIndent (Level + 1); - - switch (Type) - { - case 16: - AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i], - AcpiDmAddressNames[i]); - break; - - case 32: - AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i], - AcpiDmAddressNames[i]); - break; - - case 64: - AcpiDmDumpInteger64 (ACPI_CAST_PTR (UINT64, Source)[i], - AcpiDmAddressNames[i]); - break; - - default: - return; - } - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmAddressPrefix - * - * PARAMETERS: Type - Descriptor type - * - * RETURN: None - * - * DESCRIPTION: Emit name prefix representing the address descriptor type - * - ******************************************************************************/ - -static void -AcpiDmAddressPrefix ( - UINT8 Type) -{ - - switch (Type) - { - case ACPI_RESOURCE_TYPE_ADDRESS16: - AcpiOsPrintf ("Word"); - break; - - case ACPI_RESOURCE_TYPE_ADDRESS32: - AcpiOsPrintf ("DWord"); - break; - - case ACPI_RESOURCE_TYPE_ADDRESS64: - AcpiOsPrintf ("QWord"); - break; - - case ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64: - AcpiOsPrintf ("Extended"); - break; - - default: - return; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmAddressCommon - * - * PARAMETERS: Resource - Raw AML descriptor - * Type - Descriptor type - * Level - Current source code indentation level - * - * RETURN: None - * - * DESCRIPTION: Emit common name and flag fields common to address descriptors - * - ******************************************************************************/ - -static void -AcpiDmAddressCommon ( - AML_RESOURCE *Resource, - UINT8 Type, - UINT32 Level) -{ - UINT8 ResourceType; - UINT8 SpecificFlags; - UINT8 Flags; - - - ResourceType = Resource->Address.ResourceType; - SpecificFlags = Resource->Address.SpecificFlags; - Flags = Resource->Address.Flags; - - AcpiDmIndent (Level); - - /* Validate ResourceType */ - - if ((ResourceType > 2) && (ResourceType < 0xC0)) - { - AcpiOsPrintf ("/**** Invalid Resource Type: 0x%X ****/", ResourceType); - return; - } - - /* Prefix is either Word, DWord, QWord, or Extended */ - - AcpiDmAddressPrefix (Type); - - /* Resource Types above 0xC0 are vendor-defined */ - - if (ResourceType > 2) - { - AcpiOsPrintf ("Space (0x%2.2X, ", ResourceType); - AcpiDmSpaceFlags (Flags); - AcpiOsPrintf (" 0x%2.2X,", SpecificFlags); - return; - } - - /* This is either a Memory, IO, or BusNumber descriptor (0,1,2) */ - - AcpiOsPrintf ("%s (", AcpiGbl_WordDecode [ResourceType & 0x3]); - - /* Decode the general and type-specific flags */ - - if (ResourceType == ACPI_MEMORY_RANGE) - { - AcpiDmMemoryFlags (Flags, SpecificFlags); - } - else /* IO range or BusNumberRange */ - { - AcpiDmIoFlags (Flags); - if (ResourceType == ACPI_IO_RANGE) - { - AcpiOsPrintf (" %s,", AcpiGbl_RngDecode [SpecificFlags & 0x3]); - } - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmAddressFlags - * - * PARAMETERS: Resource - Raw AML descriptor - * - * RETURN: None - * - * DESCRIPTION: Emit flags common to address descriptors - * - ******************************************************************************/ - -static void -AcpiDmAddressFlags ( - AML_RESOURCE *Resource) -{ - - if (Resource->Address.ResourceType == ACPI_IO_RANGE) - { - AcpiDmIoFlags2 (Resource->Address.SpecificFlags); - } - else if (Resource->Address.ResourceType == ACPI_MEMORY_RANGE) - { - AcpiDmMemoryFlags2 (Resource->Address.SpecificFlags); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmSpaceFlags - * - * PARAMETERS: Flags - Flag byte to be decoded - * - * RETURN: None - * - * DESCRIPTION: Decode the flags specific to Space Address space descriptors - * - ******************************************************************************/ - -static void -AcpiDmSpaceFlags ( - UINT8 Flags) -{ - - AcpiOsPrintf ("%s, %s, %s, %s,", - AcpiGbl_ConsumeDecode [(Flags & 1)], - AcpiGbl_DecDecode [(Flags & 0x2) >> 1], - AcpiGbl_MinDecode [(Flags & 0x4) >> 2], - AcpiGbl_MaxDecode [(Flags & 0x8) >> 3]); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmIoFlags - * - * PARAMETERS: Flags - Flag byte to be decoded - * - * RETURN: None - * - * DESCRIPTION: Decode the flags specific to IO Address space descriptors - * - ******************************************************************************/ - -static void -AcpiDmIoFlags ( - UINT8 Flags) -{ - AcpiOsPrintf ("%s, %s, %s, %s,", - AcpiGbl_ConsumeDecode [(Flags & 1)], - AcpiGbl_MinDecode [(Flags & 0x4) >> 2], - AcpiGbl_MaxDecode [(Flags & 0x8) >> 3], - AcpiGbl_DecDecode [(Flags & 0x2) >> 1]); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmIoFlags2 - * - * PARAMETERS: SpecificFlags - "Specific" flag byte to be decoded - * - * RETURN: None - * - * DESCRIPTION: Decode the flags specific to IO Address space descriptors - * - ******************************************************************************/ - -static void -AcpiDmIoFlags2 ( - UINT8 SpecificFlags) -{ - - AcpiOsPrintf (", %s", - AcpiGbl_TtpDecode [(SpecificFlags & 0x10) >> 4]); - - /* TRS is only used if TTP is TypeTranslation */ - - if (SpecificFlags & 0x10) - { - AcpiOsPrintf (", %s", - AcpiGbl_TrsDecode [(SpecificFlags & 0x20) >> 5]); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmMemoryFlags - * - * PARAMETERS: Flags - Flag byte to be decoded - * SpecificFlags - "Specific" flag byte to be decoded - * - * RETURN: None - * - * DESCRIPTION: Decode flags specific to Memory Address Space descriptors - * - ******************************************************************************/ - -static void -AcpiDmMemoryFlags ( - UINT8 Flags, - UINT8 SpecificFlags) -{ - - AcpiOsPrintf ("%s, %s, %s, %s, %s, %s,", - AcpiGbl_ConsumeDecode [(Flags & 1)], - AcpiGbl_DecDecode [(Flags & 0x2) >> 1], - AcpiGbl_MinDecode [(Flags & 0x4) >> 2], - AcpiGbl_MaxDecode [(Flags & 0x8) >> 3], - AcpiGbl_MemDecode [(SpecificFlags & 0x6) >> 1], - AcpiGbl_RwDecode [(SpecificFlags & 0x1)]); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmMemoryFlags2 - * - * PARAMETERS: SpecificFlags - "Specific" flag byte to be decoded - * - * RETURN: None - * - * DESCRIPTION: Decode flags specific to Memory Address Space descriptors - * - ******************************************************************************/ - -static void -AcpiDmMemoryFlags2 ( - UINT8 SpecificFlags) -{ - - AcpiOsPrintf (", %s, %s", - AcpiGbl_MtpDecode [(SpecificFlags & 0x18) >> 3], - AcpiGbl_TtpDecode [(SpecificFlags & 0x20) >> 5]); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmResourceSource - * - * PARAMETERS: Resource - Raw AML descriptor - * MinimumLength - descriptor length without optional fields - * ResourceLength - * - * RETURN: None - * - * DESCRIPTION: Dump optional ResourceSource fields of an address descriptor - * - ******************************************************************************/ - -static void -AcpiDmResourceSource ( - AML_RESOURCE *Resource, - ACPI_SIZE MinimumTotalLength, - UINT32 ResourceLength) -{ - UINT8 *AmlResourceSource; - UINT32 TotalLength; - - - TotalLength = ResourceLength + sizeof (AML_RESOURCE_LARGE_HEADER); - - /* Check if the optional ResourceSource fields are present */ - - if (TotalLength <= MinimumTotalLength) - { - /* The two optional fields are not used */ - - AcpiOsPrintf (",, "); - return; - } - - /* Get a pointer to the ResourceSource */ - - AmlResourceSource = ACPI_ADD_PTR (UINT8, Resource, MinimumTotalLength); - - /* - * Always emit the ResourceSourceIndex (Byte) - * - * NOTE: Some ASL compilers always create a 0 byte (in the AML) for the - * Index even if the String does not exist. Although this is in violation - * of the ACPI specification, it is very important to emit ASL code that - * can be compiled back to the identical AML. There may be fields and/or - * indexes into the resource template buffer that are compiled to absolute - * offsets, and these will be broken if the AML length is changed. - */ - AcpiOsPrintf ("0x%2.2X,", (UINT32) AmlResourceSource[0]); - - /* Make sure that the ResourceSource string exists before dumping it */ - - if (TotalLength > (MinimumTotalLength + 1)) - { - AcpiOsPrintf (" "); - AcpiUtPrintString ((char *) &AmlResourceSource[1], ACPI_UINT8_MAX); - } - - AcpiOsPrintf (", "); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmWordDescriptor - * - * PARAMETERS: Resource - Pointer to the resource descriptor - * Length - Length of the descriptor in bytes - * Level - Current source code indentation level - * - * RETURN: None - * - * DESCRIPTION: Decode a Word Address Space descriptor - * - ******************************************************************************/ - -void -AcpiDmWordDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level) -{ - - /* Dump resource name and flags */ - - AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS16, Level); - - /* Dump the 5 contiguous WORD values */ - - AcpiDmAddressFields (&Resource->Address16.Granularity, 16, Level); - - /* The ResourceSource fields are optional */ - - AcpiDmIndent (Level + 1); - AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS16), Length); - - /* Insert a descriptor name */ - - AcpiDmDescriptorName (); - - /* Type-specific flags */ - - AcpiDmAddressFlags (Resource); - AcpiOsPrintf (")\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDwordDescriptor - * - * PARAMETERS: Resource - Pointer to the resource descriptor - * Length - Length of the descriptor in bytes - * Level - Current source code indentation level - * - * RETURN: None - * - * DESCRIPTION: Decode a DWord Address Space descriptor - * - ******************************************************************************/ - -void -AcpiDmDwordDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level) -{ - - /* Dump resource name and flags */ - - AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS32, Level); - - /* Dump the 5 contiguous DWORD values */ - - AcpiDmAddressFields (&Resource->Address32.Granularity, 32, Level); - - /* The ResourceSource fields are optional */ - - AcpiDmIndent (Level + 1); - AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS32), Length); - - /* Insert a descriptor name */ - - AcpiDmDescriptorName (); - - /* Type-specific flags */ - - AcpiDmAddressFlags (Resource); - AcpiOsPrintf (")\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmQwordDescriptor - * - * PARAMETERS: Resource - Pointer to the resource descriptor - * Length - Length of the descriptor in bytes - * Level - Current source code indentation level - * - * RETURN: None - * - * DESCRIPTION: Decode a QWord Address Space descriptor - * - ******************************************************************************/ - -void -AcpiDmQwordDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level) -{ - - /* Dump resource name and flags */ - - AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS64, Level); - - /* Dump the 5 contiguous QWORD values */ - - AcpiDmAddressFields (&Resource->Address64.Granularity, 64, Level); - - /* The ResourceSource fields are optional */ - - AcpiDmIndent (Level + 1); - AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS64), Length); - - /* Insert a descriptor name */ - - AcpiDmDescriptorName (); - - /* Type-specific flags */ - - AcpiDmAddressFlags (Resource); - AcpiOsPrintf (")\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmExtendedDescriptor - * - * PARAMETERS: Resource - Pointer to the resource descriptor - * Length - Length of the descriptor in bytes - * Level - Current source code indentation level - * - * RETURN: None - * - * DESCRIPTION: Decode a Extended Address Space descriptor - * - ******************************************************************************/ - -void -AcpiDmExtendedDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level) -{ - - /* Dump resource name and flags */ - - AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64, Level); - - /* Dump the 5 contiguous QWORD values */ - - AcpiDmAddressFields (&Resource->ExtAddress64.Granularity, 64, Level); - - /* Extra field for this descriptor only */ - - AcpiDmIndent (Level + 1); - AcpiDmDumpInteger64 (Resource->ExtAddress64.TypeSpecific, - "Type-Specific Attributes"); - - /* Insert a descriptor name */ - - AcpiDmIndent (Level + 1); - AcpiDmDescriptorName (); - - /* Type-specific flags */ - - AcpiDmAddressFlags (Resource); - AcpiOsPrintf (")\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmMemory24Descriptor - * - * PARAMETERS: Resource - Pointer to the resource descriptor - * Length - Length of the descriptor in bytes - * Level - Current source code indentation level - * - * RETURN: None - * - * DESCRIPTION: Decode a Memory24 descriptor - * - ******************************************************************************/ - -void -AcpiDmMemory24Descriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level) -{ - - /* Dump name and read/write flag */ - - AcpiDmIndent (Level); - AcpiOsPrintf ("Memory24 (%s,\n", - AcpiGbl_RwDecode [Resource->Memory24.Flags & 1]); - - /* Dump the 4 contiguous WORD values */ - - AcpiDmMemoryFields (&Resource->Memory24.Minimum, 16, Level); - - /* Insert a descriptor name */ - - AcpiDmIndent (Level + 1); - AcpiDmDescriptorName (); - AcpiOsPrintf (")\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmMemory32Descriptor - * - * PARAMETERS: Resource - Pointer to the resource descriptor - * Length - Length of the descriptor in bytes - * Level - Current source code indentation level - * - * RETURN: None - * - * DESCRIPTION: Decode a Memory32 descriptor - * - ******************************************************************************/ - -void -AcpiDmMemory32Descriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level) -{ - - /* Dump name and read/write flag */ - - AcpiDmIndent (Level); - AcpiOsPrintf ("Memory32 (%s,\n", - AcpiGbl_RwDecode [Resource->Memory32.Flags & 1]); - - /* Dump the 4 contiguous DWORD values */ - - AcpiDmMemoryFields (&Resource->Memory32.Minimum, 32, Level); - - /* Insert a descriptor name */ - - AcpiDmIndent (Level + 1); - AcpiDmDescriptorName (); - AcpiOsPrintf (")\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmFixedMemory32Descriptor - * - * PARAMETERS: Resource - Pointer to the resource descriptor - * Length - Length of the descriptor in bytes - * Level - Current source code indentation level - * - * RETURN: None - * - * DESCRIPTION: Decode a Fixed Memory32 descriptor - * - ******************************************************************************/ - -void -AcpiDmFixedMemory32Descriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level) -{ - - /* Dump name and read/write flag */ - - AcpiDmIndent (Level); - AcpiOsPrintf ("Memory32Fixed (%s,\n", - AcpiGbl_RwDecode [Resource->FixedMemory32.Flags & 1]); - - AcpiDmIndent (Level + 1); - AcpiDmDumpInteger32 (Resource->FixedMemory32.Address, "Address Base"); - - AcpiDmIndent (Level + 1); - AcpiDmDumpInteger32 (Resource->FixedMemory32.AddressLength, "Address Length"); - - /* Insert a descriptor name */ - - AcpiDmIndent (Level + 1); - AcpiDmDescriptorName (); - AcpiOsPrintf (")\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmGenericRegisterDescriptor - * - * PARAMETERS: Resource - Pointer to the resource descriptor - * Length - Length of the descriptor in bytes - * Level - Current source code indentation level - * - * RETURN: None - * - * DESCRIPTION: Decode a Generic Register descriptor - * - ******************************************************************************/ - -void -AcpiDmGenericRegisterDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level) -{ - - AcpiDmIndent (Level); - AcpiOsPrintf ("Register ("); - AcpiDmAddressSpace (Resource->GenericReg.AddressSpaceId); - AcpiOsPrintf ("\n"); - - AcpiDmIndent (Level + 1); - AcpiDmDumpInteger8 (Resource->GenericReg.BitWidth, "Bit Width"); - - AcpiDmIndent (Level + 1); - AcpiDmDumpInteger8 (Resource->GenericReg.BitOffset, "Bit Offset"); - - AcpiDmIndent (Level + 1); - AcpiDmDumpInteger64 (Resource->GenericReg.Address, "Address"); - - /* Optional field for ACPI 3.0 */ - - AcpiDmIndent (Level + 1); - if (Resource->GenericReg.AccessSize) - { - AcpiOsPrintf ("0x%2.2X, // %s\n", - Resource->GenericReg.AccessSize, "Access Size"); - AcpiDmIndent (Level + 1); - } - else - { - AcpiOsPrintf (","); - } - - /* DescriptorName was added for ACPI 3.0+ */ - - AcpiDmDescriptorName (); - AcpiOsPrintf (")\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmInterruptDescriptor - * - * PARAMETERS: Resource - Pointer to the resource descriptor - * Length - Length of the descriptor in bytes - * Level - Current source code indentation level - * - * RETURN: None - * - * DESCRIPTION: Decode a extended Interrupt descriptor - * - ******************************************************************************/ - -void -AcpiDmInterruptDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level) -{ - UINT32 i; - - - AcpiDmIndent (Level); - AcpiOsPrintf ("Interrupt (%s, %s, %s, %s, ", - AcpiGbl_ConsumeDecode [(Resource->ExtendedIrq.Flags & 1)], - AcpiGbl_HeDecode [(Resource->ExtendedIrq.Flags >> 1) & 1], - AcpiGbl_LlDecode [(Resource->ExtendedIrq.Flags >> 2) & 1], - AcpiGbl_ShrDecode [(Resource->ExtendedIrq.Flags >> 3) & 1]); - - /* - * The ResourceSource fields are optional and appear after the interrupt - * list. Must compute length based on length of the list. First xrupt - * is included in the struct (reason for -1 below) - */ - AcpiDmResourceSource (Resource, - sizeof (AML_RESOURCE_EXTENDED_IRQ) + - (Resource->ExtendedIrq.InterruptCount - 1) * sizeof (UINT32), - Resource->ExtendedIrq.ResourceLength); - - /* Insert a descriptor name */ - - AcpiDmDescriptorName (); - AcpiOsPrintf (")\n"); - - /* Dump the interrupt list */ - - AcpiDmIndent (Level); - AcpiOsPrintf ("{\n"); - for (i = 0; i < Resource->ExtendedIrq.InterruptCount; i++) - { - AcpiDmIndent (Level + 1); - AcpiOsPrintf ("0x%8.8X,\n", - (UINT32) Resource->ExtendedIrq.Interrupts[i]); - } - - AcpiDmIndent (Level); - AcpiOsPrintf ("}\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmVendorCommon - * - * PARAMETERS: Name - Descriptor name suffix - * ByteData - Pointer to the vendor byte data - * Length - Length of the byte data - * Level - Current source code indentation level - * - * RETURN: None - * - * DESCRIPTION: Decode a Vendor descriptor, both Large and Small - * - ******************************************************************************/ - -void -AcpiDmVendorCommon ( - char *Name, - UINT8 *ByteData, - UINT32 Length, - UINT32 Level) -{ - - /* Dump macro name */ - - AcpiDmIndent (Level); - AcpiOsPrintf ("Vendor%s (", Name); - - /* Insert a descriptor name */ - - AcpiDmDescriptorName (); - AcpiOsPrintf (") // Length = 0x%.2X\n", Length); - - /* Dump the vendor bytes */ - - AcpiDmIndent (Level); - AcpiOsPrintf ("{\n"); - - AcpiDmDisasmByteList (Level + 1, ByteData, Length); - - AcpiDmIndent (Level); - AcpiOsPrintf ("}\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmVendorLargeDescriptor - * - * PARAMETERS: Resource - Pointer to the resource descriptor - * Length - Length of the descriptor in bytes - * Level - Current source code indentation level - * - * RETURN: None - * - * DESCRIPTION: Decode a Vendor Large descriptor - * - ******************************************************************************/ - -void -AcpiDmVendorLargeDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level) -{ - - AcpiDmVendorCommon ("Long ", - ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_LARGE_HEADER)), - Length, Level); -} - -#endif - diff --git a/sys/contrib/dev/acpica-unix-20061109/disassembler/dmresrcs.c b/sys/contrib/dev/acpica-unix-20061109/disassembler/dmresrcs.c deleted file mode 100644 index 86c9d9f8e5..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/disassembler/dmresrcs.c +++ /dev/null @@ -1,387 +0,0 @@ -/******************************************************************************* - * - * Module Name: dmresrcs.c - "Small" Resource Descriptor disassembly - * $Revision: 1.15 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acdisasm.h" - - -#ifdef ACPI_DISASSEMBLER - -#define _COMPONENT ACPI_CA_DEBUGGER - ACPI_MODULE_NAME ("dbresrcs") - - -/******************************************************************************* - * - * FUNCTION: AcpiDmIrqDescriptor - * - * PARAMETERS: Resource - Pointer to the resource descriptor - * Length - Length of the descriptor in bytes - * Level - Current source code indentation level - * - * RETURN: None - * - * DESCRIPTION: Decode a IRQ descriptor, either Irq() or IrqNoFlags() - * - ******************************************************************************/ - -void -AcpiDmIrqDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level) -{ - - AcpiDmIndent (Level); - AcpiOsPrintf ("%s (", - AcpiGbl_IrqDecode [Length & 1]); - - /* Decode flags byte if present */ - - if (Length & 1) - { - AcpiOsPrintf ("%s, %s, %s, ", - AcpiGbl_HeDecode [Resource->Irq.Flags & 1], - AcpiGbl_LlDecode [(Resource->Irq.Flags >> 3) & 1], - AcpiGbl_ShrDecode [(Resource->Irq.Flags >> 4) & 1]); - } - - /* Insert a descriptor name */ - - AcpiDmDescriptorName (); - AcpiOsPrintf (")\n"); - - AcpiDmIndent (Level + 1); - AcpiDmBitList (Resource->Irq.IrqMask); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDmaDescriptor - * - * PARAMETERS: Resource - Pointer to the resource descriptor - * Length - Length of the descriptor in bytes - * Level - Current source code indentation level - * - * RETURN: None - * - * DESCRIPTION: Decode a DMA descriptor - * - ******************************************************************************/ - -void -AcpiDmDmaDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level) -{ - - AcpiDmIndent (Level); - AcpiOsPrintf ("DMA (%s, %s, %s, ", - AcpiGbl_TypDecode [(Resource->Dma.Flags >> 5) & 3], - AcpiGbl_BmDecode [(Resource->Dma.Flags >> 2) & 1], - AcpiGbl_SizDecode [(Resource->Dma.Flags >> 0) & 3]); - - /* Insert a descriptor name */ - - AcpiDmDescriptorName (); - AcpiOsPrintf (")\n"); - - AcpiDmIndent (Level + 1); - AcpiDmBitList (Resource->Dma.DmaChannelMask); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmIoDescriptor - * - * PARAMETERS: Resource - Pointer to the resource descriptor - * Length - Length of the descriptor in bytes - * Level - Current source code indentation level - * - * RETURN: None - * - * DESCRIPTION: Decode an IO descriptor - * - ******************************************************************************/ - -void -AcpiDmIoDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level) -{ - - AcpiDmIndent (Level); - AcpiOsPrintf ("IO (%s,\n", - AcpiGbl_IoDecode [(Resource->Io.Flags & 1)]); - - AcpiDmIndent (Level + 1); - AcpiDmDumpInteger16 (Resource->Io.Minimum, "Range Minimum"); - - AcpiDmIndent (Level + 1); - AcpiDmDumpInteger16 (Resource->Io.Maximum, "Range Maximum"); - - AcpiDmIndent (Level + 1); - AcpiDmDumpInteger8 (Resource->Io.Alignment, "Alignment"); - - AcpiDmIndent (Level + 1); - AcpiDmDumpInteger8 (Resource->Io.AddressLength, "Length"); - - /* Insert a descriptor name */ - - AcpiDmIndent (Level + 1); - AcpiDmDescriptorName (); - AcpiOsPrintf (")\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmFixedIoDescriptor - * - * PARAMETERS: Resource - Pointer to the resource descriptor - * Length - Length of the descriptor in bytes - * Level - Current source code indentation level - * - * RETURN: None - * - * DESCRIPTION: Decode a Fixed IO descriptor - * - ******************************************************************************/ - -void -AcpiDmFixedIoDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level) -{ - - AcpiDmIndent (Level); - AcpiOsPrintf ("FixedIO (\n"); - - AcpiDmIndent (Level + 1); - AcpiDmDumpInteger16 (Resource->FixedIo.Address, "Address"); - - AcpiDmIndent (Level + 1); - AcpiDmDumpInteger8 (Resource->FixedIo.AddressLength, "Length"); - - /* Insert a descriptor name */ - - AcpiDmIndent (Level + 1); - AcpiDmDescriptorName (); - AcpiOsPrintf (")\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmStartDependentDescriptor - * - * PARAMETERS: Resource - Pointer to the resource descriptor - * Length - Length of the descriptor in bytes - * Level - Current source code indentation level - * - * RETURN: None - * - * DESCRIPTION: Decode a Start Dependendent functions descriptor - * - ******************************************************************************/ - -void -AcpiDmStartDependentDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level) -{ - - AcpiDmIndent (Level); - - if (Length & 1) - { - AcpiOsPrintf ("StartDependentFn (0x%2.2X, 0x%2.2X)\n", - (UINT32) Resource->StartDpf.Flags & 3, - (UINT32) (Resource->StartDpf.Flags >> 2) & 3); - } - else - { - AcpiOsPrintf ("StartDependentFnNoPri ()\n"); - } - - AcpiDmIndent (Level); - AcpiOsPrintf ("{\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmEndDependentDescriptor - * - * PARAMETERS: Resource - Pointer to the resource descriptor - * Length - Length of the descriptor in bytes - * Level - Current source code indentation level - * - * RETURN: None - * - * DESCRIPTION: Decode an End Dependent functions descriptor - * - ******************************************************************************/ - -void -AcpiDmEndDependentDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level) -{ - - AcpiDmIndent (Level); - AcpiOsPrintf ("}\n"); - AcpiDmIndent (Level); - AcpiOsPrintf ("EndDependentFn ()\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmVendorSmallDescriptor - * - * PARAMETERS: Resource - Pointer to the resource descriptor - * Length - Length of the descriptor in bytes - * Level - Current source code indentation level - * - * RETURN: None - * - * DESCRIPTION: Decode a Vendor Small Descriptor - * - ******************************************************************************/ - -void -AcpiDmVendorSmallDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level) -{ - - AcpiDmVendorCommon ("Short", - ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_SMALL_HEADER)), - Length, Level); -} - -#endif - diff --git a/sys/contrib/dev/acpica-unix-20061109/disassembler/dmutils.c b/sys/contrib/dev/acpica-unix-20061109/disassembler/dmutils.c deleted file mode 100644 index ffcce5ca31..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/disassembler/dmutils.c +++ /dev/null @@ -1,493 +0,0 @@ -/******************************************************************************* - * - * Module Name: dmutils - AML disassembler utilities - * $Revision: 1.24 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "amlcode.h" -#include "acdisasm.h" - -#ifdef ACPI_ASL_COMPILER -#include -#endif - -#ifdef ACPI_DISASSEMBLER - -#define _COMPONENT ACPI_CA_DEBUGGER - ACPI_MODULE_NAME ("dmutils") - - -ACPI_EXTERNAL_LIST *AcpiGbl_ExternalList = NULL; - - -/* Data used in keeping track of fields */ -#if 0 -const char *AcpiGbl_FENames[] = -{ - "skip", - "?access?" -}; /* FE = Field Element */ -#endif - -/* Operators for Match() */ - -const char *AcpiGbl_MatchOps[] = -{ - "MTR", - "MEQ", - "MLE", - "MLT", - "MGE", - "MGT" -}; - -/* Access type decoding */ - -const char *AcpiGbl_AccessTypes[] = -{ - "AnyAcc", - "ByteAcc", - "WordAcc", - "DWordAcc", - "QWordAcc", - "BufferAcc", - "InvalidAccType", - "InvalidAccType" -}; - -/* Lock rule decoding */ - -const char *AcpiGbl_LockRule[] = -{ - "NoLock", - "Lock" -}; - -/* Update rule decoding */ - -const char *AcpiGbl_UpdateRules[] = -{ - "Preserve", - "WriteAsOnes", - "WriteAsZeros", - "InvalidUpdateRule" -}; - -/* Strings used to decode resource descriptors */ - -const char *AcpiGbl_WordDecode[] = -{ - "Memory", - "IO", - "BusNumber", - "UnknownResourceType" -}; - -const char *AcpiGbl_IrqDecode[] = -{ - "IRQNoFlags", - "IRQ" -}; - - -#ifdef ACPI_ASL_COMPILER -/******************************************************************************* - * - * FUNCTION: AcpiDmAddToExternalList - * - * PARAMETERS: Path - Internal (AML) path to the object - * - * RETURN: None - * - * DESCRIPTION: Insert a new path into the list of Externals which will in - * turn be emitted as an External() declaration in the disassembled - * output. - * - ******************************************************************************/ - -void -AcpiDmAddToExternalList ( - char *Path, - UINT8 Type, - UINT32 Value) -{ - char *ExternalPath; - ACPI_EXTERNAL_LIST *NewExternal; - ACPI_EXTERNAL_LIST *NextExternal; - ACPI_EXTERNAL_LIST *PrevExternal = NULL; - ACPI_STATUS Status; - - - if (!Path) - { - return; - } - - /* Externalize the ACPI path */ - - Status = AcpiNsExternalizeName (ACPI_UINT32_MAX, Path, - NULL, &ExternalPath); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Ensure that we don't have duplicate externals */ - - NextExternal = AcpiGbl_ExternalList; - while (NextExternal) - { - /* Allow upgrade of type from ANY */ - - if (!ACPI_STRCMP (ExternalPath, NextExternal->Path)) - { - /* Duplicate method, check that the Value (ArgCount) is the same */ - - if ((NextExternal->Type == ACPI_TYPE_METHOD) && - (NextExternal->Value != Value)) - { - ACPI_ERROR ((AE_INFO, "Argument count mismatch for method %s %d %d", - NextExternal->Path, NextExternal->Value, Value)); - } - if (NextExternal->Type == ACPI_TYPE_ANY) - { - NextExternal->Type = Type; - NextExternal->Value = Value; - } - ACPI_FREE (ExternalPath); - return; - } - NextExternal = NextExternal->Next; - } - - /* Allocate and init a new External() descriptor */ - - NewExternal = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EXTERNAL_LIST)); - NewExternal->InternalPath = Path; - NewExternal->Path = ExternalPath; - NewExternal->Type = Type; - NewExternal->Value = Value; - NewExternal->Length = (UINT16) ACPI_STRLEN (ExternalPath); - - /* Link the new descriptor into the global list, ordered by string length */ - - NextExternal = AcpiGbl_ExternalList; - while (NextExternal) - { - if (NewExternal->Length <= NextExternal->Length) - { - if (PrevExternal) - { - PrevExternal->Next = NewExternal; - } - else - { - AcpiGbl_ExternalList = NewExternal; - } - - NewExternal->Next = NextExternal; - return; - } - - PrevExternal = NextExternal; - NextExternal = NextExternal->Next; - } - - if (PrevExternal) - { - PrevExternal->Next = NewExternal; - } - else - { - AcpiGbl_ExternalList = NewExternal; - } -} -#endif - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDecodeAttribute - * - * PARAMETERS: Attribute - Attribute field of AccessAs keyword - * - * RETURN: None - * - * DESCRIPTION: Decode the AccessAs attribute byte. (Mostly SMBus stuff) - * - ******************************************************************************/ - -void -AcpiDmDecodeAttribute ( - UINT8 Attribute) -{ - - switch (Attribute) - { - case AML_FIELD_ATTRIB_SMB_QUICK: - - AcpiOsPrintf ("SMBQuick"); - break; - - case AML_FIELD_ATTRIB_SMB_SEND_RCV: - - AcpiOsPrintf ("SMBSendReceive"); - break; - - case AML_FIELD_ATTRIB_SMB_BYTE: - - AcpiOsPrintf ("SMBByte"); - break; - - case AML_FIELD_ATTRIB_SMB_WORD: - - AcpiOsPrintf ("SMBWord"); - break; - - case AML_FIELD_ATTRIB_SMB_WORD_CALL: - - AcpiOsPrintf ("SMBProcessCall"); - break; - - case AML_FIELD_ATTRIB_SMB_BLOCK: - - AcpiOsPrintf ("SMBBlock"); - break; - - case AML_FIELD_ATTRIB_SMB_BLOCK_CALL: - - AcpiOsPrintf ("SMBBlockProcessCall"); - break; - - default: - - AcpiOsPrintf ("0x%.2X", Attribute); - break; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmIndent - * - * PARAMETERS: Level - Current source code indentation level - * - * RETURN: None - * - * DESCRIPTION: Indent 4 spaces per indentation level. - * - ******************************************************************************/ - -void -AcpiDmIndent ( - UINT32 Level) -{ - - if (!Level) - { - return; - } - - AcpiOsPrintf ("%*.s", ACPI_MUL_4 (Level), " "); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmCommaIfListMember - * - * PARAMETERS: Op - Current operator/operand - * - * RETURN: TRUE if a comma was inserted - * - * DESCRIPTION: Insert a comma if this Op is a member of an argument list. - * - ******************************************************************************/ - -BOOLEAN -AcpiDmCommaIfListMember ( - ACPI_PARSE_OBJECT *Op) -{ - - if (!Op->Common.Next) - { - return FALSE; - } - - if (AcpiDmListType (Op->Common.Parent) & BLOCK_COMMA_LIST) - { - /* Check for a NULL target operand */ - - if ((Op->Common.Next->Common.AmlOpcode == AML_INT_NAMEPATH_OP) && - (!Op->Common.Next->Common.Value.String)) - { - /* - * To handle the Divide() case where there are two optional - * targets, look ahead one more op. If null, this null target - * is the one and only target -- no comma needed. Otherwise, - * we need a comma to prepare for the next target. - */ - if (!Op->Common.Next->Common.Next) - { - return FALSE; - } - } - - if ((Op->Common.DisasmFlags & ACPI_PARSEOP_PARAMLIST) && - (!(Op->Common.Next->Common.DisasmFlags & ACPI_PARSEOP_PARAMLIST))) - { - return FALSE; - } - - AcpiOsPrintf (", "); - return (TRUE); - } - - else if ((Op->Common.DisasmFlags & ACPI_PARSEOP_PARAMLIST) && - (Op->Common.Next->Common.DisasmFlags & ACPI_PARSEOP_PARAMLIST)) - { - AcpiOsPrintf (", "); - return (TRUE); - } - - return (FALSE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmCommaIfFieldMember - * - * PARAMETERS: Op - Current operator/operand - * - * RETURN: None - * - * DESCRIPTION: Insert a comma if this Op is a member of a Field argument list. - * - ******************************************************************************/ - -void -AcpiDmCommaIfFieldMember ( - ACPI_PARSE_OBJECT *Op) -{ - - if (Op->Common.Next) - { - AcpiOsPrintf (", "); - } -} - -#endif diff --git a/sys/contrib/dev/acpica-unix-20061109/disassembler/dmwalk.c b/sys/contrib/dev/acpica-unix-20061109/disassembler/dmwalk.c deleted file mode 100644 index 69e38ff69d..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/disassembler/dmwalk.c +++ /dev/null @@ -1,1043 +0,0 @@ -/******************************************************************************* - * - * Module Name: dmwalk - AML disassembly tree walk - * $Revision: 1.32 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" -#include "acdisasm.h" -#include "acdebug.h" - - -#ifdef ACPI_DISASSEMBLER - -#define _COMPONENT ACPI_CA_DEBUGGER - ACPI_MODULE_NAME ("dmwalk") - - -#define DB_FULL_OP_INFO "[%4.4s] @%5.5X #%4.4X: " - -/* Local prototypes */ - -static ACPI_STATUS -AcpiDmDescendingOp ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -static ACPI_STATUS -AcpiDmAscendingOp ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -static UINT32 -AcpiDmBlockType ( - ACPI_PARSE_OBJECT *Op); - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDisassemble - * - * PARAMETERS: WalkState - Current state - * Origin - Starting object - * NumOpcodes - Max number of opcodes to be displayed - * - * RETURN: None - * - * DESCRIPTION: Disassemble parser object and its children. This is the - * main entry point of the disassembler. - * - ******************************************************************************/ - -void -AcpiDmDisassemble ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Origin, - UINT32 NumOpcodes) -{ - ACPI_PARSE_OBJECT *Op = Origin; - ACPI_OP_WALK_INFO Info; - - - if (!Op) - { - return; - } - - Info.Flags = 0; - Info.Level = 0; - Info.Count = 0; - Info.WalkState = WalkState; - AcpiDmWalkParseTree (Op, AcpiDmDescendingOp, AcpiDmAscendingOp, &Info); - return; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmWalkParseTree - * - * PARAMETERS: Op - Root Op object - * DescendingCallback - Called during tree descent - * AscendingCallback - Called during tree ascent - * Context - To be passed to the callbacks - * - * RETURN: Status from callback(s) - * - * DESCRIPTION: Walk the entire parse tree. - * - ******************************************************************************/ - -void -AcpiDmWalkParseTree ( - ACPI_PARSE_OBJECT *Op, - ASL_WALK_CALLBACK DescendingCallback, - ASL_WALK_CALLBACK AscendingCallback, - void *Context) -{ - BOOLEAN NodePreviouslyVisited; - ACPI_PARSE_OBJECT *StartOp = Op; - ACPI_STATUS Status; - ACPI_PARSE_OBJECT *Next; - ACPI_OP_WALK_INFO *Info = Context; - - - Info->Level = 0; - NodePreviouslyVisited = FALSE; - - while (Op) - { - if (NodePreviouslyVisited) - { - if (AscendingCallback) - { - Status = AscendingCallback (Op, Info->Level, Context); - if (ACPI_FAILURE (Status)) - { - return; - } - } - } - else - { - /* Let the callback process the node */ - - Status = DescendingCallback (Op, Info->Level, Context); - if (ACPI_SUCCESS (Status)) - { - /* Visit children first, once */ - - Next = AcpiPsGetArg (Op, 0); - if (Next) - { - Info->Level++; - Op = Next; - continue; - } - } - else if (Status != AE_CTRL_DEPTH) - { - /* Exit immediately on any error */ - - return; - } - } - - /* Terminate walk at start op */ - - if (Op == StartOp) - { - break; - } - - /* No more children, re-visit this node */ - - if (!NodePreviouslyVisited) - { - NodePreviouslyVisited = TRUE; - continue; - } - - /* No more children, visit peers */ - - if (Op->Common.Next) - { - Op = Op->Common.Next; - NodePreviouslyVisited = FALSE; - } - else - { - /* No peers, re-visit parent */ - - if (Info->Level != 0 ) - { - Info->Level--; - } - - Op = Op->Common.Parent; - NodePreviouslyVisited = TRUE; - } - } - - /* If we get here, the walk completed with no errors */ - - return; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmBlockType - * - * PARAMETERS: Op - Object to be examined - * - * RETURN: BlockType - not a block, parens, braces, or even both. - * - * DESCRIPTION: Type of block for this op (parens or braces) - * - ******************************************************************************/ - -static UINT32 -AcpiDmBlockType ( - ACPI_PARSE_OBJECT *Op) -{ - const ACPI_OPCODE_INFO *OpInfo; - - - if (!Op) - { - return (BLOCK_NONE); - } - - switch (Op->Common.AmlOpcode) - { - case AML_ELSE_OP: - - return (BLOCK_BRACE); - - case AML_METHOD_OP: - case AML_DEVICE_OP: - case AML_SCOPE_OP: - case AML_PROCESSOR_OP: - case AML_POWER_RES_OP: - case AML_THERMAL_ZONE_OP: - case AML_IF_OP: - case AML_WHILE_OP: - case AML_FIELD_OP: - case AML_INDEX_FIELD_OP: - case AML_BANK_FIELD_OP: - - return (BLOCK_PAREN | BLOCK_BRACE); - - case AML_BUFFER_OP: - - if (Op->Common.DisasmOpcode == ACPI_DASM_UNICODE) - { - return (BLOCK_NONE); - } - - /*lint -fallthrough */ - - case AML_PACKAGE_OP: - case AML_VAR_PACKAGE_OP: - - return (BLOCK_PAREN | BLOCK_BRACE); - - case AML_EVENT_OP: - - return (BLOCK_PAREN); - - default: - - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - if (OpInfo->Flags & AML_HAS_ARGS) - { - return (BLOCK_PAREN); - } - - return (BLOCK_NONE); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmListType - * - * PARAMETERS: Op - Object to be examined - * - * RETURN: ListType - has commas or not. - * - * DESCRIPTION: Type of block for this op (parens or braces) - * - ******************************************************************************/ - -UINT32 -AcpiDmListType ( - ACPI_PARSE_OBJECT *Op) -{ - const ACPI_OPCODE_INFO *OpInfo; - - - if (!Op) - { - return (BLOCK_NONE); - } - - switch (Op->Common.AmlOpcode) - { - - case AML_ELSE_OP: - case AML_METHOD_OP: - case AML_DEVICE_OP: - case AML_SCOPE_OP: - case AML_POWER_RES_OP: - case AML_PROCESSOR_OP: - case AML_THERMAL_ZONE_OP: - case AML_IF_OP: - case AML_WHILE_OP: - case AML_FIELD_OP: - case AML_INDEX_FIELD_OP: - case AML_BANK_FIELD_OP: - - return (BLOCK_NONE); - - case AML_BUFFER_OP: - case AML_PACKAGE_OP: - case AML_VAR_PACKAGE_OP: - - return (BLOCK_COMMA_LIST); - - default: - - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - if (OpInfo->Flags & AML_HAS_ARGS) - { - return (BLOCK_COMMA_LIST); - } - - return (BLOCK_NONE); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDescendingOp - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: First visitation of a parse object during tree descent. - * Decode opcode name and begin parameter list(s), if any. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDmDescendingOp ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - ACPI_OP_WALK_INFO *Info = Context; - const ACPI_OPCODE_INFO *OpInfo; - UINT32 Name; - ACPI_PARSE_OBJECT *NextOp; - ACPI_EXTERNAL_LIST *NextExternal; - - - if (Op->Common.DisasmFlags & ACPI_PARSEOP_IGNORE) - { - /* Ignore this op -- it was handled elsewhere */ - - return (AE_CTRL_DEPTH); - } - - /* Level 0 is at the Definition Block level */ - - if (Level == 0) - { - /* In verbose mode, print the AML offset, opcode and depth count */ - - if (Info->WalkState) - { - VERBOSE_PRINT ((DB_FULL_OP_INFO, - (Info->WalkState->MethodNode ? - Info->WalkState->MethodNode->Name.Ascii : " "), - Op->Common.AmlOffset, (UINT32) Op->Common.AmlOpcode)); - } - - if (Op->Common.AmlOpcode == AML_SCOPE_OP) - { - /* This is the beginning of the Definition Block */ - - AcpiOsPrintf ("{\n"); - - /* Emit all External() declarations here */ - - if (AcpiGbl_ExternalList) - { - /* - * Walk the list of externals (unresolved references) - * found during parsing - */ - while (AcpiGbl_ExternalList) - { - AcpiOsPrintf (" External (%s", - AcpiGbl_ExternalList->Path); - - /* TBD: should be a lookup table */ - - switch (AcpiGbl_ExternalList->Type) - { - case ACPI_TYPE_DEVICE: - AcpiOsPrintf (", DeviceObj"); - break; - - case ACPI_TYPE_METHOD: - AcpiOsPrintf (", MethodObj"); - break; - - case ACPI_TYPE_INTEGER: - AcpiOsPrintf (", IntObj"); - break; - - default: - break; - } - - if (AcpiGbl_ExternalList->Type == ACPI_TYPE_METHOD) - { - AcpiOsPrintf (") // %d Arguments\n", AcpiGbl_ExternalList->Value); - } - else - { - AcpiOsPrintf (")\n"); - } - - NextExternal = AcpiGbl_ExternalList->Next; - ACPI_FREE (AcpiGbl_ExternalList->Path); - ACPI_FREE (AcpiGbl_ExternalList); - AcpiGbl_ExternalList = NextExternal; - } - AcpiOsPrintf ("\n"); - } - - return (AE_OK); - } - } - else if ((AcpiDmBlockType (Op->Common.Parent) & BLOCK_BRACE) && - (!(Op->Common.DisasmFlags & ACPI_PARSEOP_PARAMLIST)) && - (Op->Common.AmlOpcode != AML_INT_BYTELIST_OP)) - { - /* - * This is a first-level element of a term list, - * indent a new line - */ - AcpiDmIndent (Level); - Info->LastLevel = Level; - Info->Count = 0; - } - - /* - * This is an inexpensive mechanism to try and keep lines from getting - * too long. When the limit is hit, start a new line at the previous - * indent plus one. A better but more expensive mechanism would be to - * keep track of the current column. - */ - Info->Count++; - if (Info->Count /*+Info->LastLevel*/ > 10) - { - Info->Count = 0; - AcpiOsPrintf ("\n"); - AcpiDmIndent (Info->LastLevel + 1); - } - - /* Print the opcode name */ - - AcpiDmDisassembleOneOp (NULL, Info, Op); - - if (Op->Common.DisasmOpcode == ACPI_DASM_LNOT_PREFIX) - { - return (AE_OK); - } - - if ((Op->Common.AmlOpcode == AML_NAME_OP) || - (Op->Common.AmlOpcode == AML_RETURN_OP)) - { - Info->Level--; - } - - /* Start the opcode argument list if necessary */ - - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - - if ((OpInfo->Flags & AML_HAS_ARGS) || - (Op->Common.AmlOpcode == AML_EVENT_OP)) - { - /* This opcode has an argument list */ - - if (AcpiDmBlockType (Op) & BLOCK_PAREN) - { - AcpiOsPrintf (" ("); - } - - /* If this is a named opcode, print the associated name value */ - - if (OpInfo->Flags & AML_NAMED) - { - switch (Op->Common.AmlOpcode) - { - case AML_ALIAS_OP: - - NextOp = AcpiPsGetDepthNext (NULL, Op); - NextOp->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; - AcpiDmNamestring (NextOp->Common.Value.Name); - AcpiOsPrintf (", "); - - /*lint -fallthrough */ - - default: - - Name = AcpiPsGetName (Op); - if (Op->Named.Path) - { - AcpiDmNamestring ((char *) Op->Named.Path); - } - else - { - AcpiDmDumpName ((char *) &Name); - } - - if (Op->Common.AmlOpcode != AML_INT_NAMEDFIELD_OP) - { - if (AcpiGbl_DbOpt_verbose) - { - (void) AcpiPsDisplayObjectPathname (NULL, Op); - } - } - break; - } - - switch (Op->Common.AmlOpcode) - { - case AML_METHOD_OP: - - AcpiDmMethodFlags (Op); - AcpiOsPrintf (")"); - break; - - - case AML_NAME_OP: - - /* Check for _HID and related EISAID() */ - - AcpiDmIsEisaId (Op); - AcpiOsPrintf (", "); - break; - - - case AML_REGION_OP: - - AcpiDmRegionFlags (Op); - break; - - - case AML_POWER_RES_OP: - - /* Mark the next two Ops as part of the parameter list */ - - AcpiOsPrintf (", "); - NextOp = AcpiPsGetDepthNext (NULL, Op); - NextOp->Common.DisasmFlags |= ACPI_PARSEOP_PARAMLIST; - - NextOp = NextOp->Common.Next; - NextOp->Common.DisasmFlags |= ACPI_PARSEOP_PARAMLIST; - return (AE_OK); - - - case AML_PROCESSOR_OP: - - /* Mark the next three Ops as part of the parameter list */ - - AcpiOsPrintf (", "); - NextOp = AcpiPsGetDepthNext (NULL, Op); - NextOp->Common.DisasmFlags |= ACPI_PARSEOP_PARAMLIST; - - NextOp = NextOp->Common.Next; - NextOp->Common.DisasmFlags |= ACPI_PARSEOP_PARAMLIST; - - NextOp = NextOp->Common.Next; - NextOp->Common.DisasmFlags |= ACPI_PARSEOP_PARAMLIST; - return (AE_OK); - - - case AML_MUTEX_OP: - case AML_DATA_REGION_OP: - - AcpiOsPrintf (", "); - return (AE_OK); - - - case AML_EVENT_OP: - case AML_ALIAS_OP: - - return (AE_OK); - - - case AML_SCOPE_OP: - case AML_DEVICE_OP: - case AML_THERMAL_ZONE_OP: - - AcpiOsPrintf (")"); - break; - - - default: - - AcpiOsPrintf ("*** Unhandled named opcode %X\n", Op->Common.AmlOpcode); - break; - } - } - - else switch (Op->Common.AmlOpcode) - { - case AML_FIELD_OP: - case AML_BANK_FIELD_OP: - case AML_INDEX_FIELD_OP: - - Info->BitOffset = 0; - - /* Name of the parent OperationRegion */ - - NextOp = AcpiPsGetDepthNext (NULL, Op); - AcpiDmNamestring (NextOp->Common.Value.Name); - AcpiOsPrintf (", "); - NextOp->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; - - switch (Op->Common.AmlOpcode) - { - case AML_BANK_FIELD_OP: - - /* Namestring - Bank Name */ - - NextOp = AcpiPsGetDepthNext (NULL, NextOp); - AcpiDmNamestring (NextOp->Common.Value.Name); - NextOp->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; - AcpiOsPrintf (", "); - - /* - * Bank Value. This is a TermArg in the middle of the parameter - * list, must handle it here. - * - * Disassemble the TermArg parse tree. ACPI_PARSEOP_PARAMLIST - * eliminates newline in the output. - */ - NextOp = NextOp->Common.Next; - - Info->Flags = ACPI_PARSEOP_PARAMLIST; - AcpiDmWalkParseTree (NextOp, AcpiDmDescendingOp, AcpiDmAscendingOp, Info); - Info->Flags = 0; - Info->Level = Level; - - NextOp->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; - AcpiOsPrintf (", "); - break; - - case AML_INDEX_FIELD_OP: - - /* Namestring - Data Name */ - - NextOp = AcpiPsGetDepthNext (NULL, NextOp); - AcpiDmNamestring (NextOp->Common.Value.Name); - AcpiOsPrintf (", "); - NextOp->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; - break; - - default: - - break; - } - - AcpiDmFieldFlags (NextOp); - break; - - - case AML_BUFFER_OP: - - /* The next op is the size parameter */ - - NextOp = AcpiPsGetDepthNext (NULL, Op); - if (!NextOp) - { - /* Single-step support */ - - return (AE_OK); - } - - if (Op->Common.DisasmOpcode == ACPI_DASM_RESOURCE) - { - /* - * We have a resource list. Don't need to output - * the buffer size Op. Open up a new block - */ - NextOp->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; - NextOp = NextOp->Common.Next; - AcpiOsPrintf (")\n"); - AcpiDmIndent (Info->Level); - AcpiOsPrintf ("{\n"); - return (AE_OK); - } - - /* Normal Buffer, mark size as in the parameter list */ - - NextOp->Common.DisasmFlags |= ACPI_PARSEOP_PARAMLIST; - return (AE_OK); - - - case AML_VAR_PACKAGE_OP: - case AML_IF_OP: - case AML_WHILE_OP: - - /* The next op is the size or predicate parameter */ - - NextOp = AcpiPsGetDepthNext (NULL, Op); - if (NextOp) - { - NextOp->Common.DisasmFlags |= ACPI_PARSEOP_PARAMLIST; - } - return (AE_OK); - - - case AML_PACKAGE_OP: - - /* The next op is the size or predicate parameter */ - - NextOp = AcpiPsGetDepthNext (NULL, Op); - if (NextOp) - { - NextOp->Common.DisasmFlags |= ACPI_PARSEOP_PARAMLIST; - } - return (AE_OK); - - - case AML_MATCH_OP: - - AcpiDmMatchOp (Op); - break; - - - default: - - break; - } - - if (AcpiDmBlockType (Op) & BLOCK_BRACE) - { - AcpiOsPrintf ("\n"); - AcpiDmIndent (Level); - AcpiOsPrintf ("{\n"); - } - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmAscendingOp - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Second visitation of a parse object, during ascent of parse - * tree. Close out any parameter lists and complete the opcode. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDmAscendingOp ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - ACPI_OP_WALK_INFO *Info = Context; - - - if (Op->Common.DisasmFlags & ACPI_PARSEOP_IGNORE) - { - /* Ignore this op -- it was handled elsewhere */ - - return (AE_OK); - } - - if ((Level == 0) && (Op->Common.AmlOpcode == AML_SCOPE_OP)) - { - /* Indicates the end of the current descriptor block (table) */ - - AcpiOsPrintf ("}\n\n"); - return (AE_OK); - } - - switch (AcpiDmBlockType (Op)) - { - case BLOCK_PAREN: - - /* Completed an op that has arguments, add closing paren */ - - AcpiOsPrintf (")"); - - /* Could be a nested operator, check if comma required */ - - if (!AcpiDmCommaIfListMember (Op)) - { - if ((AcpiDmBlockType (Op->Common.Parent) & BLOCK_BRACE) && - (!(Op->Common.DisasmFlags & ACPI_PARSEOP_PARAMLIST)) && - (Op->Common.AmlOpcode != AML_INT_BYTELIST_OP)) - { - /* - * This is a first-level element of a term list - * start a new line - */ - if (!(Info->Flags & ACPI_PARSEOP_PARAMLIST)) - { - AcpiOsPrintf ("\n"); - } - } - } - break; - - - case BLOCK_BRACE: - case (BLOCK_BRACE | BLOCK_PAREN): - - /* Completed an op that has a term list, add closing brace */ - - if (Op->Common.DisasmFlags & ACPI_PARSEOP_EMPTY_TERMLIST) - { - AcpiOsPrintf ("}"); - } - else - { - AcpiDmIndent (Level); - AcpiOsPrintf ("}"); - } - - AcpiDmCommaIfListMember (Op); - - if (AcpiDmBlockType (Op->Common.Parent) != BLOCK_PAREN) - { - AcpiOsPrintf ("\n"); - if (!(Op->Common.DisasmFlags & ACPI_PARSEOP_EMPTY_TERMLIST)) - { - if ((Op->Common.AmlOpcode == AML_IF_OP) && - (Op->Common.Next) && - (Op->Common.Next->Common.AmlOpcode == AML_ELSE_OP)) - { - break; - } - - if ((AcpiDmBlockType (Op->Common.Parent) & BLOCK_BRACE) && - (!Op->Common.Next)) - { - break; - } - AcpiOsPrintf ("\n"); - } - } - break; - - - case BLOCK_NONE: - default: - - /* Could be a nested operator, check if comma required */ - - if (!AcpiDmCommaIfListMember (Op)) - { - if ((AcpiDmBlockType (Op->Common.Parent) & BLOCK_BRACE) && - (!(Op->Common.DisasmFlags & ACPI_PARSEOP_PARAMLIST)) && - (Op->Common.AmlOpcode != AML_INT_BYTELIST_OP)) - { - /* - * This is a first-level element of a term list - * start a new line - */ - AcpiOsPrintf ("\n"); - } - } - else if (Op->Common.Parent) - { - switch (Op->Common.Parent->Common.AmlOpcode) - { - case AML_PACKAGE_OP: - case AML_VAR_PACKAGE_OP: - - if (!(Op->Common.DisasmFlags & ACPI_PARSEOP_PARAMLIST)) - { - AcpiOsPrintf ("\n"); - } - break; - - default: - - break; - } - } - break; - } - - if (Op->Common.DisasmFlags & ACPI_PARSEOP_PARAMLIST) - { - if ((Op->Common.Next) && - (Op->Common.Next->Common.DisasmFlags & ACPI_PARSEOP_PARAMLIST)) - { - return (AE_OK); - } - - /* - * Just completed a parameter node for something like "Buffer (param)". - * Close the paren and open up the term list block with a brace - */ - if (Op->Common.Next) - { - AcpiOsPrintf (")\n"); - AcpiDmIndent (Level - 1); - AcpiOsPrintf ("{\n"); - } - else - { - Op->Common.Parent->Common.DisasmFlags |= - ACPI_PARSEOP_EMPTY_TERMLIST; - AcpiOsPrintf (") {"); - } - } - - if ((Op->Common.AmlOpcode == AML_NAME_OP) || - (Op->Common.AmlOpcode == AML_RETURN_OP)) - { - Info->Level++; - } - return (AE_OK); -} - - -#endif /* ACPI_DISASSEMBLER */ diff --git a/sys/contrib/dev/acpica-unix-20061109/events/evevent.c b/sys/contrib/dev/acpica-unix-20061109/events/evevent.c deleted file mode 100644 index 7f5afd5f17..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/events/evevent.c +++ /dev/null @@ -1,427 +0,0 @@ -/****************************************************************************** - * - * Module Name: evevent - Fixed Event handling and dispatch - * $Revision: 1.124 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "acevents.h" - -#define _COMPONENT ACPI_EVENTS - ACPI_MODULE_NAME ("evevent") - -/* Local prototypes */ - -static ACPI_STATUS -AcpiEvFixedEventInitialize ( - void); - -static UINT32 -AcpiEvFixedEventDispatch ( - UINT32 Event); - - -/******************************************************************************* - * - * FUNCTION: AcpiEvInitializeEvents - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Initialize global data structures for ACPI events (Fixed, GPE) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvInitializeEvents ( - void) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (EvInitializeEvents); - - - /* - * Initialize the Fixed and General Purpose Events. This is done prior to - * enabling SCIs to prevent interrupts from occurring before the handlers are - * installed. - */ - Status = AcpiEvFixedEventInitialize (); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Unable to initialize fixed events")); - return_ACPI_STATUS (Status); - } - - Status = AcpiEvGpeInitialize (); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Unable to initialize general purpose events")); - return_ACPI_STATUS (Status); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvInstallFadtGpes - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Completes initialization of the FADT-defined GPE blocks - * (0 and 1). This causes the _PRW methods to be run, so the HW - * must be fully initialized at this point, including global lock - * support. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvInstallFadtGpes ( - void) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (EvInstallFadtGpes); - - - /* Namespace must be locked */ - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* FADT GPE Block 0 */ - - (void) AcpiEvInitializeGpeBlock ( - AcpiGbl_FadtGpeDevice, AcpiGbl_GpeFadtBlocks[0]); - - /* FADT GPE Block 1 */ - - (void) AcpiEvInitializeGpeBlock ( - AcpiGbl_FadtGpeDevice, AcpiGbl_GpeFadtBlocks[1]); - - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvInstallXruptHandlers - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Install interrupt handlers for the SCI and Global Lock - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvInstallXruptHandlers ( - void) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (EvInstallXruptHandlers); - - - /* Install the SCI handler */ - - Status = AcpiEvInstallSciHandler (); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Unable to install System Control Interrupt handler")); - return_ACPI_STATUS (Status); - } - - /* Install the handler for the Global Lock */ - - Status = AcpiEvInitGlobalLockHandler (); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Unable to initialize Global Lock handler")); - return_ACPI_STATUS (Status); - } - - AcpiGbl_EventsInitialized = TRUE; - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvFixedEventInitialize - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Install the fixed event handlers and enable the fixed events. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiEvFixedEventInitialize ( - void) -{ - ACPI_NATIVE_UINT i; - ACPI_STATUS Status; - - - /* - * Initialize the structure that keeps track of fixed event handlers - * and enable the fixed events. - */ - for (i = 0; i < ACPI_NUM_FIXED_EVENTS; i++) - { - AcpiGbl_FixedEventHandlers[i].Handler = NULL; - AcpiGbl_FixedEventHandlers[i].Context = NULL; - - /* Enable the fixed event */ - - if (AcpiGbl_FixedEventInfo[i].EnableRegisterId != 0xFF) - { - Status = AcpiSetRegister ( - AcpiGbl_FixedEventInfo[i].EnableRegisterId, 0); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - } - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvFixedEventDetect - * - * PARAMETERS: None - * - * RETURN: INTERRUPT_HANDLED or INTERRUPT_NOT_HANDLED - * - * DESCRIPTION: Checks the PM status register for active fixed events - * - ******************************************************************************/ - -UINT32 -AcpiEvFixedEventDetect ( - void) -{ - UINT32 IntStatus = ACPI_INTERRUPT_NOT_HANDLED; - UINT32 FixedStatus; - UINT32 FixedEnable; - ACPI_NATIVE_UINT i; - - - ACPI_FUNCTION_NAME (EvFixedEventDetect); - - - /* - * Read the fixed feature status and enable registers, as all the cases - * depend on their values. Ignore errors here. - */ - (void) AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, ACPI_REGISTER_PM1_STATUS, - &FixedStatus); - (void) AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, ACPI_REGISTER_PM1_ENABLE, - &FixedEnable); - - ACPI_DEBUG_PRINT ((ACPI_DB_INTERRUPTS, - "Fixed Event Block: Enable %08X Status %08X\n", - FixedEnable, FixedStatus)); - - /* - * Check for all possible Fixed Events and dispatch those that are active - */ - for (i = 0; i < ACPI_NUM_FIXED_EVENTS; i++) - { - /* Both the status and enable bits must be on for this event */ - - if ((FixedStatus & AcpiGbl_FixedEventInfo[i].StatusBitMask) && - (FixedEnable & AcpiGbl_FixedEventInfo[i].EnableBitMask)) - { - /* Found an active (signalled) event */ - - IntStatus |= AcpiEvFixedEventDispatch ((UINT32) i); - } - } - - return (IntStatus); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvFixedEventDispatch - * - * PARAMETERS: Event - Event type - * - * RETURN: INTERRUPT_HANDLED or INTERRUPT_NOT_HANDLED - * - * DESCRIPTION: Clears the status bit for the requested event, calls the - * handler that previously registered for the event. - * - ******************************************************************************/ - -static UINT32 -AcpiEvFixedEventDispatch ( - UINT32 Event) -{ - - - ACPI_FUNCTION_ENTRY (); - - - /* Clear the status bit */ - - (void) AcpiSetRegister (AcpiGbl_FixedEventInfo[Event].StatusRegisterId, 1); - - /* - * Make sure we've got a handler. If not, report an error. - * The event is disabled to prevent further interrupts. - */ - if (NULL == AcpiGbl_FixedEventHandlers[Event].Handler) - { - (void) AcpiSetRegister (AcpiGbl_FixedEventInfo[Event].EnableRegisterId, 0); - - ACPI_ERROR ((AE_INFO, - "No installed handler for fixed event [%08X]", - Event)); - - return (ACPI_INTERRUPT_NOT_HANDLED); - } - - /* Invoke the Fixed Event handler */ - - return ((AcpiGbl_FixedEventHandlers[Event].Handler)( - AcpiGbl_FixedEventHandlers[Event].Context)); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/events/evgpe.c b/sys/contrib/dev/acpica-unix-20061109/events/evgpe.c deleted file mode 100644 index 2c9e61e590..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/events/evgpe.c +++ /dev/null @@ -1,850 +0,0 @@ -/****************************************************************************** - * - * Module Name: evgpe - General Purpose Event handling and dispatch - * $Revision: 1.67 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "acevents.h" -#include "acnamesp.h" - -#define _COMPONENT ACPI_EVENTS - ACPI_MODULE_NAME ("evgpe") - -/* Local prototypes */ - -static void ACPI_SYSTEM_XFACE -AcpiEvAsynchExecuteGpeMethod ( - void *Context); - - -/******************************************************************************* - * - * FUNCTION: AcpiEvSetGpeType - * - * PARAMETERS: GpeEventInfo - GPE to set - * Type - New type - * - * RETURN: Status - * - * DESCRIPTION: Sets the new type for the GPE (wake, run, or wake/run) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvSetGpeType ( - ACPI_GPE_EVENT_INFO *GpeEventInfo, - UINT8 Type) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (EvSetGpeType); - - - /* Validate type and update register enable masks */ - - switch (Type) - { - case ACPI_GPE_TYPE_WAKE: - case ACPI_GPE_TYPE_RUNTIME: - case ACPI_GPE_TYPE_WAKE_RUN: - break; - - default: - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Disable the GPE if currently enabled */ - - Status = AcpiEvDisableGpe (GpeEventInfo); - - /* Type was validated above */ - - GpeEventInfo->Flags &= ~ACPI_GPE_TYPE_MASK; /* Clear type bits */ - GpeEventInfo->Flags |= Type; /* Insert type */ - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvUpdateGpeEnableMasks - * - * PARAMETERS: GpeEventInfo - GPE to update - * Type - What to do: ACPI_GPE_DISABLE or - * ACPI_GPE_ENABLE - * - * RETURN: Status - * - * DESCRIPTION: Updates GPE register enable masks based on the GPE type - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvUpdateGpeEnableMasks ( - ACPI_GPE_EVENT_INFO *GpeEventInfo, - UINT8 Type) -{ - ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; - UINT8 RegisterBit; - - - ACPI_FUNCTION_TRACE (EvUpdateGpeEnableMasks); - - - GpeRegisterInfo = GpeEventInfo->RegisterInfo; - if (!GpeRegisterInfo) - { - return_ACPI_STATUS (AE_NOT_EXIST); - } - RegisterBit = (UINT8) - (1 << (GpeEventInfo->GpeNumber - GpeRegisterInfo->BaseGpeNumber)); - - /* 1) Disable case. Simply clear all enable bits */ - - if (Type == ACPI_GPE_DISABLE) - { - ACPI_CLEAR_BIT (GpeRegisterInfo->EnableForWake, RegisterBit); - ACPI_CLEAR_BIT (GpeRegisterInfo->EnableForRun, RegisterBit); - return_ACPI_STATUS (AE_OK); - } - - /* 2) Enable case. Set/Clear the appropriate enable bits */ - - switch (GpeEventInfo->Flags & ACPI_GPE_TYPE_MASK) - { - case ACPI_GPE_TYPE_WAKE: - ACPI_SET_BIT (GpeRegisterInfo->EnableForWake, RegisterBit); - ACPI_CLEAR_BIT (GpeRegisterInfo->EnableForRun, RegisterBit); - break; - - case ACPI_GPE_TYPE_RUNTIME: - ACPI_CLEAR_BIT (GpeRegisterInfo->EnableForWake, RegisterBit); - ACPI_SET_BIT (GpeRegisterInfo->EnableForRun, RegisterBit); - break; - - case ACPI_GPE_TYPE_WAKE_RUN: - ACPI_SET_BIT (GpeRegisterInfo->EnableForWake, RegisterBit); - ACPI_SET_BIT (GpeRegisterInfo->EnableForRun, RegisterBit); - break; - - default: - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvEnableGpe - * - * PARAMETERS: GpeEventInfo - GPE to enable - * WriteToHardware - Enable now, or just mark data structs - * (WAKE GPEs should be deferred) - * - * RETURN: Status - * - * DESCRIPTION: Enable a GPE based on the GPE type - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvEnableGpe ( - ACPI_GPE_EVENT_INFO *GpeEventInfo, - BOOLEAN WriteToHardware) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (EvEnableGpe); - - - /* Make sure HW enable masks are updated */ - - Status = AcpiEvUpdateGpeEnableMasks (GpeEventInfo, ACPI_GPE_ENABLE); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Mark wake-enabled or HW enable, or both */ - - switch (GpeEventInfo->Flags & ACPI_GPE_TYPE_MASK) - { - case ACPI_GPE_TYPE_WAKE: - - ACPI_SET_BIT (GpeEventInfo->Flags, ACPI_GPE_WAKE_ENABLED); - break; - - case ACPI_GPE_TYPE_WAKE_RUN: - - ACPI_SET_BIT (GpeEventInfo->Flags, ACPI_GPE_WAKE_ENABLED); - - /*lint -fallthrough */ - - case ACPI_GPE_TYPE_RUNTIME: - - ACPI_SET_BIT (GpeEventInfo->Flags, ACPI_GPE_RUN_ENABLED); - - if (WriteToHardware) - { - /* Clear the GPE (of stale events), then enable it */ - - Status = AcpiHwClearGpe (GpeEventInfo); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Enable the requested runtime GPE */ - - Status = AcpiHwWriteGpeEnableReg (GpeEventInfo); - } - break; - - default: - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvDisableGpe - * - * PARAMETERS: GpeEventInfo - GPE to disable - * - * RETURN: Status - * - * DESCRIPTION: Disable a GPE based on the GPE type - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvDisableGpe ( - ACPI_GPE_EVENT_INFO *GpeEventInfo) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (EvDisableGpe); - - - if (!(GpeEventInfo->Flags & ACPI_GPE_ENABLE_MASK)) - { - return_ACPI_STATUS (AE_OK); - } - - /* Make sure HW enable masks are updated */ - - Status = AcpiEvUpdateGpeEnableMasks (GpeEventInfo, ACPI_GPE_DISABLE); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Mark wake-disabled or HW disable, or both */ - - switch (GpeEventInfo->Flags & ACPI_GPE_TYPE_MASK) - { - case ACPI_GPE_TYPE_WAKE: - ACPI_CLEAR_BIT (GpeEventInfo->Flags, ACPI_GPE_WAKE_ENABLED); - break; - - case ACPI_GPE_TYPE_WAKE_RUN: - ACPI_CLEAR_BIT (GpeEventInfo->Flags, ACPI_GPE_WAKE_ENABLED); - - /*lint -fallthrough */ - - case ACPI_GPE_TYPE_RUNTIME: - - /* Disable the requested runtime GPE */ - - ACPI_CLEAR_BIT (GpeEventInfo->Flags, ACPI_GPE_RUN_ENABLED); - Status = AcpiHwWriteGpeEnableReg (GpeEventInfo); - break; - - default: - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvGetGpeEventInfo - * - * PARAMETERS: GpeDevice - Device node. NULL for GPE0/GPE1 - * GpeNumber - Raw GPE number - * - * RETURN: A GPE EventInfo struct. NULL if not a valid GPE - * - * DESCRIPTION: Returns the EventInfo struct associated with this GPE. - * Validates the GpeBlock and the GpeNumber - * - * Should be called only when the GPE lists are semaphore locked - * and not subject to change. - * - ******************************************************************************/ - -ACPI_GPE_EVENT_INFO * -AcpiEvGetGpeEventInfo ( - ACPI_HANDLE GpeDevice, - UINT32 GpeNumber) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_GPE_BLOCK_INFO *GpeBlock; - ACPI_NATIVE_UINT i; - - - ACPI_FUNCTION_ENTRY (); - - - /* A NULL GpeBlock means use the FADT-defined GPE block(s) */ - - if (!GpeDevice) - { - /* Examine GPE Block 0 and 1 (These blocks are permanent) */ - - for (i = 0; i < ACPI_MAX_GPE_BLOCKS; i++) - { - GpeBlock = AcpiGbl_GpeFadtBlocks[i]; - if (GpeBlock) - { - if ((GpeNumber >= GpeBlock->BlockBaseNumber) && - (GpeNumber < GpeBlock->BlockBaseNumber + - (GpeBlock->RegisterCount * 8))) - { - return (&GpeBlock->EventInfo[GpeNumber - - GpeBlock->BlockBaseNumber]); - } - } - } - - /* The GpeNumber was not in the range of either FADT GPE block */ - - return (NULL); - } - - /* A Non-NULL GpeDevice means this is a GPE Block Device */ - - ObjDesc = AcpiNsGetAttachedObject ((ACPI_NAMESPACE_NODE *) GpeDevice); - if (!ObjDesc || - !ObjDesc->Device.GpeBlock) - { - return (NULL); - } - - GpeBlock = ObjDesc->Device.GpeBlock; - - if ((GpeNumber >= GpeBlock->BlockBaseNumber) && - (GpeNumber < GpeBlock->BlockBaseNumber + (GpeBlock->RegisterCount * 8))) - { - return (&GpeBlock->EventInfo[GpeNumber - GpeBlock->BlockBaseNumber]); - } - - return (NULL); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvGpeDetect - * - * PARAMETERS: GpeXruptList - Interrupt block for this interrupt. - * Can have multiple GPE blocks attached. - * - * RETURN: INTERRUPT_HANDLED or INTERRUPT_NOT_HANDLED - * - * DESCRIPTION: Detect if any GP events have occurred. This function is - * executed at interrupt level. - * - ******************************************************************************/ - -UINT32 -AcpiEvGpeDetect ( - ACPI_GPE_XRUPT_INFO *GpeXruptList) -{ - ACPI_STATUS Status; - ACPI_GPE_BLOCK_INFO *GpeBlock; - ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; - UINT32 IntStatus = ACPI_INTERRUPT_NOT_HANDLED; - UINT8 EnabledStatusByte; - UINT32 StatusReg; - UINT32 EnableReg; - ACPI_CPU_FLAGS Flags; - ACPI_NATIVE_UINT i; - ACPI_NATIVE_UINT j; - - - ACPI_FUNCTION_NAME (EvGpeDetect); - - /* Check for the case where there are no GPEs */ - - if (!GpeXruptList) - { - return (IntStatus); - } - - /* - * We need to obtain the GPE lock for both the data structs and registers - * Note: Not necessary to obtain the hardware lock, since the GPE registers - * are owned by the GpeLock. - */ - Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); - - /* Examine all GPE blocks attached to this interrupt level */ - - GpeBlock = GpeXruptList->GpeBlockListHead; - while (GpeBlock) - { - /* - * Read all of the 8-bit GPE status and enable registers - * in this GPE block, saving all of them. - * Find all currently active GP events. - */ - for (i = 0; i < GpeBlock->RegisterCount; i++) - { - /* Get the next status/enable pair */ - - GpeRegisterInfo = &GpeBlock->RegisterInfo[i]; - - /* Read the Status Register */ - - Status = AcpiHwLowLevelRead (ACPI_GPE_REGISTER_WIDTH, &StatusReg, - &GpeRegisterInfo->StatusAddress); - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - - /* Read the Enable Register */ - - Status = AcpiHwLowLevelRead (ACPI_GPE_REGISTER_WIDTH, &EnableReg, - &GpeRegisterInfo->EnableAddress); - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - - ACPI_DEBUG_PRINT ((ACPI_DB_INTERRUPTS, - "Read GPE Register at GPE%X: Status=%02X, Enable=%02X\n", - GpeRegisterInfo->BaseGpeNumber, StatusReg, EnableReg)); - - /* Check if there is anything active at all in this register */ - - EnabledStatusByte = (UINT8) (StatusReg & EnableReg); - if (!EnabledStatusByte) - { - /* No active GPEs in this register, move on */ - - continue; - } - - /* Now look at the individual GPEs in this byte register */ - - for (j = 0; j < ACPI_GPE_REGISTER_WIDTH; j++) - { - /* Examine one GPE bit */ - - if (EnabledStatusByte & (1 << j)) - { - /* - * Found an active GPE. Dispatch the event to a handler - * or method. - */ - IntStatus |= AcpiEvGpeDispatch ( - &GpeBlock->EventInfo[(i * ACPI_GPE_REGISTER_WIDTH) + j], - (UINT32) j + GpeRegisterInfo->BaseGpeNumber); - } - } - } - - GpeBlock = GpeBlock->Next; - } - -UnlockAndExit: - - AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); - return (IntStatus); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvAsynchExecuteGpeMethod - * - * PARAMETERS: Context (GpeEventInfo) - Info for this GPE - * - * RETURN: None - * - * DESCRIPTION: Perform the actual execution of a GPE control method. This - * function is called from an invocation of AcpiOsExecute and - * therefore does NOT execute at interrupt level - so that - * the control method itself is not executed in the context of - * an interrupt handler. - * - ******************************************************************************/ - -static void ACPI_SYSTEM_XFACE -AcpiEvAsynchExecuteGpeMethod ( - void *Context) -{ - ACPI_GPE_EVENT_INFO *GpeEventInfo = (void *) Context; - ACPI_STATUS Status; - ACPI_GPE_EVENT_INFO LocalGpeEventInfo; - ACPI_EVALUATE_INFO *Info; - - - ACPI_FUNCTION_TRACE (EvAsynchExecuteGpeMethod); - - - Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); - if (ACPI_FAILURE (Status)) - { - return_VOID; - } - - /* Must revalidate the GpeNumber/GpeBlock */ - - if (!AcpiEvValidGpeEvent (GpeEventInfo)) - { - Status = AcpiUtReleaseMutex (ACPI_MTX_EVENTS); - return_VOID; - } - - /* Set the GPE flags for return to enabled state */ - - (void) AcpiEvEnableGpe (GpeEventInfo, FALSE); - - /* - * Take a snapshot of the GPE info for this level - we copy the - * info to prevent a race condition with RemoveHandler/RemoveBlock. - */ - ACPI_MEMCPY (&LocalGpeEventInfo, GpeEventInfo, - sizeof (ACPI_GPE_EVENT_INFO)); - - Status = AcpiUtReleaseMutex (ACPI_MTX_EVENTS); - if (ACPI_FAILURE (Status)) - { - return_VOID; - } - - /* - * Must check for control method type dispatch one more - * time to avoid race with EvGpeInstallHandler - */ - if ((LocalGpeEventInfo.Flags & ACPI_GPE_DISPATCH_MASK) == - ACPI_GPE_DISPATCH_METHOD) - { - /* Allocate the evaluation information block */ - - Info = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EVALUATE_INFO)); - if (!Info) - { - Status = AE_NO_MEMORY; - } - else - { - /* - * Invoke the GPE Method (_Lxx, _Exx) i.e., evaluate the _Lxx/_Exx - * control method that corresponds to this GPE - */ - Info->PrefixNode = LocalGpeEventInfo.Dispatch.MethodNode; - Info->Parameters = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT *, GpeEventInfo); - Info->ParameterType = ACPI_PARAM_GPE; - Info->Flags = ACPI_IGNORE_RETURN_VALUE; - - Status = AcpiNsEvaluate (Info); - ACPI_FREE (Info); - } - - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "while evaluating GPE method [%4.4s]", - AcpiUtGetNodeName (LocalGpeEventInfo.Dispatch.MethodNode))); - } - } - - if ((LocalGpeEventInfo.Flags & ACPI_GPE_XRUPT_TYPE_MASK) == - ACPI_GPE_LEVEL_TRIGGERED) - { - /* - * GPE is level-triggered, we clear the GPE status bit after - * handling the event. - */ - Status = AcpiHwClearGpe (&LocalGpeEventInfo); - if (ACPI_FAILURE (Status)) - { - return_VOID; - } - } - - /* Enable this GPE */ - - (void) AcpiHwWriteGpeEnableReg (&LocalGpeEventInfo); - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvGpeDispatch - * - * PARAMETERS: GpeEventInfo - Info for this GPE - * GpeNumber - Number relative to the parent GPE block - * - * RETURN: INTERRUPT_HANDLED or INTERRUPT_NOT_HANDLED - * - * DESCRIPTION: Dispatch a General Purpose Event to either a function (e.g. EC) - * or method (e.g. _Lxx/_Exx) handler. - * - * This function executes at interrupt level. - * - ******************************************************************************/ - -UINT32 -AcpiEvGpeDispatch ( - ACPI_GPE_EVENT_INFO *GpeEventInfo, - UINT32 GpeNumber) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (EvGpeDispatch); - - - AcpiGpeCount++; - - /* - * If edge-triggered, clear the GPE status bit now. Note that - * level-triggered events are cleared after the GPE is serviced. - */ - if ((GpeEventInfo->Flags & ACPI_GPE_XRUPT_TYPE_MASK) == - ACPI_GPE_EDGE_TRIGGERED) - { - Status = AcpiHwClearGpe (GpeEventInfo); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Unable to clear GPE[%2X]", GpeNumber)); - return_UINT32 (ACPI_INTERRUPT_NOT_HANDLED); - } - } - - if (!AcpiGbl_SystemAwakeAndRunning) - { - /* - * We just woke up because of a wake GPE. Disable any further GPEs - * until we are fully up and running (Only wake GPEs should be enabled - * at this time, but we just brute-force disable them all.) - * 1) We must disable this particular wake GPE so it won't fire again - * 2) We want to disable all wake GPEs, since we are now awake - */ - (void) AcpiHwDisableAllGpes (); - } - - /* - * Dispatch the GPE to either an installed handler, or the control method - * associated with this GPE (_Lxx or _Exx). If a handler exists, we invoke - * it and do not attempt to run the method. If there is neither a handler - * nor a method, we disable this GPE to prevent further such pointless - * events from firing. - */ - switch (GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK) - { - case ACPI_GPE_DISPATCH_HANDLER: - - /* - * Invoke the installed handler (at interrupt level) - * Ignore return status for now. TBD: leave GPE disabled on error? - */ - (void) GpeEventInfo->Dispatch.Handler->Address ( - GpeEventInfo->Dispatch.Handler->Context); - - /* It is now safe to clear level-triggered events. */ - - if ((GpeEventInfo->Flags & ACPI_GPE_XRUPT_TYPE_MASK) == - ACPI_GPE_LEVEL_TRIGGERED) - { - Status = AcpiHwClearGpe (GpeEventInfo); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Unable to clear GPE[%2X]", GpeNumber)); - return_UINT32 (ACPI_INTERRUPT_NOT_HANDLED); - } - } - break; - - case ACPI_GPE_DISPATCH_METHOD: - - /* - * Disable the GPE, so it doesn't keep firing before the method has a - * chance to run (it runs asynchronously with interrupts enabled). - */ - Status = AcpiEvDisableGpe (GpeEventInfo); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Unable to disable GPE[%2X]", GpeNumber)); - return_UINT32 (ACPI_INTERRUPT_NOT_HANDLED); - } - - /* - * Execute the method associated with the GPE - * NOTE: Level-triggered GPEs are cleared after the method completes. - */ - Status = AcpiOsExecute (OSL_GPE_HANDLER, - AcpiEvAsynchExecuteGpeMethod, GpeEventInfo); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Unable to queue handler for GPE[%2X] - event disabled", - GpeNumber)); - } - break; - - default: - - /* No handler or method to run! */ - - ACPI_ERROR ((AE_INFO, - "No handler or method for GPE[%2X], disabling event", - GpeNumber)); - - /* - * Disable the GPE. The GPE will remain disabled until the ACPI - * Core Subsystem is restarted, or a handler is installed. - */ - Status = AcpiEvDisableGpe (GpeEventInfo); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Unable to disable GPE[%2X]", GpeNumber)); - return_UINT32 (ACPI_INTERRUPT_NOT_HANDLED); - } - break; - } - - return_UINT32 (ACPI_INTERRUPT_HANDLED); -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/events/evgpeblk.c b/sys/contrib/dev/acpica-unix-20061109/events/evgpeblk.c deleted file mode 100644 index 29ff4de8ac..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/events/evgpeblk.c +++ /dev/null @@ -1,1375 +0,0 @@ -/****************************************************************************** - * - * Module Name: evgpeblk - GPE block creation and initialization. - * $Revision: 1.58 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "acevents.h" -#include "acnamesp.h" - -#define _COMPONENT ACPI_EVENTS - ACPI_MODULE_NAME ("evgpeblk") - -/* Local prototypes */ - -static ACPI_STATUS -AcpiEvSaveMethodInfo ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *ObjDesc, - void **ReturnValue); - -static ACPI_STATUS -AcpiEvMatchPrwAndGpe ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Info, - void **ReturnValue); - -static ACPI_GPE_XRUPT_INFO * -AcpiEvGetGpeXruptBlock ( - UINT32 InterruptNumber); - -static ACPI_STATUS -AcpiEvDeleteGpeXrupt ( - ACPI_GPE_XRUPT_INFO *GpeXrupt); - -static ACPI_STATUS -AcpiEvInstallGpeBlock ( - ACPI_GPE_BLOCK_INFO *GpeBlock, - UINT32 InterruptNumber); - -static ACPI_STATUS -AcpiEvCreateGpeInfoBlocks ( - ACPI_GPE_BLOCK_INFO *GpeBlock); - - -/******************************************************************************* - * - * FUNCTION: AcpiEvValidGpeEvent - * - * PARAMETERS: GpeEventInfo - Info for this GPE - * - * RETURN: TRUE if the GpeEvent is valid - * - * DESCRIPTION: Validate a GPE event. DO NOT CALL FROM INTERRUPT LEVEL. - * Should be called only when the GPE lists are semaphore locked - * and not subject to change. - * - ******************************************************************************/ - -BOOLEAN -AcpiEvValidGpeEvent ( - ACPI_GPE_EVENT_INFO *GpeEventInfo) -{ - ACPI_GPE_XRUPT_INFO *GpeXruptBlock; - ACPI_GPE_BLOCK_INFO *GpeBlock; - - - ACPI_FUNCTION_ENTRY (); - - - /* No need for spin lock since we are not changing any list elements */ - - /* Walk the GPE interrupt levels */ - - GpeXruptBlock = AcpiGbl_GpeXruptListHead; - while (GpeXruptBlock) - { - GpeBlock = GpeXruptBlock->GpeBlockListHead; - - /* Walk the GPE blocks on this interrupt level */ - - while (GpeBlock) - { - if ((&GpeBlock->EventInfo[0] <= GpeEventInfo) && - (&GpeBlock->EventInfo[((ACPI_SIZE) GpeBlock->RegisterCount) * 8] > GpeEventInfo)) - { - return (TRUE); - } - - GpeBlock = GpeBlock->Next; - } - - GpeXruptBlock = GpeXruptBlock->Next; - } - - return (FALSE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvWalkGpeList - * - * PARAMETERS: GpeWalkCallback - Routine called for each GPE block - * - * RETURN: Status - * - * DESCRIPTION: Walk the GPE lists. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvWalkGpeList ( - ACPI_GPE_CALLBACK GpeWalkCallback) -{ - ACPI_GPE_BLOCK_INFO *GpeBlock; - ACPI_GPE_XRUPT_INFO *GpeXruptInfo; - ACPI_STATUS Status = AE_OK; - ACPI_CPU_FLAGS Flags; - - - ACPI_FUNCTION_TRACE (EvWalkGpeList); - - - Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); - - /* Walk the interrupt level descriptor list */ - - GpeXruptInfo = AcpiGbl_GpeXruptListHead; - while (GpeXruptInfo) - { - /* Walk all Gpe Blocks attached to this interrupt level */ - - GpeBlock = GpeXruptInfo->GpeBlockListHead; - while (GpeBlock) - { - /* One callback per GPE block */ - - Status = GpeWalkCallback (GpeXruptInfo, GpeBlock); - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - - GpeBlock = GpeBlock->Next; - } - - GpeXruptInfo = GpeXruptInfo->Next; - } - -UnlockAndExit: - AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvDeleteGpeHandlers - * - * PARAMETERS: GpeXruptInfo - GPE Interrupt info - * GpeBlock - Gpe Block info - * - * RETURN: Status - * - * DESCRIPTION: Delete all Handler objects found in the GPE data structs. - * Used only prior to termination. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvDeleteGpeHandlers ( - ACPI_GPE_XRUPT_INFO *GpeXruptInfo, - ACPI_GPE_BLOCK_INFO *GpeBlock) -{ - ACPI_GPE_EVENT_INFO *GpeEventInfo; - ACPI_NATIVE_UINT i; - ACPI_NATIVE_UINT j; - - - ACPI_FUNCTION_TRACE (EvDeleteGpeHandlers); - - - /* Examine each GPE Register within the block */ - - for (i = 0; i < GpeBlock->RegisterCount; i++) - { - /* Now look at the individual GPEs in this byte register */ - - for (j = 0; j < ACPI_GPE_REGISTER_WIDTH; j++) - { - GpeEventInfo = &GpeBlock->EventInfo[(i * ACPI_GPE_REGISTER_WIDTH) + j]; - - if ((GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK) == - ACPI_GPE_DISPATCH_HANDLER) - { - ACPI_FREE (GpeEventInfo->Dispatch.Handler); - GpeEventInfo->Dispatch.Handler = NULL; - GpeEventInfo->Flags &= ~ACPI_GPE_DISPATCH_MASK; - } - } - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvSaveMethodInfo - * - * PARAMETERS: Callback from WalkNamespace - * - * RETURN: Status - * - * DESCRIPTION: Called from AcpiWalkNamespace. Expects each object to be a - * control method under the _GPE portion of the namespace. - * Extract the name and GPE type from the object, saving this - * information for quick lookup during GPE dispatch - * - * The name of each GPE control method is of the form: - * "_Lxx" or "_Exx" - * Where: - * L - means that the GPE is level triggered - * E - means that the GPE is edge triggered - * xx - is the GPE number [in HEX] - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiEvSaveMethodInfo ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *ObjDesc, - void **ReturnValue) -{ - ACPI_GPE_BLOCK_INFO *GpeBlock = (void *) ObjDesc; - ACPI_GPE_EVENT_INFO *GpeEventInfo; - UINT32 GpeNumber; - char Name[ACPI_NAME_SIZE + 1]; - UINT8 Type; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (EvSaveMethodInfo); - - - /* - * _Lxx and _Exx GPE method support - * - * 1) Extract the name from the object and convert to a string - */ - ACPI_MOVE_32_TO_32 ( - Name, &((ACPI_NAMESPACE_NODE *) ObjHandle)->Name.Integer); - Name[ACPI_NAME_SIZE] = 0; - - /* - * 2) Edge/Level determination is based on the 2nd character - * of the method name - * - * NOTE: Default GPE type is RUNTIME. May be changed later to WAKE - * if a _PRW object is found that points to this GPE. - */ - switch (Name[1]) - { - case 'L': - Type = ACPI_GPE_LEVEL_TRIGGERED; - break; - - case 'E': - Type = ACPI_GPE_EDGE_TRIGGERED; - break; - - default: - /* Unknown method type, just ignore it! */ - - ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, - "Ignoring unknown GPE method type: %s (name not of form _Lxx or _Exx)", - Name)); - return_ACPI_STATUS (AE_OK); - } - - /* Convert the last two characters of the name to the GPE Number */ - - GpeNumber = ACPI_STRTOUL (&Name[2], NULL, 16); - if (GpeNumber == ACPI_UINT32_MAX) - { - /* Conversion failed; invalid method, just ignore it */ - - ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, - "Could not extract GPE number from name: %s (name is not of form _Lxx or _Exx)", - Name)); - return_ACPI_STATUS (AE_OK); - } - - /* Ensure that we have a valid GPE number for this GPE block */ - - if ((GpeNumber < GpeBlock->BlockBaseNumber) || - (GpeNumber >= (GpeBlock->BlockBaseNumber + (GpeBlock->RegisterCount * 8)))) - { - /* - * Not valid for this GPE block, just ignore it - * However, it may be valid for a different GPE block, since GPE0 and GPE1 - * methods both appear under \_GPE. - */ - return_ACPI_STATUS (AE_OK); - } - - /* - * Now we can add this information to the GpeEventInfo block - * for use during dispatch of this GPE. Default type is RUNTIME, although - * this may change when the _PRW methods are executed later. - */ - GpeEventInfo = &GpeBlock->EventInfo[GpeNumber - GpeBlock->BlockBaseNumber]; - - GpeEventInfo->Flags = (UINT8) - (Type | ACPI_GPE_DISPATCH_METHOD | ACPI_GPE_TYPE_RUNTIME); - - GpeEventInfo->Dispatch.MethodNode = (ACPI_NAMESPACE_NODE *) ObjHandle; - - /* Update enable mask, but don't enable the HW GPE as of yet */ - - Status = AcpiEvEnableGpe (GpeEventInfo, FALSE); - - ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, - "Registered GPE method %s as GPE number 0x%.2X\n", - Name, GpeNumber)); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvMatchPrwAndGpe - * - * PARAMETERS: Callback from WalkNamespace - * - * RETURN: Status. NOTE: We ignore errors so that the _PRW walk is - * not aborted on a single _PRW failure. - * - * DESCRIPTION: Called from AcpiWalkNamespace. Expects each object to be a - * Device. Run the _PRW method. If present, extract the GPE - * number and mark the GPE as a WAKE GPE. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiEvMatchPrwAndGpe ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Info, - void **ReturnValue) -{ - ACPI_GPE_WALK_INFO *GpeInfo = (void *) Info; - ACPI_NAMESPACE_NODE *GpeDevice; - ACPI_GPE_BLOCK_INFO *GpeBlock; - ACPI_NAMESPACE_NODE *TargetGpeDevice; - ACPI_GPE_EVENT_INFO *GpeEventInfo; - ACPI_OPERAND_OBJECT *PkgDesc; - ACPI_OPERAND_OBJECT *ObjDesc; - UINT32 GpeNumber; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (EvMatchPrwAndGpe); - - - /* Check for a _PRW method under this device */ - - Status = AcpiUtEvaluateObject (ObjHandle, METHOD_NAME__PRW, - ACPI_BTYPE_PACKAGE, &PkgDesc); - if (ACPI_FAILURE (Status)) - { - /* Ignore all errors from _PRW, we don't want to abort the subsystem */ - - return_ACPI_STATUS (AE_OK); - } - - /* The returned _PRW package must have at least two elements */ - - if (PkgDesc->Package.Count < 2) - { - goto Cleanup; - } - - /* Extract pointers from the input context */ - - GpeDevice = GpeInfo->GpeDevice; - GpeBlock = GpeInfo->GpeBlock; - - /* - * The _PRW object must return a package, we are only interested - * in the first element - */ - ObjDesc = PkgDesc->Package.Elements[0]; - - if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_INTEGER) - { - /* Use FADT-defined GPE device (from definition of _PRW) */ - - TargetGpeDevice = AcpiGbl_FadtGpeDevice; - - /* Integer is the GPE number in the FADT described GPE blocks */ - - GpeNumber = (UINT32) ObjDesc->Integer.Value; - } - else if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_PACKAGE) - { - /* Package contains a GPE reference and GPE number within a GPE block */ - - if ((ObjDesc->Package.Count < 2) || - (ACPI_GET_OBJECT_TYPE (ObjDesc->Package.Elements[0]) != ACPI_TYPE_LOCAL_REFERENCE) || - (ACPI_GET_OBJECT_TYPE (ObjDesc->Package.Elements[1]) != ACPI_TYPE_INTEGER)) - { - goto Cleanup; - } - - /* Get GPE block reference and decode */ - - TargetGpeDevice = ObjDesc->Package.Elements[0]->Reference.Node; - GpeNumber = (UINT32) ObjDesc->Package.Elements[1]->Integer.Value; - } - else - { - /* Unknown type, just ignore it */ - - goto Cleanup; - } - - /* - * Is this GPE within this block? - * - * TRUE iff these conditions are true: - * 1) The GPE devices match. - * 2) The GPE index(number) is within the range of the Gpe Block - * associated with the GPE device. - */ - if ((GpeDevice == TargetGpeDevice) && - (GpeNumber >= GpeBlock->BlockBaseNumber) && - (GpeNumber < GpeBlock->BlockBaseNumber + (GpeBlock->RegisterCount * 8))) - { - GpeEventInfo = &GpeBlock->EventInfo[GpeNumber - GpeBlock->BlockBaseNumber]; - - /* Mark GPE for WAKE-ONLY but WAKE_DISABLED */ - - GpeEventInfo->Flags &= ~(ACPI_GPE_WAKE_ENABLED | ACPI_GPE_RUN_ENABLED); - - Status = AcpiEvSetGpeType (GpeEventInfo, ACPI_GPE_TYPE_WAKE); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - Status = AcpiEvUpdateGpeEnableMasks (GpeEventInfo, ACPI_GPE_DISABLE); - } - -Cleanup: - AcpiUtRemoveReference (PkgDesc); - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvGetGpeXruptBlock - * - * PARAMETERS: InterruptNumber - Interrupt for a GPE block - * - * RETURN: A GPE interrupt block - * - * DESCRIPTION: Get or Create a GPE interrupt block. There is one interrupt - * block per unique interrupt level used for GPEs. - * Should be called only when the GPE lists are semaphore locked - * and not subject to change. - * - ******************************************************************************/ - -static ACPI_GPE_XRUPT_INFO * -AcpiEvGetGpeXruptBlock ( - UINT32 InterruptNumber) -{ - ACPI_GPE_XRUPT_INFO *NextGpeXrupt; - ACPI_GPE_XRUPT_INFO *GpeXrupt; - ACPI_STATUS Status; - ACPI_CPU_FLAGS Flags; - - - ACPI_FUNCTION_TRACE (EvGetGpeXruptBlock); - - - /* No need for lock since we are not changing any list elements here */ - - NextGpeXrupt = AcpiGbl_GpeXruptListHead; - while (NextGpeXrupt) - { - if (NextGpeXrupt->InterruptNumber == InterruptNumber) - { - return_PTR (NextGpeXrupt); - } - - NextGpeXrupt = NextGpeXrupt->Next; - } - - /* Not found, must allocate a new xrupt descriptor */ - - GpeXrupt = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_GPE_XRUPT_INFO)); - if (!GpeXrupt) - { - return_PTR (NULL); - } - - GpeXrupt->InterruptNumber = InterruptNumber; - - /* Install new interrupt descriptor with spin lock */ - - Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); - if (AcpiGbl_GpeXruptListHead) - { - NextGpeXrupt = AcpiGbl_GpeXruptListHead; - while (NextGpeXrupt->Next) - { - NextGpeXrupt = NextGpeXrupt->Next; - } - - NextGpeXrupt->Next = GpeXrupt; - GpeXrupt->Previous = NextGpeXrupt; - } - else - { - AcpiGbl_GpeXruptListHead = GpeXrupt; - } - AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); - - /* Install new interrupt handler if not SCI_INT */ - - if (InterruptNumber != AcpiGbl_FADT.SciInterrupt) - { - Status = AcpiOsInstallInterruptHandler (InterruptNumber, - AcpiEvGpeXruptHandler, GpeXrupt); - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR ((AE_INFO, - "Could not install GPE interrupt handler at level 0x%X", - InterruptNumber)); - return_PTR (NULL); - } - } - - return_PTR (GpeXrupt); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvDeleteGpeXrupt - * - * PARAMETERS: GpeXrupt - A GPE interrupt info block - * - * RETURN: Status - * - * DESCRIPTION: Remove and free a GpeXrupt block. Remove an associated - * interrupt handler if not the SCI interrupt. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiEvDeleteGpeXrupt ( - ACPI_GPE_XRUPT_INFO *GpeXrupt) -{ - ACPI_STATUS Status; - ACPI_CPU_FLAGS Flags; - - - ACPI_FUNCTION_TRACE (EvDeleteGpeXrupt); - - - /* We never want to remove the SCI interrupt handler */ - - if (GpeXrupt->InterruptNumber == AcpiGbl_FADT.SciInterrupt) - { - GpeXrupt->GpeBlockListHead = NULL; - return_ACPI_STATUS (AE_OK); - } - - /* Disable this interrupt */ - - Status = AcpiOsRemoveInterruptHandler ( - GpeXrupt->InterruptNumber, AcpiEvGpeXruptHandler); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Unlink the interrupt block with lock */ - - Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); - if (GpeXrupt->Previous) - { - GpeXrupt->Previous->Next = GpeXrupt->Next; - } - - if (GpeXrupt->Next) - { - GpeXrupt->Next->Previous = GpeXrupt->Previous; - } - AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); - - /* Free the block */ - - ACPI_FREE (GpeXrupt); - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvInstallGpeBlock - * - * PARAMETERS: GpeBlock - New GPE block - * InterruptNumber - Xrupt to be associated with this GPE block - * - * RETURN: Status - * - * DESCRIPTION: Install new GPE block with mutex support - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiEvInstallGpeBlock ( - ACPI_GPE_BLOCK_INFO *GpeBlock, - UINT32 InterruptNumber) -{ - ACPI_GPE_BLOCK_INFO *NextGpeBlock; - ACPI_GPE_XRUPT_INFO *GpeXruptBlock; - ACPI_STATUS Status; - ACPI_CPU_FLAGS Flags; - - - ACPI_FUNCTION_TRACE (EvInstallGpeBlock); - - - Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - GpeXruptBlock = AcpiEvGetGpeXruptBlock (InterruptNumber); - if (!GpeXruptBlock) - { - Status = AE_NO_MEMORY; - goto UnlockAndExit; - } - - /* Install the new block at the end of the list with lock */ - - Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); - if (GpeXruptBlock->GpeBlockListHead) - { - NextGpeBlock = GpeXruptBlock->GpeBlockListHead; - while (NextGpeBlock->Next) - { - NextGpeBlock = NextGpeBlock->Next; - } - - NextGpeBlock->Next = GpeBlock; - GpeBlock->Previous = NextGpeBlock; - } - else - { - GpeXruptBlock->GpeBlockListHead = GpeBlock; - } - - GpeBlock->XruptBlock = GpeXruptBlock; - AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); - - -UnlockAndExit: - Status = AcpiUtReleaseMutex (ACPI_MTX_EVENTS); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvDeleteGpeBlock - * - * PARAMETERS: GpeBlock - Existing GPE block - * - * RETURN: Status - * - * DESCRIPTION: Remove a GPE block - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvDeleteGpeBlock ( - ACPI_GPE_BLOCK_INFO *GpeBlock) -{ - ACPI_STATUS Status; - ACPI_CPU_FLAGS Flags; - - - ACPI_FUNCTION_TRACE (EvInstallGpeBlock); - - - Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Disable all GPEs in this block */ - - Status = AcpiHwDisableGpeBlock (GpeBlock->XruptBlock, GpeBlock); - - if (!GpeBlock->Previous && !GpeBlock->Next) - { - /* This is the last GpeBlock on this interrupt */ - - Status = AcpiEvDeleteGpeXrupt (GpeBlock->XruptBlock); - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - } - else - { - /* Remove the block on this interrupt with lock */ - - Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); - if (GpeBlock->Previous) - { - GpeBlock->Previous->Next = GpeBlock->Next; - } - else - { - GpeBlock->XruptBlock->GpeBlockListHead = GpeBlock->Next; - } - - if (GpeBlock->Next) - { - GpeBlock->Next->Previous = GpeBlock->Previous; - } - AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); - } - - /* Free the GpeBlock */ - - ACPI_FREE (GpeBlock->RegisterInfo); - ACPI_FREE (GpeBlock->EventInfo); - ACPI_FREE (GpeBlock); - -UnlockAndExit: - Status = AcpiUtReleaseMutex (ACPI_MTX_EVENTS); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvCreateGpeInfoBlocks - * - * PARAMETERS: GpeBlock - New GPE block - * - * RETURN: Status - * - * DESCRIPTION: Create the RegisterInfo and EventInfo blocks for this GPE block - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiEvCreateGpeInfoBlocks ( - ACPI_GPE_BLOCK_INFO *GpeBlock) -{ - ACPI_GPE_REGISTER_INFO *GpeRegisterInfo = NULL; - ACPI_GPE_EVENT_INFO *GpeEventInfo = NULL; - ACPI_GPE_EVENT_INFO *ThisEvent; - ACPI_GPE_REGISTER_INFO *ThisRegister; - ACPI_NATIVE_UINT i; - ACPI_NATIVE_UINT j; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (EvCreateGpeInfoBlocks); - - - /* Allocate the GPE register information block */ - - GpeRegisterInfo = ACPI_ALLOCATE_ZEROED ( - (ACPI_SIZE) GpeBlock->RegisterCount * - sizeof (ACPI_GPE_REGISTER_INFO)); - if (!GpeRegisterInfo) - { - ACPI_ERROR ((AE_INFO, - "Could not allocate the GpeRegisterInfo table")); - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* - * Allocate the GPE EventInfo block. There are eight distinct GPEs - * per register. Initialization to zeros is sufficient. - */ - GpeEventInfo = ACPI_ALLOCATE_ZEROED ( - ((ACPI_SIZE) GpeBlock->RegisterCount * - ACPI_GPE_REGISTER_WIDTH) * - sizeof (ACPI_GPE_EVENT_INFO)); - if (!GpeEventInfo) - { - ACPI_ERROR ((AE_INFO, - "Could not allocate the GpeEventInfo table")); - Status = AE_NO_MEMORY; - goto ErrorExit; - } - - /* Save the new Info arrays in the GPE block */ - - GpeBlock->RegisterInfo = GpeRegisterInfo; - GpeBlock->EventInfo = GpeEventInfo; - - /* - * Initialize the GPE Register and Event structures. A goal of these - * tables is to hide the fact that there are two separate GPE register sets - * in a given GPE hardware block, the status registers occupy the first half, - * and the enable registers occupy the second half. - */ - ThisRegister = GpeRegisterInfo; - ThisEvent = GpeEventInfo; - - for (i = 0; i < GpeBlock->RegisterCount; i++) - { - /* Init the RegisterInfo for this GPE register (8 GPEs) */ - - ThisRegister->BaseGpeNumber = (UINT8) (GpeBlock->BlockBaseNumber + - (i * ACPI_GPE_REGISTER_WIDTH)); - - ACPI_STORE_ADDRESS (ThisRegister->StatusAddress.Address, - (ACPI_GET_ADDRESS (GpeBlock->BlockAddress.Address) - + i)); - - ACPI_STORE_ADDRESS (ThisRegister->EnableAddress.Address, - (ACPI_GET_ADDRESS (GpeBlock->BlockAddress.Address) - + i - + GpeBlock->RegisterCount)); - - ThisRegister->StatusAddress.SpaceId = GpeBlock->BlockAddress.SpaceId; - ThisRegister->EnableAddress.SpaceId = GpeBlock->BlockAddress.SpaceId; - ThisRegister->StatusAddress.BitWidth = ACPI_GPE_REGISTER_WIDTH; - ThisRegister->EnableAddress.BitWidth = ACPI_GPE_REGISTER_WIDTH; - ThisRegister->StatusAddress.BitOffset = ACPI_GPE_REGISTER_WIDTH; - ThisRegister->EnableAddress.BitOffset = ACPI_GPE_REGISTER_WIDTH; - - /* Init the EventInfo for each GPE within this register */ - - for (j = 0; j < ACPI_GPE_REGISTER_WIDTH; j++) - { - ThisEvent->GpeNumber = (UINT8) (ThisRegister->BaseGpeNumber + j); - ThisEvent->RegisterInfo = ThisRegister; - ThisEvent++; - } - - /* Disable all GPEs within this register */ - - Status = AcpiHwLowLevelWrite (ACPI_GPE_REGISTER_WIDTH, 0x00, - &ThisRegister->EnableAddress); - if (ACPI_FAILURE (Status)) - { - goto ErrorExit; - } - - /* Clear any pending GPE events within this register */ - - Status = AcpiHwLowLevelWrite (ACPI_GPE_REGISTER_WIDTH, 0xFF, - &ThisRegister->StatusAddress); - if (ACPI_FAILURE (Status)) - { - goto ErrorExit; - } - - ThisRegister++; - } - - return_ACPI_STATUS (AE_OK); - - -ErrorExit: - if (GpeRegisterInfo) - { - ACPI_FREE (GpeRegisterInfo); - } - if (GpeEventInfo) - { - ACPI_FREE (GpeEventInfo); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvCreateGpeBlock - * - * PARAMETERS: GpeDevice - Handle to the parent GPE block - * GpeBlockAddress - Address and SpaceID - * RegisterCount - Number of GPE register pairs in the block - * GpeBlockBaseNumber - Starting GPE number for the block - * InterruptNumber - H/W interrupt for the block - * ReturnGpeBlock - Where the new block descriptor is returned - * - * RETURN: Status - * - * DESCRIPTION: Create and Install a block of GPE registers. All GPEs within - * the block are disabled at exit. - * Note: Assumes namespace is locked. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvCreateGpeBlock ( - ACPI_NAMESPACE_NODE *GpeDevice, - ACPI_GENERIC_ADDRESS *GpeBlockAddress, - UINT32 RegisterCount, - UINT8 GpeBlockBaseNumber, - UINT32 InterruptNumber, - ACPI_GPE_BLOCK_INFO **ReturnGpeBlock) -{ - ACPI_STATUS Status; - ACPI_GPE_BLOCK_INFO *GpeBlock; - - - ACPI_FUNCTION_TRACE (EvCreateGpeBlock); - - - if (!RegisterCount) - { - return_ACPI_STATUS (AE_OK); - } - - /* Allocate a new GPE block */ - - GpeBlock = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_GPE_BLOCK_INFO)); - if (!GpeBlock) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Initialize the new GPE block */ - - GpeBlock->Node = GpeDevice; - GpeBlock->RegisterCount = RegisterCount; - GpeBlock->BlockBaseNumber = GpeBlockBaseNumber; - - ACPI_MEMCPY (&GpeBlock->BlockAddress, GpeBlockAddress, - sizeof (ACPI_GENERIC_ADDRESS)); - - /* - * Create the RegisterInfo and EventInfo sub-structures - * Note: disables and clears all GPEs in the block - */ - Status = AcpiEvCreateGpeInfoBlocks (GpeBlock); - if (ACPI_FAILURE (Status)) - { - ACPI_FREE (GpeBlock); - return_ACPI_STATUS (Status); - } - - /* Install the new block in the global lists */ - - Status = AcpiEvInstallGpeBlock (GpeBlock, InterruptNumber); - if (ACPI_FAILURE (Status)) - { - ACPI_FREE (GpeBlock); - return_ACPI_STATUS (Status); - } - - /* Find all GPE methods (_Lxx, _Exx) for this block */ - - Status = AcpiNsWalkNamespace (ACPI_TYPE_METHOD, GpeDevice, - ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK, - AcpiEvSaveMethodInfo, GpeBlock, NULL); - - /* Return the new block */ - - if (ReturnGpeBlock) - { - (*ReturnGpeBlock) = GpeBlock; - } - - ACPI_DEBUG_PRINT ((ACPI_DB_INIT, - "GPE %02X to %02X [%4.4s] %u regs on int 0x%X\n", - (UINT32) GpeBlock->BlockBaseNumber, - (UINT32) (GpeBlock->BlockBaseNumber + - ((GpeBlock->RegisterCount * ACPI_GPE_REGISTER_WIDTH) -1)), - GpeDevice->Name.Ascii, - GpeBlock->RegisterCount, - InterruptNumber)); - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvInitializeGpeBlock - * - * PARAMETERS: GpeDevice - Handle to the parent GPE block - * GpeBlock - Gpe Block info - * - * RETURN: Status - * - * DESCRIPTION: Initialize and enable a GPE block. First find and run any - * _PRT methods associated with the block, then enable the - * appropriate GPEs. - * Note: Assumes namespace is locked. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvInitializeGpeBlock ( - ACPI_NAMESPACE_NODE *GpeDevice, - ACPI_GPE_BLOCK_INFO *GpeBlock) -{ - ACPI_STATUS Status; - ACPI_GPE_EVENT_INFO *GpeEventInfo; - ACPI_GPE_WALK_INFO GpeInfo; - UINT32 WakeGpeCount; - UINT32 GpeEnabledCount; - ACPI_NATIVE_UINT i; - ACPI_NATIVE_UINT j; - - - ACPI_FUNCTION_TRACE (EvInitializeGpeBlock); - - - /* Ignore a null GPE block (e.g., if no GPE block 1 exists) */ - - if (!GpeBlock) - { - return_ACPI_STATUS (AE_OK); - } - - /* - * Runtime option: Should wake GPEs be enabled at runtime? The default - * is no, they should only be enabled just as the machine goes to sleep. - */ - if (AcpiGbl_LeaveWakeGpesDisabled) - { - /* - * Differentiate runtime vs wake GPEs, via the _PRW control methods. - * Each GPE that has one or more _PRWs that reference it is by - * definition a wake GPE and will not be enabled while the machine - * is running. - */ - GpeInfo.GpeBlock = GpeBlock; - GpeInfo.GpeDevice = GpeDevice; - - Status = AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK, - AcpiEvMatchPrwAndGpe, &GpeInfo, NULL); - } - - /* - * Enable all GPEs in this block that have these attributes: - * 1) are "runtime" or "run/wake" GPEs, and - * 2) have a corresponding _Lxx or _Exx method - * - * Any other GPEs within this block must be enabled via the AcpiEnableGpe() - * external interface. - */ - WakeGpeCount = 0; - GpeEnabledCount = 0; - - for (i = 0; i < GpeBlock->RegisterCount; i++) - { - for (j = 0; j < 8; j++) - { - /* Get the info block for this particular GPE */ - - GpeEventInfo = &GpeBlock->EventInfo[(i * ACPI_GPE_REGISTER_WIDTH) + j]; - - if (((GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK) == ACPI_GPE_DISPATCH_METHOD) && - (GpeEventInfo->Flags & ACPI_GPE_TYPE_RUNTIME)) - { - GpeEnabledCount++; - } - - if (GpeEventInfo->Flags & ACPI_GPE_TYPE_WAKE) - { - WakeGpeCount++; - } - } - } - - ACPI_DEBUG_PRINT ((ACPI_DB_INIT, - "Found %u Wake, Enabled %u Runtime GPEs in this block\n", - WakeGpeCount, GpeEnabledCount)); - - /* Enable all valid runtime GPEs found above */ - - Status = AcpiHwEnableRuntimeGpeBlock (NULL, GpeBlock); - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR ((AE_INFO, "Could not enable GPEs in GpeBlock %p", - GpeBlock)); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvGpeInitialize - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Initialize the GPE data structures - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvGpeInitialize ( - void) -{ - UINT32 RegisterCount0 = 0; - UINT32 RegisterCount1 = 0; - UINT32 GpeNumberMax = 0; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (EvGpeInitialize); - - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Initialize the GPE Block(s) defined in the FADT - * - * Why the GPE register block lengths are divided by 2: From the ACPI Spec, - * section "General-Purpose Event Registers", we have: - * - * "Each register block contains two registers of equal length - * GPEx_STS and GPEx_EN (where x is 0 or 1). The length of the - * GPE0_STS and GPE0_EN registers is equal to half the GPE0_LEN - * The length of the GPE1_STS and GPE1_EN registers is equal to - * half the GPE1_LEN. If a generic register block is not supported - * then its respective block pointer and block length values in the - * FADT table contain zeros. The GPE0_LEN and GPE1_LEN do not need - * to be the same size." - */ - - /* - * Determine the maximum GPE number for this machine. - * - * Note: both GPE0 and GPE1 are optional, and either can exist without - * the other. - * - * If EITHER the register length OR the block address are zero, then that - * particular block is not supported. - */ - if (AcpiGbl_FADT.Gpe0BlockLength && - ACPI_GET_ADDRESS (AcpiGbl_FADT.XGpe0Block.Address)) - { - /* GPE block 0 exists (has both length and address > 0) */ - - RegisterCount0 = (UINT16) (AcpiGbl_FADT.Gpe0BlockLength / 2); - - GpeNumberMax = (RegisterCount0 * ACPI_GPE_REGISTER_WIDTH) - 1; - - /* Install GPE Block 0 */ - - Status = AcpiEvCreateGpeBlock (AcpiGbl_FadtGpeDevice, - &AcpiGbl_FADT.XGpe0Block, RegisterCount0, 0, - AcpiGbl_FADT.SciInterrupt, &AcpiGbl_GpeFadtBlocks[0]); - - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Could not create GPE Block 0")); - } - } - - if (AcpiGbl_FADT.Gpe1BlockLength && - ACPI_GET_ADDRESS (AcpiGbl_FADT.XGpe1Block.Address)) - { - /* GPE block 1 exists (has both length and address > 0) */ - - RegisterCount1 = (UINT16) (AcpiGbl_FADT.Gpe1BlockLength / 2); - - /* Check for GPE0/GPE1 overlap (if both banks exist) */ - - if ((RegisterCount0) && - (GpeNumberMax >= AcpiGbl_FADT.Gpe1Base)) - { - ACPI_ERROR ((AE_INFO, - "GPE0 block (GPE 0 to %d) overlaps the GPE1 block (GPE %d to %d) - Ignoring GPE1", - GpeNumberMax, AcpiGbl_FADT.Gpe1Base, - AcpiGbl_FADT.Gpe1Base + - ((RegisterCount1 * ACPI_GPE_REGISTER_WIDTH) - 1))); - - /* Ignore GPE1 block by setting the register count to zero */ - - RegisterCount1 = 0; - } - else - { - /* Install GPE Block 1 */ - - Status = AcpiEvCreateGpeBlock (AcpiGbl_FadtGpeDevice, - &AcpiGbl_FADT.XGpe1Block, RegisterCount1, - AcpiGbl_FADT.Gpe1Base, - AcpiGbl_FADT.SciInterrupt, &AcpiGbl_GpeFadtBlocks[1]); - - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Could not create GPE Block 1")); - } - - /* - * GPE0 and GPE1 do not have to be contiguous in the GPE number - * space. However, GPE0 always starts at GPE number zero. - */ - GpeNumberMax = AcpiGbl_FADT.Gpe1Base + - ((RegisterCount1 * ACPI_GPE_REGISTER_WIDTH) - 1); - } - } - - /* Exit if there are no GPE registers */ - - if ((RegisterCount0 + RegisterCount1) == 0) - { - /* GPEs are not required by ACPI, this is OK */ - - ACPI_DEBUG_PRINT ((ACPI_DB_INIT, - "There are no GPE blocks defined in the FADT\n")); - Status = AE_OK; - goto Cleanup; - } - - /* Check for Max GPE number out-of-range */ - - if (GpeNumberMax > ACPI_GPE_MAX) - { - ACPI_ERROR ((AE_INFO, - "Maximum GPE number from FADT is too large: 0x%X", - GpeNumberMax)); - Status = AE_BAD_VALUE; - goto Cleanup; - } - -Cleanup: - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return_ACPI_STATUS (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/events/evmisc.c b/sys/contrib/dev/acpica-unix-20061109/events/evmisc.c deleted file mode 100644 index fd85640939..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/events/evmisc.c +++ /dev/null @@ -1,707 +0,0 @@ -/****************************************************************************** - * - * Module Name: evmisc - Miscellaneous event manager support functions - * $Revision: 1.99 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "acevents.h" -#include "acnamesp.h" -#include "acinterp.h" - -#define _COMPONENT ACPI_EVENTS - ACPI_MODULE_NAME ("evmisc") - - -/* Names for Notify() values, used for debug output */ - -#ifdef ACPI_DEBUG_OUTPUT -static const char *AcpiNotifyValueNames[] = -{ - "Bus Check", - "Device Check", - "Device Wake", - "Eject Request", - "Device Check Light", - "Frequency Mismatch", - "Bus Mode Mismatch", - "Power Fault" -}; -#endif - -/* Pointer to FACS needed for the Global Lock */ - -static ACPI_TABLE_FACS *Facs = NULL; - -/* Local prototypes */ - -static void ACPI_SYSTEM_XFACE -AcpiEvNotifyDispatch ( - void *Context); - -static UINT32 -AcpiEvGlobalLockHandler ( - void *Context); - - -/******************************************************************************* - * - * FUNCTION: AcpiEvIsNotifyObject - * - * PARAMETERS: Node - Node to check - * - * RETURN: TRUE if notifies allowed on this object - * - * DESCRIPTION: Check type of node for a object that supports notifies. - * - * TBD: This could be replaced by a flag bit in the node. - * - ******************************************************************************/ - -BOOLEAN -AcpiEvIsNotifyObject ( - ACPI_NAMESPACE_NODE *Node) -{ - switch (Node->Type) - { - case ACPI_TYPE_DEVICE: - case ACPI_TYPE_PROCESSOR: - case ACPI_TYPE_POWER: - case ACPI_TYPE_THERMAL: - /* - * These are the ONLY objects that can receive ACPI notifications - */ - return (TRUE); - - default: - return (FALSE); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvQueueNotifyRequest - * - * PARAMETERS: Node - NS node for the notified object - * NotifyValue - Value from the Notify() request - * - * RETURN: Status - * - * DESCRIPTION: Dispatch a device notification event to a previously - * installed handler. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvQueueNotifyRequest ( - ACPI_NAMESPACE_NODE *Node, - UINT32 NotifyValue) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *HandlerObj = NULL; - ACPI_GENERIC_STATE *NotifyInfo; - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_NAME (EvQueueNotifyRequest); - - - /* - * For value 3 (Ejection Request), some device method may need to be run. - * For value 2 (Device Wake) if _PRW exists, the _PS0 method may need - * to be run. - * For value 0x80 (Status Change) on the power button or sleep button, - * initiate soft-off or sleep operation? - */ - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Dispatching Notify(%X) on node %p\n", NotifyValue, Node)); - - if (NotifyValue <= 7) - { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Notify value: %s\n", - AcpiNotifyValueNames[NotifyValue])); - } - else - { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Notify value: 0x%2.2X **Device Specific**\n", - NotifyValue)); - } - - /* Get the notify object attached to the NS Node */ - - ObjDesc = AcpiNsGetAttachedObject (Node); - if (ObjDesc) - { - /* We have the notify object, Get the right handler */ - - switch (Node->Type) - { - case ACPI_TYPE_DEVICE: - case ACPI_TYPE_THERMAL: - case ACPI_TYPE_PROCESSOR: - case ACPI_TYPE_POWER: - - if (NotifyValue <= ACPI_MAX_SYS_NOTIFY) - { - HandlerObj = ObjDesc->CommonNotify.SystemNotify; - } - else - { - HandlerObj = ObjDesc->CommonNotify.DeviceNotify; - } - break; - - default: - /* All other types are not supported */ - return (AE_TYPE); - } - } - - /* If there is any handler to run, schedule the dispatcher */ - - if ((AcpiGbl_SystemNotify.Handler && (NotifyValue <= ACPI_MAX_SYS_NOTIFY)) || - (AcpiGbl_DeviceNotify.Handler && (NotifyValue > ACPI_MAX_SYS_NOTIFY)) || - HandlerObj) - { - NotifyInfo = AcpiUtCreateGenericState (); - if (!NotifyInfo) - { - return (AE_NO_MEMORY); - } - - NotifyInfo->Common.DescriptorType = ACPI_DESC_TYPE_STATE_NOTIFY; - NotifyInfo->Notify.Node = Node; - NotifyInfo->Notify.Value = (UINT16) NotifyValue; - NotifyInfo->Notify.HandlerObj = HandlerObj; - - Status = AcpiOsExecute ( - OSL_NOTIFY_HANDLER, AcpiEvNotifyDispatch, NotifyInfo); - if (ACPI_FAILURE (Status)) - { - AcpiUtDeleteGenericState (NotifyInfo); - } - } - - if (!HandlerObj) - { - /* - * There is no per-device notify handler for this device. - * This may or may not be a problem. - */ - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "No notify handler for Notify(%4.4s, %X) node %p\n", - AcpiUtGetNodeName (Node), NotifyValue, Node)); - } - - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvNotifyDispatch - * - * PARAMETERS: Context - To be passed to the notify handler - * - * RETURN: None. - * - * DESCRIPTION: Dispatch a device notification event to a previously - * installed handler. - * - ******************************************************************************/ - -static void ACPI_SYSTEM_XFACE -AcpiEvNotifyDispatch ( - void *Context) -{ - ACPI_GENERIC_STATE *NotifyInfo = (ACPI_GENERIC_STATE *) Context; - ACPI_NOTIFY_HANDLER GlobalHandler = NULL; - void *GlobalContext = NULL; - ACPI_OPERAND_OBJECT *HandlerObj; - - - ACPI_FUNCTION_ENTRY (); - - - /* - * We will invoke a global notify handler if installed. - * This is done _before_ we invoke the per-device handler attached - * to the device. - */ - if (NotifyInfo->Notify.Value <= ACPI_MAX_SYS_NOTIFY) - { - /* Global system notification handler */ - - if (AcpiGbl_SystemNotify.Handler) - { - GlobalHandler = AcpiGbl_SystemNotify.Handler; - GlobalContext = AcpiGbl_SystemNotify.Context; - } - } - else - { - /* Global driver notification handler */ - - if (AcpiGbl_DeviceNotify.Handler) - { - GlobalHandler = AcpiGbl_DeviceNotify.Handler; - GlobalContext = AcpiGbl_DeviceNotify.Context; - } - } - - /* Invoke the system handler first, if present */ - - if (GlobalHandler) - { - GlobalHandler (NotifyInfo->Notify.Node, NotifyInfo->Notify.Value, - GlobalContext); - } - - /* Now invoke the per-device handler, if present */ - - HandlerObj = NotifyInfo->Notify.HandlerObj; - if (HandlerObj) - { - HandlerObj->Notify.Handler (NotifyInfo->Notify.Node, - NotifyInfo->Notify.Value, - HandlerObj->Notify.Context); - } - - /* All done with the info object */ - - AcpiUtDeleteGenericState (NotifyInfo); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvGlobalLockHandler - * - * PARAMETERS: Context - From thread interface, not used - * - * RETURN: ACPI_INTERRUPT_HANDLED - * - * DESCRIPTION: Invoked directly from the SCI handler when a global lock - * release interrupt occurs. Attempt to acquire the global lock, - * if successful, signal the thread waiting for the lock. - * - * NOTE: Assumes that the semaphore can be signaled from interrupt level. If - * this is not possible for some reason, a separate thread will have to be - * scheduled to do this. - * - ******************************************************************************/ - -static UINT32 -AcpiEvGlobalLockHandler ( - void *Context) -{ - BOOLEAN Acquired = FALSE; - ACPI_STATUS Status; - - - /* - * Attempt to get the lock. - * - * If we don't get it now, it will be marked pending and we will - * take another interrupt when it becomes free. - */ - ACPI_ACQUIRE_GLOBAL_LOCK (Facs, Acquired); - if (Acquired) - { - /* Got the lock, now wake the thread waiting for it */ - - AcpiGbl_GlobalLockAcquired = TRUE; - - /* Send a unit to the semaphore */ - - Status = AcpiOsSignalSemaphore (AcpiGbl_GlobalLockSemaphore, 1); - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR ((AE_INFO, "Could not signal Global Lock semaphore")); - } - } - - return (ACPI_INTERRUPT_HANDLED); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvInitGlobalLockHandler - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Install a handler for the global lock release event - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvInitGlobalLockHandler ( - void) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (EvInitGlobalLockHandler); - - - Status = AcpiGetTableByIndex (ACPI_TABLE_INDEX_FACS, (ACPI_TABLE_HEADER **) &Facs); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - AcpiGbl_GlobalLockPresent = TRUE; - Status = AcpiInstallFixedEventHandler (ACPI_EVENT_GLOBAL, - AcpiEvGlobalLockHandler, NULL); - - /* - * If the global lock does not exist on this platform, the attempt - * to enable GBL_STATUS will fail (the GBL_ENABLE bit will not stick) - * Map to AE_OK, but mark global lock as not present. - * Any attempt to actually use the global lock will be flagged - * with an error. - */ - if (Status == AE_NO_HARDWARE_RESPONSE) - { - ACPI_ERROR ((AE_INFO, - "No response from Global Lock hardware, disabling lock")); - - AcpiGbl_GlobalLockPresent = FALSE; - Status = AE_OK; - } - - return_ACPI_STATUS (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiEvAcquireGlobalLock - * - * PARAMETERS: Timeout - Max time to wait for the lock, in millisec. - * - * RETURN: Status - * - * DESCRIPTION: Attempt to gain ownership of the Global Lock. - * - * MUTEX: Interpreter must be locked - * - * Note: The original implementation allowed multiple threads to "acquire" the - * Global Lock, and the OS would hold the lock until the last thread had - * released it. However, this could potentially starve the BIOS out of the - * lock, especially in the case where there is a tight handshake between the - * Embedded Controller driver and the BIOS. Therefore, this implementation - * allows only one thread to acquire the HW Global Lock at a time, and makes - * the global lock appear as a standard mutex on the OS side. - * - *****************************************************************************/ - -ACPI_STATUS -AcpiEvAcquireGlobalLock ( - UINT16 Timeout) -{ - ACPI_STATUS Status = AE_OK; - BOOLEAN Acquired = FALSE; - - - ACPI_FUNCTION_TRACE (EvAcquireGlobalLock); - - - /* - * Only one thread can acquire the GL at a time, the GlobalLockMutex - * enforces this. This interface releases the interpreter if we must wait. - */ - Status = AcpiExSystemWaitMutex (AcpiGbl_GlobalLockMutex, Timeout); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Make sure that a global lock actually exists. If not, just treat - * the lock as a standard mutex. - */ - if (!AcpiGbl_GlobalLockPresent) - { - AcpiGbl_GlobalLockAcquired = TRUE; - return_ACPI_STATUS (AE_OK); - } - - /* Attempt to acquire the actual hardware lock */ - - ACPI_ACQUIRE_GLOBAL_LOCK (Facs, Acquired); - if (Acquired) - { - /* We got the lock */ - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Acquired hardware Global Lock\n")); - - AcpiGbl_GlobalLockAcquired = TRUE; - return_ACPI_STATUS (AE_OK); - } - - /* - * Did not get the lock. The pending bit was set above, and we must now - * wait until we get the global lock released interrupt. - */ - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Waiting for hardware Global Lock\n")); - - /* - * Wait for handshake with the global lock interrupt handler. - * This interface releases the interpreter if we must wait. - */ - Status = AcpiExSystemWaitSemaphore (AcpiGbl_GlobalLockSemaphore, - ACPI_WAIT_FOREVER); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvReleaseGlobalLock - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Releases ownership of the Global Lock. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvReleaseGlobalLock ( - void) -{ - BOOLEAN Pending = FALSE; - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE (EvReleaseGlobalLock); - - - /* Lock must be already acquired */ - - if (!AcpiGbl_GlobalLockAcquired) - { - ACPI_WARNING ((AE_INFO, - "Cannot release the ACPI Global Lock, it has not been acquired")); - return_ACPI_STATUS (AE_NOT_ACQUIRED); - } - - if (AcpiGbl_GlobalLockPresent) - { - /* Allow any thread to release the lock */ - - ACPI_RELEASE_GLOBAL_LOCK (Facs, Pending); - - /* - * If the pending bit was set, we must write GBL_RLS to the control - * register - */ - if (Pending) - { - Status = AcpiSetRegister ( - ACPI_BITREG_GLOBAL_LOCK_RELEASE, 1); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Released hardware Global Lock\n")); - } - - AcpiGbl_GlobalLockAcquired = FALSE; - - /* Release the local GL mutex */ - - AcpiOsReleaseMutex (AcpiGbl_GlobalLockMutex); - return_ACPI_STATUS (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiEvTerminate - * - * PARAMETERS: none - * - * RETURN: none - * - * DESCRIPTION: Disable events and free memory allocated for table storage. - * - ******************************************************************************/ - -void -AcpiEvTerminate ( - void) -{ - ACPI_NATIVE_UINT i; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (EvTerminate); - - - if (AcpiGbl_EventsInitialized) - { - /* - * Disable all event-related functionality. - * In all cases, on error, print a message but obviously we don't abort. - */ - - /* Disable all fixed events */ - - for (i = 0; i < ACPI_NUM_FIXED_EVENTS; i++) - { - Status = AcpiDisableEvent ((UINT32) i, 0); - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR ((AE_INFO, - "Could not disable fixed event %d", (UINT32) i)); - } - } - - /* Disable all GPEs in all GPE blocks */ - - Status = AcpiEvWalkGpeList (AcpiHwDisableGpeBlock); - - /* Remove SCI handler */ - - Status = AcpiEvRemoveSciHandler (); - if (ACPI_FAILURE(Status)) - { - ACPI_ERROR ((AE_INFO, - "Could not remove SCI handler")); - } - } - - /* Deallocate all handler objects installed within GPE info structs */ - - Status = AcpiEvWalkGpeList (AcpiEvDeleteGpeHandlers); - - /* Return to original mode if necessary */ - - if (AcpiGbl_OriginalMode == ACPI_SYS_MODE_LEGACY) - { - Status = AcpiDisable (); - if (ACPI_FAILURE (Status)) - { - ACPI_WARNING ((AE_INFO, "AcpiDisable failed")); - } - } - return_VOID; -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/events/evregion.c b/sys/contrib/dev/acpica-unix-20061109/events/evregion.c deleted file mode 100644 index bd77fde796..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/events/evregion.c +++ /dev/null @@ -1,1232 +0,0 @@ -/****************************************************************************** - * - * Module Name: evregion - ACPI AddressSpace (OpRegion) handler dispatch - * $Revision: 1.167 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __EVREGION_C__ - -#include "acpi.h" -#include "acevents.h" -#include "acnamesp.h" -#include "acinterp.h" - -#define _COMPONENT ACPI_EVENTS - ACPI_MODULE_NAME ("evregion") - -#define ACPI_NUM_DEFAULT_SPACES 4 - -static UINT8 AcpiGbl_DefaultAddressSpaces[ACPI_NUM_DEFAULT_SPACES] = -{ - ACPI_ADR_SPACE_SYSTEM_MEMORY, - ACPI_ADR_SPACE_SYSTEM_IO, - ACPI_ADR_SPACE_PCI_CONFIG, - ACPI_ADR_SPACE_DATA_TABLE -}; - -/* Local prototypes */ - -static ACPI_STATUS -AcpiEvRegRun ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue); - -static ACPI_STATUS -AcpiEvInstallHandler ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue); - - -/******************************************************************************* - * - * FUNCTION: AcpiEvInstallRegionHandlers - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Installs the core subsystem default address space handlers. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvInstallRegionHandlers ( - void) -{ - ACPI_STATUS Status; - ACPI_NATIVE_UINT i; - - - ACPI_FUNCTION_TRACE (EvInstallRegionHandlers); - - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * All address spaces (PCI Config, EC, SMBus) are scope dependent - * and registration must occur for a specific device. - * - * In the case of the system memory and IO address spaces there is currently - * no device associated with the address space. For these we use the root. - * - * We install the default PCI config space handler at the root so - * that this space is immediately available even though the we have - * not enumerated all the PCI Root Buses yet. This is to conform - * to the ACPI specification which states that the PCI config - * space must be always available -- even though we are nowhere - * near ready to find the PCI root buses at this point. - * - * NOTE: We ignore AE_ALREADY_EXISTS because this means that a handler - * has already been installed (via AcpiInstallAddressSpaceHandler). - * Similar for AE_SAME_HANDLER. - */ - for (i = 0; i < ACPI_NUM_DEFAULT_SPACES; i++) - { - Status = AcpiEvInstallSpaceHandler (AcpiGbl_RootNode, - AcpiGbl_DefaultAddressSpaces[i], - ACPI_DEFAULT_HANDLER, NULL, NULL); - switch (Status) - { - case AE_OK: - case AE_SAME_HANDLER: - case AE_ALREADY_EXISTS: - - /* These exceptions are all OK */ - - Status = AE_OK; - break; - - default: - - goto UnlockAndExit; - } - } - -UnlockAndExit: - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvInitializeOpRegions - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Execute _REG methods for all Operation Regions that have - * an installed default region handler. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvInitializeOpRegions ( - void) -{ - ACPI_STATUS Status; - ACPI_NATIVE_UINT i; - - - ACPI_FUNCTION_TRACE (EvInitializeOpRegions); - - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Run the _REG methods for OpRegions in each default address space - */ - for (i = 0; i < ACPI_NUM_DEFAULT_SPACES; i++) - { - /* TBD: Make sure handler is the DEFAULT handler, otherwise - * _REG will have already been run. - */ - Status = AcpiEvExecuteRegMethods (AcpiGbl_RootNode, - AcpiGbl_DefaultAddressSpaces[i]); - } - - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvExecuteRegMethod - * - * PARAMETERS: RegionObj - Region object - * Function - Passed to _REG: On (1) or Off (0) - * - * RETURN: Status - * - * DESCRIPTION: Execute _REG method for a region - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvExecuteRegMethod ( - ACPI_OPERAND_OBJECT *RegionObj, - UINT32 Function) -{ - ACPI_EVALUATE_INFO *Info; - ACPI_OPERAND_OBJECT *Args[3]; - ACPI_OPERAND_OBJECT *RegionObj2; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (EvExecuteRegMethod); - - - RegionObj2 = AcpiNsGetSecondaryObject (RegionObj); - if (!RegionObj2) - { - return_ACPI_STATUS (AE_NOT_EXIST); - } - - if (RegionObj2->Extra.Method_REG == NULL) - { - return_ACPI_STATUS (AE_OK); - } - - /* Allocate and initialize the evaluation information block */ - - Info = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EVALUATE_INFO)); - if (!Info) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - Info->PrefixNode = RegionObj2->Extra.Method_REG; - Info->Pathname = NULL; - Info->Parameters = Args; - Info->ParameterType = ACPI_PARAM_ARGS; - Info->Flags = ACPI_IGNORE_RETURN_VALUE; - - /* - * The _REG method has two arguments: - * - * Arg0 - Integer: - * Operation region space ID Same value as RegionObj->Region.SpaceId - * - * Arg1 - Integer: - * connection status 1 for connecting the handler, 0 for disconnecting - * the handler (Passed as a parameter) - */ - Args[0] = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); - if (!Args[0]) - { - Status = AE_NO_MEMORY; - goto Cleanup1; - } - - Args[1] = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); - if (!Args[1]) - { - Status = AE_NO_MEMORY; - goto Cleanup2; - } - - /* Setup the parameter objects */ - - Args[0]->Integer.Value = RegionObj->Region.SpaceId; - Args[1]->Integer.Value = Function; - Args[2] = NULL; - - /* Execute the method, no return value */ - - ACPI_DEBUG_EXEC ( - AcpiUtDisplayInitPathname (ACPI_TYPE_METHOD, Info->PrefixNode, NULL)); - - Status = AcpiNsEvaluate (Info); - AcpiUtRemoveReference (Args[1]); - -Cleanup2: - AcpiUtRemoveReference (Args[0]); - -Cleanup1: - ACPI_FREE (Info); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvAddressSpaceDispatch - * - * PARAMETERS: RegionObj - Internal region object - * Function - Read or Write operation - * Address - Where in the space to read or write - * BitWidth - Field width in bits (8, 16, 32, or 64) - * Value - Pointer to in or out value, must be - * full 64-bit ACPI_INTEGER - * - * RETURN: Status - * - * DESCRIPTION: Dispatch an address space or operation region access to - * a previously installed handler. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvAddressSpaceDispatch ( - ACPI_OPERAND_OBJECT *RegionObj, - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - ACPI_INTEGER *Value) -{ - ACPI_STATUS Status; - ACPI_ADR_SPACE_HANDLER Handler; - ACPI_ADR_SPACE_SETUP RegionSetup; - ACPI_OPERAND_OBJECT *HandlerDesc; - ACPI_OPERAND_OBJECT *RegionObj2; - void *RegionContext = NULL; - - - ACPI_FUNCTION_TRACE (EvAddressSpaceDispatch); - - - RegionObj2 = AcpiNsGetSecondaryObject (RegionObj); - if (!RegionObj2) - { - return_ACPI_STATUS (AE_NOT_EXIST); - } - - /* Ensure that there is a handler associated with this region */ - - HandlerDesc = RegionObj->Region.Handler; - if (!HandlerDesc) - { - ACPI_ERROR ((AE_INFO, - "No handler for Region [%4.4s] (%p) [%s]", - AcpiUtGetNodeName (RegionObj->Region.Node), - RegionObj, AcpiUtGetRegionName (RegionObj->Region.SpaceId))); - - return_ACPI_STATUS (AE_NOT_EXIST); - } - - /* - * It may be the case that the region has never been initialized - * Some types of regions require special init code - */ - if (!(RegionObj->Region.Flags & AOPOBJ_SETUP_COMPLETE)) - { - /* - * This region has not been initialized yet, do it - */ - RegionSetup = HandlerDesc->AddressSpace.Setup; - if (!RegionSetup) - { - /* No initialization routine, exit with error */ - - ACPI_ERROR ((AE_INFO, - "No init routine for region(%p) [%s]", - RegionObj, AcpiUtGetRegionName (RegionObj->Region.SpaceId))); - return_ACPI_STATUS (AE_NOT_EXIST); - } - - /* - * We must exit the interpreter because the region - * setup will potentially execute control methods - * (e.g., _REG method for this region) - */ - AcpiExRelinquishInterpreter (); - - Status = RegionSetup (RegionObj, ACPI_REGION_ACTIVATE, - HandlerDesc->AddressSpace.Context, &RegionContext); - - /* Re-enter the interpreter */ - - AcpiExReacquireInterpreter (); - - /* Check for failure of the Region Setup */ - - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "During region initialization: [%s]", - AcpiUtGetRegionName (RegionObj->Region.SpaceId))); - return_ACPI_STATUS (Status); - } - - /* - * Region initialization may have been completed by RegionSetup - */ - if (!(RegionObj->Region.Flags & AOPOBJ_SETUP_COMPLETE)) - { - RegionObj->Region.Flags |= AOPOBJ_SETUP_COMPLETE; - - if (RegionObj2->Extra.RegionContext) - { - /* The handler for this region was already installed */ - - ACPI_FREE (RegionContext); - } - else - { - /* - * Save the returned context for use in all accesses to - * this particular region - */ - RegionObj2->Extra.RegionContext = RegionContext; - } - } - } - - /* We have everything we need, we can invoke the address space handler */ - - Handler = HandlerDesc->AddressSpace.Handler; - - ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, - "Handler %p (@%p) Address %8.8X%8.8X [%s]\n", - &RegionObj->Region.Handler->AddressSpace, Handler, - ACPI_FORMAT_UINT64 (Address), - AcpiUtGetRegionName (RegionObj->Region.SpaceId))); - - if (!(HandlerDesc->AddressSpace.HandlerFlags & - ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) - { - /* - * For handlers other than the default (supplied) handlers, we must - * exit the interpreter because the handler *might* block -- we don't - * know what it will do, so we can't hold the lock on the intepreter. - */ - AcpiExRelinquishInterpreter(); - } - - /* Call the handler */ - - Status = Handler (Function, Address, BitWidth, Value, - HandlerDesc->AddressSpace.Context, RegionObj2->Extra.RegionContext); - - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, "Returned by Handler for [%s]", - AcpiUtGetRegionName (RegionObj->Region.SpaceId))); - } - - if (!(HandlerDesc->AddressSpace.HandlerFlags & - ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) - { - /* - * We just returned from a non-default handler, we must re-enter the - * interpreter - */ - AcpiExReacquireInterpreter (); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvDetachRegion - * - * PARAMETERS: RegionObj - Region Object - * AcpiNsIsLocked - Namespace Region Already Locked? - * - * RETURN: None - * - * DESCRIPTION: Break the association between the handler and the region - * this is a two way association. - * - ******************************************************************************/ - -void -AcpiEvDetachRegion( - ACPI_OPERAND_OBJECT *RegionObj, - BOOLEAN AcpiNsIsLocked) -{ - ACPI_OPERAND_OBJECT *HandlerObj; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT **LastObjPtr; - ACPI_ADR_SPACE_SETUP RegionSetup; - void **RegionContext; - ACPI_OPERAND_OBJECT *RegionObj2; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (EvDetachRegion); - - - RegionObj2 = AcpiNsGetSecondaryObject (RegionObj); - if (!RegionObj2) - { - return_VOID; - } - RegionContext = &RegionObj2->Extra.RegionContext; - - /* Get the address handler from the region object */ - - HandlerObj = RegionObj->Region.Handler; - if (!HandlerObj) - { - /* This region has no handler, all done */ - - return_VOID; - } - - /* Find this region in the handler's list */ - - ObjDesc = HandlerObj->AddressSpace.RegionList; - LastObjPtr = &HandlerObj->AddressSpace.RegionList; - - while (ObjDesc) - { - /* Is this the correct Region? */ - - if (ObjDesc == RegionObj) - { - ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, - "Removing Region %p from address handler %p\n", - RegionObj, HandlerObj)); - - /* This is it, remove it from the handler's list */ - - *LastObjPtr = ObjDesc->Region.Next; - ObjDesc->Region.Next = NULL; /* Must clear field */ - - if (AcpiNsIsLocked) - { - Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return_VOID; - } - } - - /* Now stop region accesses by executing the _REG method */ - - Status = AcpiEvExecuteRegMethod (RegionObj, 0); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, "from region _REG, [%s]", - AcpiUtGetRegionName (RegionObj->Region.SpaceId))); - } - - if (AcpiNsIsLocked) - { - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return_VOID; - } - } - - /* - * If the region has been activated, call the setup handler - * with the deactivate notification - */ - if (RegionObj->Region.Flags & AOPOBJ_SETUP_COMPLETE) - { - RegionSetup = HandlerObj->AddressSpace.Setup; - Status = RegionSetup (RegionObj, ACPI_REGION_DEACTIVATE, - HandlerObj->AddressSpace.Context, RegionContext); - - /* Init routine may fail, Just ignore errors */ - - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "from region handler - deactivate, [%s]", - AcpiUtGetRegionName (RegionObj->Region.SpaceId))); - } - - RegionObj->Region.Flags &= ~(AOPOBJ_SETUP_COMPLETE); - } - - /* - * Remove handler reference in the region - * - * NOTE: this doesn't mean that the region goes away, the region - * is just inaccessible as indicated to the _REG method - * - * If the region is on the handler's list, this must be the - * region's handler - */ - RegionObj->Region.Handler = NULL; - AcpiUtRemoveReference (HandlerObj); - - return_VOID; - } - - /* Walk the linked list of handlers */ - - LastObjPtr = &ObjDesc->Region.Next; - ObjDesc = ObjDesc->Region.Next; - } - - /* If we get here, the region was not in the handler's region list */ - - ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, - "Cannot remove region %p from address handler %p\n", - RegionObj, HandlerObj)); - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvAttachRegion - * - * PARAMETERS: HandlerObj - Handler Object - * RegionObj - Region Object - * AcpiNsIsLocked - Namespace Region Already Locked? - * - * RETURN: None - * - * DESCRIPTION: Create the association between the handler and the region - * this is a two way association. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvAttachRegion ( - ACPI_OPERAND_OBJECT *HandlerObj, - ACPI_OPERAND_OBJECT *RegionObj, - BOOLEAN AcpiNsIsLocked) -{ - - ACPI_FUNCTION_TRACE (EvAttachRegion); - - - ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, - "Adding Region [%4.4s] %p to address handler %p [%s]\n", - AcpiUtGetNodeName (RegionObj->Region.Node), - RegionObj, HandlerObj, - AcpiUtGetRegionName (RegionObj->Region.SpaceId))); - - /* Link this region to the front of the handler's list */ - - RegionObj->Region.Next = HandlerObj->AddressSpace.RegionList; - HandlerObj->AddressSpace.RegionList = RegionObj; - - /* Install the region's handler */ - - if (RegionObj->Region.Handler) - { - return_ACPI_STATUS (AE_ALREADY_EXISTS); - } - - RegionObj->Region.Handler = HandlerObj; - AcpiUtAddReference (HandlerObj); - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvInstallHandler - * - * PARAMETERS: WalkNamespace callback - * - * DESCRIPTION: This routine installs an address handler into objects that are - * of type Region or Device. - * - * If the Object is a Device, and the device has a handler of - * the same type then the search is terminated in that branch. - * - * This is because the existing handler is closer in proximity - * to any more regions than the one we are trying to install. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiEvInstallHandler ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue) -{ - ACPI_OPERAND_OBJECT *HandlerObj; - ACPI_OPERAND_OBJECT *NextHandlerObj; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - - - ACPI_FUNCTION_NAME (EvInstallHandler); - - - HandlerObj = (ACPI_OPERAND_OBJECT *) Context; - - /* Parameter validation */ - - if (!HandlerObj) - { - return (AE_OK); - } - - /* Convert and validate the device handle */ - - Node = AcpiNsMapHandleToNode (ObjHandle); - if (!Node) - { - return (AE_BAD_PARAMETER); - } - - /* - * We only care about regions.and objects - * that are allowed to have address space handlers - */ - if ((Node->Type != ACPI_TYPE_DEVICE) && - (Node->Type != ACPI_TYPE_REGION) && - (Node != AcpiGbl_RootNode)) - { - return (AE_OK); - } - - /* Check for an existing internal object */ - - ObjDesc = AcpiNsGetAttachedObject (Node); - if (!ObjDesc) - { - /* No object, just exit */ - - return (AE_OK); - } - - /* Devices are handled different than regions */ - - if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_DEVICE) - { - /* Check if this Device already has a handler for this address space */ - - NextHandlerObj = ObjDesc->Device.Handler; - while (NextHandlerObj) - { - /* Found a handler, is it for the same address space? */ - - if (NextHandlerObj->AddressSpace.SpaceId == HandlerObj->AddressSpace.SpaceId) - { - ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, - "Found handler for region [%s] in device %p(%p) handler %p\n", - AcpiUtGetRegionName (HandlerObj->AddressSpace.SpaceId), - ObjDesc, NextHandlerObj, HandlerObj)); - - /* - * Since the object we found it on was a device, then it - * means that someone has already installed a handler for - * the branch of the namespace from this device on. Just - * bail out telling the walk routine to not traverse this - * branch. This preserves the scoping rule for handlers. - */ - return (AE_CTRL_DEPTH); - } - - /* Walk the linked list of handlers attached to this device */ - - NextHandlerObj = NextHandlerObj->AddressSpace.Next; - } - - /* - * As long as the device didn't have a handler for this - * space we don't care about it. We just ignore it and - * proceed. - */ - return (AE_OK); - } - - /* Object is a Region */ - - if (ObjDesc->Region.SpaceId != HandlerObj->AddressSpace.SpaceId) - { - /* - * This region is for a different address space - * -- just ignore it - */ - return (AE_OK); - } - - /* - * Now we have a region and it is for the handler's address - * space type. - * - * First disconnect region for any previous handler (if any) - */ - AcpiEvDetachRegion (ObjDesc, FALSE); - - /* Connect the region to the new handler */ - - Status = AcpiEvAttachRegion (HandlerObj, ObjDesc, FALSE); - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvInstallSpaceHandler - * - * PARAMETERS: Node - Namespace node for the device - * SpaceId - The address space ID - * Handler - Address of the handler - * Setup - Address of the setup function - * Context - Value passed to the handler on each access - * - * RETURN: Status - * - * DESCRIPTION: Install a handler for all OpRegions of a given SpaceId. - * Assumes namespace is locked - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvInstallSpaceHandler ( - ACPI_NAMESPACE_NODE *Node, - ACPI_ADR_SPACE_TYPE SpaceId, - ACPI_ADR_SPACE_HANDLER Handler, - ACPI_ADR_SPACE_SETUP Setup, - void *Context) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *HandlerObj; - ACPI_STATUS Status; - ACPI_OBJECT_TYPE Type; - UINT8 Flags = 0; - - - ACPI_FUNCTION_TRACE (EvInstallSpaceHandler); - - - /* - * This registration is valid for only the types below - * and the root. This is where the default handlers - * get placed. - */ - if ((Node->Type != ACPI_TYPE_DEVICE) && - (Node->Type != ACPI_TYPE_PROCESSOR) && - (Node->Type != ACPI_TYPE_THERMAL) && - (Node != AcpiGbl_RootNode)) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - if (Handler == ACPI_DEFAULT_HANDLER) - { - Flags = ACPI_ADDR_HANDLER_DEFAULT_INSTALLED; - - switch (SpaceId) - { - case ACPI_ADR_SPACE_SYSTEM_MEMORY: - Handler = AcpiExSystemMemorySpaceHandler; - Setup = AcpiEvSystemMemoryRegionSetup; - break; - - case ACPI_ADR_SPACE_SYSTEM_IO: - Handler = AcpiExSystemIoSpaceHandler; - Setup = AcpiEvIoSpaceRegionSetup; - break; - - case ACPI_ADR_SPACE_PCI_CONFIG: - Handler = AcpiExPciConfigSpaceHandler; - Setup = AcpiEvPciConfigRegionSetup; - break; - - case ACPI_ADR_SPACE_CMOS: - Handler = AcpiExCmosSpaceHandler; - Setup = AcpiEvCmosRegionSetup; - break; - - case ACPI_ADR_SPACE_PCI_BAR_TARGET: - Handler = AcpiExPciBarSpaceHandler; - Setup = AcpiEvPciBarRegionSetup; - break; - - case ACPI_ADR_SPACE_DATA_TABLE: - Handler = AcpiExDataTableSpaceHandler; - Setup = NULL; - break; - - default: - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - } - - /* If the caller hasn't specified a setup routine, use the default */ - - if (!Setup) - { - Setup = AcpiEvDefaultRegionSetup; - } - - /* Check for an existing internal object */ - - ObjDesc = AcpiNsGetAttachedObject (Node); - if (ObjDesc) - { - /* - * The attached device object already exists. - * Make sure the handler is not already installed. - */ - HandlerObj = ObjDesc->Device.Handler; - - /* Walk the handler list for this device */ - - while (HandlerObj) - { - /* Same SpaceId indicates a handler already installed */ - - if (HandlerObj->AddressSpace.SpaceId == SpaceId) - { - if (HandlerObj->AddressSpace.Handler == Handler) - { - /* - * It is (relatively) OK to attempt to install the SAME - * handler twice. This can easily happen - * with PCI_Config space. - */ - Status = AE_SAME_HANDLER; - goto UnlockAndExit; - } - else - { - /* A handler is already installed */ - - Status = AE_ALREADY_EXISTS; - } - goto UnlockAndExit; - } - - /* Walk the linked list of handlers */ - - HandlerObj = HandlerObj->AddressSpace.Next; - } - } - else - { - ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, - "Creating object on Device %p while installing handler\n", Node)); - - /* ObjDesc does not exist, create one */ - - if (Node->Type == ACPI_TYPE_ANY) - { - Type = ACPI_TYPE_DEVICE; - } - else - { - Type = Node->Type; - } - - ObjDesc = AcpiUtCreateInternalObject (Type); - if (!ObjDesc) - { - Status = AE_NO_MEMORY; - goto UnlockAndExit; - } - - /* Init new descriptor */ - - ObjDesc->Common.Type = (UINT8) Type; - - /* Attach the new object to the Node */ - - Status = AcpiNsAttachObject (Node, ObjDesc, Type); - - /* Remove local reference to the object */ - - AcpiUtRemoveReference (ObjDesc); - - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - } - - ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, - "Installing address handler for region %s(%X) on Device %4.4s %p(%p)\n", - AcpiUtGetRegionName (SpaceId), SpaceId, - AcpiUtGetNodeName (Node), Node, ObjDesc)); - - /* - * Install the handler - * - * At this point there is no existing handler. - * Just allocate the object for the handler and link it - * into the list. - */ - HandlerObj = AcpiUtCreateInternalObject (ACPI_TYPE_LOCAL_ADDRESS_HANDLER); - if (!HandlerObj) - { - Status = AE_NO_MEMORY; - goto UnlockAndExit; - } - - /* Init handler obj */ - - HandlerObj->AddressSpace.SpaceId = (UINT8) SpaceId; - HandlerObj->AddressSpace.HandlerFlags = Flags; - HandlerObj->AddressSpace.RegionList = NULL; - HandlerObj->AddressSpace.Node = Node; - HandlerObj->AddressSpace.Handler = Handler; - HandlerObj->AddressSpace.Context = Context; - HandlerObj->AddressSpace.Setup = Setup; - - /* Install at head of Device.AddressSpace list */ - - HandlerObj->AddressSpace.Next = ObjDesc->Device.Handler; - - /* - * The Device object is the first reference on the HandlerObj. - * Each region that uses the handler adds a reference. - */ - ObjDesc->Device.Handler = HandlerObj; - - /* - * Walk the namespace finding all of the regions this - * handler will manage. - * - * Start at the device and search the branch toward - * the leaf nodes until either the leaf is encountered or - * a device is detected that has an address handler of the - * same type. - * - * In either case, back up and search down the remainder - * of the branch - */ - Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, Node, ACPI_UINT32_MAX, - ACPI_NS_WALK_UNLOCK, AcpiEvInstallHandler, - HandlerObj, NULL); - -UnlockAndExit: - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvExecuteRegMethods - * - * PARAMETERS: Node - Namespace node for the device - * SpaceId - The address space ID - * - * RETURN: Status - * - * DESCRIPTION: Run all _REG methods for the input Space ID; - * Note: assumes namespace is locked, or system init time. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvExecuteRegMethods ( - ACPI_NAMESPACE_NODE *Node, - ACPI_ADR_SPACE_TYPE SpaceId) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (EvExecuteRegMethods); - - - /* - * Run all _REG methods for all Operation Regions for this - * space ID. This is a separate walk in order to handle any - * interdependencies between regions and _REG methods. (i.e. handlers - * must be installed for all regions of this Space ID before we - * can run any _REG methods) - */ - Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, Node, ACPI_UINT32_MAX, - ACPI_NS_WALK_UNLOCK, AcpiEvRegRun, - &SpaceId, NULL); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvRegRun - * - * PARAMETERS: WalkNamespace callback - * - * DESCRIPTION: Run _REG method for region objects of the requested spaceID - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiEvRegRun ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_NAMESPACE_NODE *Node; - ACPI_ADR_SPACE_TYPE SpaceId; - ACPI_STATUS Status; - - - SpaceId = *ACPI_CAST_PTR (ACPI_ADR_SPACE_TYPE, Context); - - /* Convert and validate the device handle */ - - Node = AcpiNsMapHandleToNode (ObjHandle); - if (!Node) - { - return (AE_BAD_PARAMETER); - } - - /* - * We only care about regions.and objects - * that are allowed to have address space handlers - */ - if ((Node->Type != ACPI_TYPE_REGION) && - (Node != AcpiGbl_RootNode)) - { - return (AE_OK); - } - - /* Check for an existing internal object */ - - ObjDesc = AcpiNsGetAttachedObject (Node); - if (!ObjDesc) - { - /* No object, just exit */ - - return (AE_OK); - } - - /* Object is a Region */ - - if (ObjDesc->Region.SpaceId != SpaceId) - { - /* - * This region is for a different address space - * -- just ignore it - */ - return (AE_OK); - } - - Status = AcpiEvExecuteRegMethod (ObjDesc, 1); - return (Status); -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/events/evrgnini.c b/sys/contrib/dev/acpica-unix-20061109/events/evrgnini.c deleted file mode 100644 index 81395f9145..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/events/evrgnini.c +++ /dev/null @@ -1,821 +0,0 @@ -/****************************************************************************** - * - * Module Name: evrgnini- ACPI AddressSpace (OpRegion) init - * $Revision: 1.87 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __EVRGNINI_C__ - -#include "acpi.h" -#include "acevents.h" -#include "acnamesp.h" - -#define _COMPONENT ACPI_EVENTS - ACPI_MODULE_NAME ("evrgnini") - -/* Local prototypes */ - -static BOOLEAN -AcpiEvMatchPciRootBridge ( - char *Id); - -static BOOLEAN -AcpiEvIsPciRootBridge ( - ACPI_NAMESPACE_NODE *Node); - - -/******************************************************************************* - * - * FUNCTION: AcpiEvSystemMemoryRegionSetup - * - * PARAMETERS: Handle - Region we are interested in - * Function - Start or stop - * HandlerContext - Address space handler context - * RegionContext - Region specific context - * - * RETURN: Status - * - * DESCRIPTION: Setup a SystemMemory operation region - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvSystemMemoryRegionSetup ( - ACPI_HANDLE Handle, - UINT32 Function, - void *HandlerContext, - void **RegionContext) -{ - ACPI_OPERAND_OBJECT *RegionDesc = (ACPI_OPERAND_OBJECT *) Handle; - ACPI_MEM_SPACE_CONTEXT *LocalRegionContext; - - - ACPI_FUNCTION_TRACE (EvSystemMemoryRegionSetup); - - - if (Function == ACPI_REGION_DEACTIVATE) - { - if (*RegionContext) - { - LocalRegionContext = (ACPI_MEM_SPACE_CONTEXT *) *RegionContext; - - /* Delete a cached mapping if present */ - - if (LocalRegionContext->MappedLength) - { - AcpiOsUnmapMemory (LocalRegionContext->MappedLogicalAddress, - LocalRegionContext->MappedLength); - } - ACPI_FREE (LocalRegionContext); - *RegionContext = NULL; - } - return_ACPI_STATUS (AE_OK); - } - - /* Create a new context */ - - LocalRegionContext = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_MEM_SPACE_CONTEXT)); - if (!(LocalRegionContext)) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Save the region length and address for use in the handler */ - - LocalRegionContext->Length = RegionDesc->Region.Length; - LocalRegionContext->Address = RegionDesc->Region.Address; - - *RegionContext = LocalRegionContext; - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvIoSpaceRegionSetup - * - * PARAMETERS: Handle - Region we are interested in - * Function - Start or stop - * HandlerContext - Address space handler context - * RegionContext - Region specific context - * - * RETURN: Status - * - * DESCRIPTION: Setup a IO operation region - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvIoSpaceRegionSetup ( - ACPI_HANDLE Handle, - UINT32 Function, - void *HandlerContext, - void **RegionContext) -{ - ACPI_FUNCTION_TRACE (EvIoSpaceRegionSetup); - - - if (Function == ACPI_REGION_DEACTIVATE) - { - *RegionContext = NULL; - } - else - { - *RegionContext = HandlerContext; - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvPciConfigRegionSetup - * - * PARAMETERS: Handle - Region we are interested in - * Function - Start or stop - * HandlerContext - Address space handler context - * RegionContext - Region specific context - * - * RETURN: Status - * - * DESCRIPTION: Setup a PCI_Config operation region - * - * MUTEX: Assumes namespace is not locked - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvPciConfigRegionSetup ( - ACPI_HANDLE Handle, - UINT32 Function, - void *HandlerContext, - void **RegionContext) -{ - ACPI_STATUS Status = AE_OK; - ACPI_INTEGER PciValue; - ACPI_PCI_ID *PciId = *RegionContext; - ACPI_OPERAND_OBJECT *HandlerObj; - ACPI_NAMESPACE_NODE *ParentNode; - ACPI_NAMESPACE_NODE *PciRootNode; - ACPI_NAMESPACE_NODE *PciDeviceNode; - ACPI_OPERAND_OBJECT *RegionObj = (ACPI_OPERAND_OBJECT *) Handle; - - - ACPI_FUNCTION_TRACE (EvPciConfigRegionSetup); - - - HandlerObj = RegionObj->Region.Handler; - if (!HandlerObj) - { - /* - * No installed handler. This shouldn't happen because the dispatch - * routine checks before we get here, but we check again just in case. - */ - ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, - "Attempting to init a region %p, with no handler\n", RegionObj)); - return_ACPI_STATUS (AE_NOT_EXIST); - } - - *RegionContext = NULL; - if (Function == ACPI_REGION_DEACTIVATE) - { - if (PciId) - { - ACPI_FREE (PciId); - } - return_ACPI_STATUS (Status); - } - - ParentNode = AcpiNsGetParentNode (RegionObj->Region.Node); - - /* - * Get the _SEG and _BBN values from the device upon which the handler - * is installed. - * - * We need to get the _SEG and _BBN objects relative to the PCI BUS device. - * This is the device the handler has been registered to handle. - */ - - /* - * If the AddressSpace.Node is still pointing to the root, we need - * to scan upward for a PCI Root bridge and re-associate the OpRegion - * handlers with that device. - */ - if (HandlerObj->AddressSpace.Node == AcpiGbl_RootNode) - { - /* Start search from the parent object */ - - PciRootNode = ParentNode; - while (PciRootNode != AcpiGbl_RootNode) - { - /* Get the _HID/_CID in order to detect a RootBridge */ - - if (AcpiEvIsPciRootBridge (PciRootNode)) - { - /* Install a handler for this PCI root bridge */ - - Status = AcpiInstallAddressSpaceHandler ( - (ACPI_HANDLE) PciRootNode, - ACPI_ADR_SPACE_PCI_CONFIG, - ACPI_DEFAULT_HANDLER, NULL, NULL); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_SAME_HANDLER) - { - /* - * It is OK if the handler is already installed on the root - * bridge. Still need to return a context object for the - * new PCI_Config operation region, however. - */ - Status = AE_OK; - } - else - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Could not install PciConfig handler for Root Bridge %4.4s", - AcpiUtGetNodeName (PciRootNode))); - } - } - break; - } - - PciRootNode = AcpiNsGetParentNode (PciRootNode); - } - - /* PCI root bridge not found, use namespace root node */ - } - else - { - PciRootNode = HandlerObj->AddressSpace.Node; - } - - /* - * If this region is now initialized, we are done. - * (InstallAddressSpaceHandler could have initialized it) - */ - if (RegionObj->Region.Flags & AOPOBJ_SETUP_COMPLETE) - { - return_ACPI_STATUS (AE_OK); - } - - /* Region is still not initialized. Create a new context */ - - PciId = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_PCI_ID)); - if (!PciId) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* - * For PCI_Config space access, we need the segment, bus, - * device and function numbers. Acquire them here. - * - * Find the parent device object. (This allows the operation region to be - * within a subscope under the device, such as a control method.) - */ - PciDeviceNode = RegionObj->Region.Node; - while (PciDeviceNode && (PciDeviceNode->Type != ACPI_TYPE_DEVICE)) - { - PciDeviceNode = AcpiNsGetParentNode (PciDeviceNode); - } - - if (!PciDeviceNode) - { - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - /* - * Get the PCI device and function numbers from the _ADR object - * contained in the parent's scope. - */ - Status = AcpiUtEvaluateNumericObject (METHOD_NAME__ADR, PciDeviceNode, &PciValue); - - /* - * The default is zero, and since the allocation above zeroed - * the data, just do nothing on failure. - */ - if (ACPI_SUCCESS (Status)) - { - PciId->Device = ACPI_HIWORD (ACPI_LODWORD (PciValue)); - PciId->Function = ACPI_LOWORD (ACPI_LODWORD (PciValue)); - } - - /* The PCI segment number comes from the _SEG method */ - - Status = AcpiUtEvaluateNumericObject (METHOD_NAME__SEG, PciRootNode, &PciValue); - if (ACPI_SUCCESS (Status)) - { - PciId->Segment = ACPI_LOWORD (PciValue); - } - - /* The PCI bus number comes from the _BBN method */ - - Status = AcpiUtEvaluateNumericObject (METHOD_NAME__BBN, PciRootNode, &PciValue); - if (ACPI_SUCCESS (Status)) - { - PciId->Bus = ACPI_LOWORD (PciValue); - } - - /* Complete this device's PciId */ - - AcpiOsDerivePciId (PciRootNode, RegionObj->Region.Node, &PciId); - - *RegionContext = PciId; - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvMatchPciRootBridge - * - * PARAMETERS: Id - The HID/CID in string format - * - * RETURN: TRUE if the Id is a match for a PCI/PCI-Express Root Bridge - * - * DESCRIPTION: Determine if the input ID is a PCI Root Bridge ID. - * - ******************************************************************************/ - -static BOOLEAN -AcpiEvMatchPciRootBridge ( - char *Id) -{ - - /* - * Check if this is a PCI root. - * ACPI 3.0+: check for a PCI Express root also. - */ - if (!(ACPI_STRNCMP (Id, - PCI_ROOT_HID_STRING, - sizeof (PCI_ROOT_HID_STRING))) || - - !(ACPI_STRNCMP (Id, - PCI_EXPRESS_ROOT_HID_STRING, - sizeof (PCI_EXPRESS_ROOT_HID_STRING)))) - { - return (TRUE); - } - - return (FALSE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvIsPciRootBridge - * - * PARAMETERS: Node - Device node being examined - * - * RETURN: TRUE if device is a PCI/PCI-Express Root Bridge - * - * DESCRIPTION: Determine if the input device represents a PCI Root Bridge by - * examining the _HID and _CID for the device. - * - ******************************************************************************/ - -static BOOLEAN -AcpiEvIsPciRootBridge ( - ACPI_NAMESPACE_NODE *Node) -{ - ACPI_STATUS Status; - ACPI_DEVICE_ID Hid; - ACPI_COMPATIBLE_ID_LIST *Cid; - ACPI_NATIVE_UINT i; - - - /* - * Get the _HID and check for a PCI Root Bridge - */ - Status = AcpiUtExecute_HID (Node, &Hid); - if (ACPI_FAILURE (Status)) - { - return (FALSE); - } - - if (AcpiEvMatchPciRootBridge (Hid.Value)) - { - return (TRUE); - } - - /* - * The _HID did not match. - * Get the _CID and check for a PCI Root Bridge - */ - Status = AcpiUtExecute_CID (Node, &Cid); - if (ACPI_FAILURE (Status)) - { - return (FALSE); - } - - /* Check all _CIDs in the returned list */ - - for (i = 0; i < Cid->Count; i++) - { - if (AcpiEvMatchPciRootBridge (Cid->Id[i].Value)) - { - ACPI_FREE (Cid); - return (TRUE); - } - } - - ACPI_FREE (Cid); - return (FALSE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvPciBarRegionSetup - * - * PARAMETERS: Handle - Region we are interested in - * Function - Start or stop - * HandlerContext - Address space handler context - * RegionContext - Region specific context - * - * RETURN: Status - * - * DESCRIPTION: Setup a PciBAR operation region - * - * MUTEX: Assumes namespace is not locked - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvPciBarRegionSetup ( - ACPI_HANDLE Handle, - UINT32 Function, - void *HandlerContext, - void **RegionContext) -{ - ACPI_FUNCTION_TRACE (EvPciBarRegionSetup); - - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvCmosRegionSetup - * - * PARAMETERS: Handle - Region we are interested in - * Function - Start or stop - * HandlerContext - Address space handler context - * RegionContext - Region specific context - * - * RETURN: Status - * - * DESCRIPTION: Setup a CMOS operation region - * - * MUTEX: Assumes namespace is not locked - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvCmosRegionSetup ( - ACPI_HANDLE Handle, - UINT32 Function, - void *HandlerContext, - void **RegionContext) -{ - ACPI_FUNCTION_TRACE (EvCmosRegionSetup); - - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvDefaultRegionSetup - * - * PARAMETERS: Handle - Region we are interested in - * Function - Start or stop - * HandlerContext - Address space handler context - * RegionContext - Region specific context - * - * RETURN: Status - * - * DESCRIPTION: Default region initialization - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvDefaultRegionSetup ( - ACPI_HANDLE Handle, - UINT32 Function, - void *HandlerContext, - void **RegionContext) -{ - ACPI_FUNCTION_TRACE (EvDefaultRegionSetup); - - - if (Function == ACPI_REGION_DEACTIVATE) - { - *RegionContext = NULL; - } - else - { - *RegionContext = HandlerContext; - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvInitializeRegion - * - * PARAMETERS: RegionObj - Region we are initializing - * AcpiNsLocked - Is namespace locked? - * - * RETURN: Status - * - * DESCRIPTION: Initializes the region, finds any _REG methods and saves them - * for execution at a later time - * - * Get the appropriate address space handler for a newly - * created region. - * - * This also performs address space specific initialization. For - * example, PCI regions must have an _ADR object that contains - * a PCI address in the scope of the definition. This address is - * required to perform an access to PCI config space. - * - * MUTEX: Interpreter should be unlocked, because we may run the _REG - * method for this region. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvInitializeRegion ( - ACPI_OPERAND_OBJECT *RegionObj, - BOOLEAN AcpiNsLocked) -{ - ACPI_OPERAND_OBJECT *HandlerObj; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_ADR_SPACE_TYPE SpaceId; - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *MethodNode; - ACPI_NAME *RegNamePtr = (ACPI_NAME *) METHOD_NAME__REG; - ACPI_OPERAND_OBJECT *RegionObj2; - - - ACPI_FUNCTION_TRACE_U32 (EvInitializeRegion, AcpiNsLocked); - - - if (!RegionObj) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - if (RegionObj->Common.Flags & AOPOBJ_OBJECT_INITIALIZED) - { - return_ACPI_STATUS (AE_OK); - } - - RegionObj2 = AcpiNsGetSecondaryObject (RegionObj); - if (!RegionObj2) - { - return_ACPI_STATUS (AE_NOT_EXIST); - } - - Node = AcpiNsGetParentNode (RegionObj->Region.Node); - SpaceId = RegionObj->Region.SpaceId; - - /* Setup defaults */ - - RegionObj->Region.Handler = NULL; - RegionObj2->Extra.Method_REG = NULL; - RegionObj->Common.Flags &= ~(AOPOBJ_SETUP_COMPLETE); - RegionObj->Common.Flags |= AOPOBJ_OBJECT_INITIALIZED; - - /* Find any "_REG" method associated with this region definition */ - - Status = AcpiNsSearchOneScope ( - *RegNamePtr, Node, ACPI_TYPE_METHOD, &MethodNode); - if (ACPI_SUCCESS (Status)) - { - /* - * The _REG method is optional and there can be only one per region - * definition. This will be executed when the handler is attached - * or removed - */ - RegionObj2->Extra.Method_REG = MethodNode; - } - - /* - * The following loop depends upon the root Node having no parent - * ie: AcpiGbl_RootNode->ParentEntry being set to NULL - */ - while (Node) - { - /* Check to see if a handler exists */ - - HandlerObj = NULL; - ObjDesc = AcpiNsGetAttachedObject (Node); - if (ObjDesc) - { - /* Can only be a handler if the object exists */ - - switch (Node->Type) - { - case ACPI_TYPE_DEVICE: - - HandlerObj = ObjDesc->Device.Handler; - break; - - case ACPI_TYPE_PROCESSOR: - - HandlerObj = ObjDesc->Processor.Handler; - break; - - case ACPI_TYPE_THERMAL: - - HandlerObj = ObjDesc->ThermalZone.Handler; - break; - - default: - /* Ignore other objects */ - break; - } - - while (HandlerObj) - { - /* Is this handler of the correct type? */ - - if (HandlerObj->AddressSpace.SpaceId == SpaceId) - { - /* Found correct handler */ - - ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, - "Found handler %p for region %p in obj %p\n", - HandlerObj, RegionObj, ObjDesc)); - - Status = AcpiEvAttachRegion (HandlerObj, RegionObj, - AcpiNsLocked); - - /* - * Tell all users that this region is usable by running the _REG - * method - */ - if (AcpiNsLocked) - { - Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - Status = AcpiEvExecuteRegMethod (RegionObj, 1); - - if (AcpiNsLocked) - { - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - return_ACPI_STATUS (AE_OK); - } - - /* Try next handler in the list */ - - HandlerObj = HandlerObj->AddressSpace.Next; - } - } - - /* - * This node does not have the handler we need; - * Pop up one level - */ - Node = AcpiNsGetParentNode (Node); - } - - /* If we get here, there is no handler for this region */ - - ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, - "No handler for RegionType %s(%X) (RegionObj %p)\n", - AcpiUtGetRegionName (SpaceId), SpaceId, RegionObj)); - - return_ACPI_STATUS (AE_NOT_EXIST); -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/events/evsci.c b/sys/contrib/dev/acpica-unix-20061109/events/evsci.c deleted file mode 100644 index bf05a9a1e5..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/events/evsci.c +++ /dev/null @@ -1,281 +0,0 @@ -/******************************************************************************* - * - * Module Name: evsci - System Control Interrupt configuration and - * legacy to ACPI mode state transition functions - * $Revision: 1.101 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "acevents.h" - - -#define _COMPONENT ACPI_EVENTS - ACPI_MODULE_NAME ("evsci") - -/* Local prototypes */ - -static UINT32 ACPI_SYSTEM_XFACE -AcpiEvSciXruptHandler ( - void *Context); - - -/******************************************************************************* - * - * FUNCTION: AcpiEvSciXruptHandler - * - * PARAMETERS: Context - Calling Context - * - * RETURN: Status code indicates whether interrupt was handled. - * - * DESCRIPTION: Interrupt handler that will figure out what function or - * control method to call to deal with a SCI. - * - ******************************************************************************/ - -static UINT32 ACPI_SYSTEM_XFACE -AcpiEvSciXruptHandler ( - void *Context) -{ - ACPI_GPE_XRUPT_INFO *GpeXruptList = Context; - UINT32 InterruptHandled = ACPI_INTERRUPT_NOT_HANDLED; - - - ACPI_FUNCTION_TRACE (EvSciXruptHandler); - - - /* - * We are guaranteed by the ACPI CA initialization/shutdown code that - * if this interrupt handler is installed, ACPI is enabled. - */ - - /* - * Fixed Events: - * Check for and dispatch any Fixed Events that have occurred - */ - InterruptHandled |= AcpiEvFixedEventDetect (); - - /* - * General Purpose Events: - * Check for and dispatch any GPEs that have occurred - */ - InterruptHandled |= AcpiEvGpeDetect (GpeXruptList); - - return_UINT32 (InterruptHandled); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiEvGpeXruptHandler - * - * PARAMETERS: Context - Calling Context - * - * RETURN: Status code indicates whether interrupt was handled. - * - * DESCRIPTION: Handler for GPE Block Device interrupts - * - ******************************************************************************/ - -UINT32 ACPI_SYSTEM_XFACE -AcpiEvGpeXruptHandler ( - void *Context) -{ - ACPI_GPE_XRUPT_INFO *GpeXruptList = Context; - UINT32 InterruptHandled = ACPI_INTERRUPT_NOT_HANDLED; - - - ACPI_FUNCTION_TRACE (EvGpeXruptHandler); - - - /* - * We are guaranteed by the ACPI CA initialization/shutdown code that - * if this interrupt handler is installed, ACPI is enabled. - */ - - /* - * GPEs: - * Check for and dispatch any GPEs that have occurred - */ - InterruptHandled |= AcpiEvGpeDetect (GpeXruptList); - - return_UINT32 (InterruptHandled); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiEvInstallSciHandler - * - * PARAMETERS: none - * - * RETURN: Status - * - * DESCRIPTION: Installs SCI handler. - * - ******************************************************************************/ - -UINT32 -AcpiEvInstallSciHandler ( - void) -{ - UINT32 Status = AE_OK; - - - ACPI_FUNCTION_TRACE (EvInstallSciHandler); - - - Status = AcpiOsInstallInterruptHandler ((UINT32) AcpiGbl_FADT.SciInterrupt, - AcpiEvSciXruptHandler, AcpiGbl_GpeXruptListHead); - return_ACPI_STATUS (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiEvRemoveSciHandler - * - * PARAMETERS: none - * - * RETURN: E_OK if handler uninstalled OK, E_ERROR if handler was not - * installed to begin with - * - * DESCRIPTION: Remove the SCI interrupt handler. No further SCIs will be - * taken. - * - * Note: It doesn't seem important to disable all events or set the event - * enable registers to their original values. The OS should disable - * the SCI interrupt level when the handler is removed, so no more - * events will come in. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvRemoveSciHandler ( - void) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (EvRemoveSciHandler); - - - /* Just let the OS remove the handler and disable the level */ - - Status = AcpiOsRemoveInterruptHandler ((UINT32) AcpiGbl_FADT.SciInterrupt, - AcpiEvSciXruptHandler); - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/events/evxface.c b/sys/contrib/dev/acpica-unix-20061109/events/evxface.c deleted file mode 100644 index cc9bba1173..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/events/evxface.c +++ /dev/null @@ -1,956 +0,0 @@ -/****************************************************************************** - * - * Module Name: evxface - External interfaces for ACPI events - * $Revision: 1.162 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __EVXFACE_C__ - -#include "acpi.h" -#include "acnamesp.h" -#include "acevents.h" -#include "acinterp.h" - -#define _COMPONENT ACPI_EVENTS - ACPI_MODULE_NAME ("evxface") - - -/******************************************************************************* - * - * FUNCTION: AcpiInstallExceptionHandler - * - * PARAMETERS: Handler - Pointer to the handler function for the - * event - * - * RETURN: Status - * - * DESCRIPTION: Saves the pointer to the handler function - * - ******************************************************************************/ - -ACPI_STATUS -AcpiInstallExceptionHandler ( - ACPI_EXCEPTION_HANDLER Handler) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (AcpiInstallExceptionHandler); - - - Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Don't allow two handlers. */ - - if (AcpiGbl_ExceptionHandler) - { - Status = AE_ALREADY_EXISTS; - goto Cleanup; - } - - /* Install the handler */ - - AcpiGbl_ExceptionHandler = Handler; - -Cleanup: - (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiInstallExceptionHandler) - - -/******************************************************************************* - * - * FUNCTION: AcpiInstallFixedEventHandler - * - * PARAMETERS: Event - Event type to enable. - * Handler - Pointer to the handler function for the - * event - * Context - Value passed to the handler on each GPE - * - * RETURN: Status - * - * DESCRIPTION: Saves the pointer to the handler function and then enables the - * event. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiInstallFixedEventHandler ( - UINT32 Event, - ACPI_EVENT_HANDLER Handler, - void *Context) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (AcpiInstallFixedEventHandler); - - - /* Parameter validation */ - - if (Event > ACPI_EVENT_MAX) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Don't allow two handlers. */ - - if (NULL != AcpiGbl_FixedEventHandlers[Event].Handler) - { - Status = AE_ALREADY_EXISTS; - goto Cleanup; - } - - /* Install the handler before enabling the event */ - - AcpiGbl_FixedEventHandlers[Event].Handler = Handler; - AcpiGbl_FixedEventHandlers[Event].Context = Context; - - Status = AcpiEnableEvent (Event, 0); - if (ACPI_FAILURE (Status)) - { - ACPI_WARNING ((AE_INFO, "Could not enable fixed event %X", Event)); - - /* Remove the handler */ - - AcpiGbl_FixedEventHandlers[Event].Handler = NULL; - AcpiGbl_FixedEventHandlers[Event].Context = NULL; - } - else - { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Enabled fixed event %X, Handler=%p\n", Event, Handler)); - } - - -Cleanup: - (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiInstallFixedEventHandler) - - -/******************************************************************************* - * - * FUNCTION: AcpiRemoveFixedEventHandler - * - * PARAMETERS: Event - Event type to disable. - * Handler - Address of the handler - * - * RETURN: Status - * - * DESCRIPTION: Disables the event and unregisters the event handler. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRemoveFixedEventHandler ( - UINT32 Event, - ACPI_EVENT_HANDLER Handler) -{ - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE (AcpiRemoveFixedEventHandler); - - - /* Parameter validation */ - - if (Event > ACPI_EVENT_MAX) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Disable the event before removing the handler */ - - Status = AcpiDisableEvent (Event, 0); - - /* Always Remove the handler */ - - AcpiGbl_FixedEventHandlers[Event].Handler = NULL; - AcpiGbl_FixedEventHandlers[Event].Context = NULL; - - if (ACPI_FAILURE (Status)) - { - ACPI_WARNING ((AE_INFO, - "Could not write to fixed event enable register %X", Event)); - } - else - { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Disabled fixed event %X\n", Event)); - } - - (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiRemoveFixedEventHandler) - - -/******************************************************************************* - * - * FUNCTION: AcpiInstallNotifyHandler - * - * PARAMETERS: Device - The device for which notifies will be handled - * HandlerType - The type of handler: - * ACPI_SYSTEM_NOTIFY: SystemHandler (00-7f) - * ACPI_DEVICE_NOTIFY: DriverHandler (80-ff) - * ACPI_ALL_NOTIFY: both system and device - * Handler - Address of the handler - * Context - Value passed to the handler on each GPE - * - * RETURN: Status - * - * DESCRIPTION: Install a handler for notifies on an ACPI device - * - ******************************************************************************/ - -ACPI_STATUS -AcpiInstallNotifyHandler ( - ACPI_HANDLE Device, - UINT32 HandlerType, - ACPI_NOTIFY_HANDLER Handler, - void *Context) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *NotifyObj; - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (AcpiInstallNotifyHandler); - - - /* Parameter validation */ - - if ((!Device) || - (!Handler) || - (HandlerType > ACPI_MAX_NOTIFY_HANDLER_TYPE)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Convert and validate the device handle */ - - Node = AcpiNsMapHandleToNode (Device); - if (!Node) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - /* - * Root Object: - * Registering a notify handler on the root object indicates that the - * caller wishes to receive notifications for all objects. Note that - * only one global handler can be regsitered (per notify type). - */ - if (Device == ACPI_ROOT_OBJECT) - { - /* Make sure the handler is not already installed */ - - if (((HandlerType & ACPI_SYSTEM_NOTIFY) && - AcpiGbl_SystemNotify.Handler) || - ((HandlerType & ACPI_DEVICE_NOTIFY) && - AcpiGbl_DeviceNotify.Handler)) - { - Status = AE_ALREADY_EXISTS; - goto UnlockAndExit; - } - - if (HandlerType & ACPI_SYSTEM_NOTIFY) - { - AcpiGbl_SystemNotify.Node = Node; - AcpiGbl_SystemNotify.Handler = Handler; - AcpiGbl_SystemNotify.Context = Context; - } - - if (HandlerType & ACPI_DEVICE_NOTIFY) - { - AcpiGbl_DeviceNotify.Node = Node; - AcpiGbl_DeviceNotify.Handler = Handler; - AcpiGbl_DeviceNotify.Context = Context; - } - - /* Global notify handler installed */ - } - - /* - * All Other Objects: - * Caller will only receive notifications specific to the target object. - * Note that only certain object types can receive notifications. - */ - else - { - /* Notifies allowed on this object? */ - - if (!AcpiEvIsNotifyObject (Node)) - { - Status = AE_TYPE; - goto UnlockAndExit; - } - - /* Check for an existing internal object */ - - ObjDesc = AcpiNsGetAttachedObject (Node); - if (ObjDesc) - { - /* Object exists - make sure there's no handler */ - - if (((HandlerType & ACPI_SYSTEM_NOTIFY) && - ObjDesc->CommonNotify.SystemNotify) || - ((HandlerType & ACPI_DEVICE_NOTIFY) && - ObjDesc->CommonNotify.DeviceNotify)) - { - Status = AE_ALREADY_EXISTS; - goto UnlockAndExit; - } - } - else - { - /* Create a new object */ - - ObjDesc = AcpiUtCreateInternalObject (Node->Type); - if (!ObjDesc) - { - Status = AE_NO_MEMORY; - goto UnlockAndExit; - } - - /* Attach new object to the Node */ - - Status = AcpiNsAttachObject (Device, ObjDesc, Node->Type); - - /* Remove local reference to the object */ - - AcpiUtRemoveReference (ObjDesc); - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - } - - /* Install the handler */ - - NotifyObj = AcpiUtCreateInternalObject (ACPI_TYPE_LOCAL_NOTIFY); - if (!NotifyObj) - { - Status = AE_NO_MEMORY; - goto UnlockAndExit; - } - - NotifyObj->Notify.Node = Node; - NotifyObj->Notify.Handler = Handler; - NotifyObj->Notify.Context = Context; - - if (HandlerType & ACPI_SYSTEM_NOTIFY) - { - ObjDesc->CommonNotify.SystemNotify = NotifyObj; - } - - if (HandlerType & ACPI_DEVICE_NOTIFY) - { - ObjDesc->CommonNotify.DeviceNotify = NotifyObj; - } - - if (HandlerType == ACPI_ALL_NOTIFY) - { - /* Extra ref if installed in both */ - - AcpiUtAddReference (NotifyObj); - } - } - - -UnlockAndExit: - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiInstallNotifyHandler) - - -/******************************************************************************* - * - * FUNCTION: AcpiRemoveNotifyHandler - * - * PARAMETERS: Device - The device for which notifies will be handled - * HandlerType - The type of handler: - * ACPI_SYSTEM_NOTIFY: SystemHandler (00-7f) - * ACPI_DEVICE_NOTIFY: DriverHandler (80-ff) - * ACPI_ALL_NOTIFY: both system and device - * Handler - Address of the handler - * - * RETURN: Status - * - * DESCRIPTION: Remove a handler for notifies on an ACPI device - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRemoveNotifyHandler ( - ACPI_HANDLE Device, - UINT32 HandlerType, - ACPI_NOTIFY_HANDLER Handler) -{ - ACPI_OPERAND_OBJECT *NotifyObj; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (AcpiRemoveNotifyHandler); - - - /* Parameter validation */ - - if ((!Device) || - (!Handler) || - (HandlerType > ACPI_MAX_NOTIFY_HANDLER_TYPE)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Convert and validate the device handle */ - - Node = AcpiNsMapHandleToNode (Device); - if (!Node) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - /* Root Object */ - - if (Device == ACPI_ROOT_OBJECT) - { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Removing notify handler for namespace root object\n")); - - if (((HandlerType & ACPI_SYSTEM_NOTIFY) && - !AcpiGbl_SystemNotify.Handler) || - ((HandlerType & ACPI_DEVICE_NOTIFY) && - !AcpiGbl_DeviceNotify.Handler)) - { - Status = AE_NOT_EXIST; - goto UnlockAndExit; - } - - if (HandlerType & ACPI_SYSTEM_NOTIFY) - { - AcpiGbl_SystemNotify.Node = NULL; - AcpiGbl_SystemNotify.Handler = NULL; - AcpiGbl_SystemNotify.Context = NULL; - } - - if (HandlerType & ACPI_DEVICE_NOTIFY) - { - AcpiGbl_DeviceNotify.Node = NULL; - AcpiGbl_DeviceNotify.Handler = NULL; - AcpiGbl_DeviceNotify.Context = NULL; - } - } - - /* All Other Objects */ - - else - { - /* Notifies allowed on this object? */ - - if (!AcpiEvIsNotifyObject (Node)) - { - Status = AE_TYPE; - goto UnlockAndExit; - } - - /* Check for an existing internal object */ - - ObjDesc = AcpiNsGetAttachedObject (Node); - if (!ObjDesc) - { - Status = AE_NOT_EXIST; - goto UnlockAndExit; - } - - /* Object exists - make sure there's an existing handler */ - - if (HandlerType & ACPI_SYSTEM_NOTIFY) - { - NotifyObj = ObjDesc->CommonNotify.SystemNotify; - if (!NotifyObj) - { - Status = AE_NOT_EXIST; - goto UnlockAndExit; - } - - if (NotifyObj->Notify.Handler != Handler) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - /* Remove the handler */ - - ObjDesc->CommonNotify.SystemNotify = NULL; - AcpiUtRemoveReference (NotifyObj); - } - - if (HandlerType & ACPI_DEVICE_NOTIFY) - { - NotifyObj = ObjDesc->CommonNotify.DeviceNotify; - if (!NotifyObj) - { - Status = AE_NOT_EXIST; - goto UnlockAndExit; - } - - if (NotifyObj->Notify.Handler != Handler) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - /* Remove the handler */ - - ObjDesc->CommonNotify.DeviceNotify = NULL; - AcpiUtRemoveReference (NotifyObj); - } - } - - -UnlockAndExit: - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiRemoveNotifyHandler) - - -/******************************************************************************* - * - * FUNCTION: AcpiInstallGpeHandler - * - * PARAMETERS: GpeDevice - Namespace node for the GPE (NULL for FADT - * defined GPEs) - * GpeNumber - The GPE number within the GPE block - * Type - Whether this GPE should be treated as an - * edge- or level-triggered interrupt. - * Address - Address of the handler - * Context - Value passed to the handler on each GPE - * - * RETURN: Status - * - * DESCRIPTION: Install a handler for a General Purpose Event. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiInstallGpeHandler ( - ACPI_HANDLE GpeDevice, - UINT32 GpeNumber, - UINT32 Type, - ACPI_EVENT_HANDLER Address, - void *Context) -{ - ACPI_GPE_EVENT_INFO *GpeEventInfo; - ACPI_HANDLER_INFO *Handler; - ACPI_STATUS Status; - ACPI_CPU_FLAGS Flags; - - - ACPI_FUNCTION_TRACE (AcpiInstallGpeHandler); - - - /* Parameter validation */ - - if ((!Address) || (Type > ACPI_GPE_XRUPT_TYPE_MASK)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Ensure that we have a valid GPE number */ - - GpeEventInfo = AcpiEvGetGpeEventInfo (GpeDevice, GpeNumber); - if (!GpeEventInfo) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - /* Make sure that there isn't a handler there already */ - - if ((GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK) == ACPI_GPE_DISPATCH_HANDLER) - { - Status = AE_ALREADY_EXISTS; - goto UnlockAndExit; - } - - /* Allocate and init handler object */ - - Handler = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_HANDLER_INFO)); - if (!Handler) - { - Status = AE_NO_MEMORY; - goto UnlockAndExit; - } - - Handler->Address = Address; - Handler->Context = Context; - Handler->MethodNode = GpeEventInfo->Dispatch.MethodNode; - - /* Disable the GPE before installing the handler */ - - Status = AcpiEvDisableGpe (GpeEventInfo); - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - - /* Install the handler */ - - Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); - GpeEventInfo->Dispatch.Handler = Handler; - - /* Setup up dispatch flags to indicate handler (vs. method) */ - - GpeEventInfo->Flags &= ~(ACPI_GPE_XRUPT_TYPE_MASK | ACPI_GPE_DISPATCH_MASK); /* Clear bits */ - GpeEventInfo->Flags |= (UINT8) (Type | ACPI_GPE_DISPATCH_HANDLER); - - AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); - - -UnlockAndExit: - (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiInstallGpeHandler) - - -/******************************************************************************* - * - * FUNCTION: AcpiRemoveGpeHandler - * - * PARAMETERS: GpeDevice - Namespace node for the GPE (NULL for FADT - * defined GPEs) - * GpeNumber - The event to remove a handler - * Address - Address of the handler - * - * RETURN: Status - * - * DESCRIPTION: Remove a handler for a General Purpose AcpiEvent. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRemoveGpeHandler ( - ACPI_HANDLE GpeDevice, - UINT32 GpeNumber, - ACPI_EVENT_HANDLER Address) -{ - ACPI_GPE_EVENT_INFO *GpeEventInfo; - ACPI_HANDLER_INFO *Handler; - ACPI_STATUS Status; - ACPI_CPU_FLAGS Flags; - - - ACPI_FUNCTION_TRACE (AcpiRemoveGpeHandler); - - - /* Parameter validation */ - - if (!Address) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Ensure that we have a valid GPE number */ - - GpeEventInfo = AcpiEvGetGpeEventInfo (GpeDevice, GpeNumber); - if (!GpeEventInfo) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - /* Make sure that a handler is indeed installed */ - - if ((GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK) != ACPI_GPE_DISPATCH_HANDLER) - { - Status = AE_NOT_EXIST; - goto UnlockAndExit; - } - - /* Make sure that the installed handler is the same */ - - if (GpeEventInfo->Dispatch.Handler->Address != Address) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - /* Disable the GPE before removing the handler */ - - Status = AcpiEvDisableGpe (GpeEventInfo); - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - - /* Remove the handler */ - - Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); - Handler = GpeEventInfo->Dispatch.Handler; - - /* Restore Method node (if any), set dispatch flags */ - - GpeEventInfo->Dispatch.MethodNode = Handler->MethodNode; - GpeEventInfo->Flags &= ~ACPI_GPE_DISPATCH_MASK; /* Clear bits */ - if (Handler->MethodNode) - { - GpeEventInfo->Flags |= ACPI_GPE_DISPATCH_METHOD; - } - AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); - - /* Now we can free the handler object */ - - ACPI_FREE (Handler); - - -UnlockAndExit: - (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiRemoveGpeHandler) - - -/******************************************************************************* - * - * FUNCTION: AcpiAcquireGlobalLock - * - * PARAMETERS: Timeout - How long the caller is willing to wait - * Handle - Where the handle to the lock is returned - * (if acquired) - * - * RETURN: Status - * - * DESCRIPTION: Acquire the ACPI Global Lock - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAcquireGlobalLock ( - UINT16 Timeout, - UINT32 *Handle) -{ - ACPI_STATUS Status; - - - if (!Handle) - { - return (AE_BAD_PARAMETER); - } - - /* Must lock interpreter to prevent race conditions */ - - AcpiExEnterInterpreter (); - Status = AcpiEvAcquireGlobalLock (Timeout); - AcpiExExitInterpreter (); - - if (ACPI_SUCCESS (Status)) - { - AcpiGbl_GlobalLockHandle++; - *Handle = AcpiGbl_GlobalLockHandle; - } - - return (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiAcquireGlobalLock) - - -/******************************************************************************* - * - * FUNCTION: AcpiReleaseGlobalLock - * - * PARAMETERS: Handle - Returned from AcpiAcquireGlobalLock - * - * RETURN: Status - * - * DESCRIPTION: Release the ACPI Global Lock. The handle must be valid. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiReleaseGlobalLock ( - UINT32 Handle) -{ - ACPI_STATUS Status; - - - if (Handle != AcpiGbl_GlobalLockHandle) - { - return (AE_NOT_ACQUIRED); - } - - Status = AcpiEvReleaseGlobalLock (); - return (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiReleaseGlobalLock) - diff --git a/sys/contrib/dev/acpica-unix-20061109/events/evxfevnt.c b/sys/contrib/dev/acpica-unix-20061109/events/evxfevnt.c deleted file mode 100644 index fd52ccbb0a..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/events/evxfevnt.c +++ /dev/null @@ -1,924 +0,0 @@ -/****************************************************************************** - * - * Module Name: evxfevnt - External Interfaces, ACPI event disable/enable - * $Revision: 1.92 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __EVXFEVNT_C__ - -#include "acpi.h" -#include "acevents.h" -#include "acnamesp.h" -#include "actables.h" - -#define _COMPONENT ACPI_EVENTS - ACPI_MODULE_NAME ("evxfevnt") - - -/******************************************************************************* - * - * FUNCTION: AcpiEnable - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Transfers the system into ACPI mode. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEnable ( - void) -{ - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE (AcpiEnable); - - - /* ACPI tables must be present */ - - if (!AcpiTbTablesLoaded ()) - { - return_ACPI_STATUS (AE_NO_ACPI_TABLES); - } - - /* Check current mode */ - - if (AcpiHwGetMode() == ACPI_SYS_MODE_ACPI) - { - ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "System is already in ACPI mode\n")); - } - else - { - /* Transition to ACPI mode */ - - Status = AcpiHwSetMode (ACPI_SYS_MODE_ACPI); - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR ((AE_INFO, "Could not transition to ACPI mode")); - return_ACPI_STATUS (Status); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_INIT, - "Transition to ACPI mode successful\n")); - } - - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiEnable) - - -/******************************************************************************* - * - * FUNCTION: AcpiDisable - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Transfers the system into LEGACY (non-ACPI) mode. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDisable ( - void) -{ - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE (AcpiDisable); - - - if (AcpiHwGetMode() == ACPI_SYS_MODE_LEGACY) - { - ACPI_DEBUG_PRINT ((ACPI_DB_INIT, - "System is already in legacy (non-ACPI) mode\n")); - } - else - { - /* Transition to LEGACY mode */ - - Status = AcpiHwSetMode (ACPI_SYS_MODE_LEGACY); - - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR ((AE_INFO, - "Could not exit ACPI mode to legacy mode")); - return_ACPI_STATUS (Status); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "ACPI mode disabled\n")); - } - - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiDisable) - - -/******************************************************************************* - * - * FUNCTION: AcpiEnableEvent - * - * PARAMETERS: Event - The fixed eventto be enabled - * Flags - Reserved - * - * RETURN: Status - * - * DESCRIPTION: Enable an ACPI event (fixed) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEnableEvent ( - UINT32 Event, - UINT32 Flags) -{ - ACPI_STATUS Status = AE_OK; - UINT32 Value; - - - ACPI_FUNCTION_TRACE (AcpiEnableEvent); - - - /* Decode the Fixed Event */ - - if (Event > ACPI_EVENT_MAX) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* - * Enable the requested fixed event (by writing a one to the - * enable register bit) - */ - Status = AcpiSetRegister (AcpiGbl_FixedEventInfo[Event].EnableRegisterId, 1); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Make sure that the hardware responded */ - - Status = AcpiGetRegister (AcpiGbl_FixedEventInfo[Event].EnableRegisterId, - &Value); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - if (Value != 1) - { - ACPI_ERROR ((AE_INFO, - "Could not enable %s event", AcpiUtGetEventName (Event))); - return_ACPI_STATUS (AE_NO_HARDWARE_RESPONSE); - } - - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiEnableEvent) - - -/******************************************************************************* - * - * FUNCTION: AcpiSetGpeType - * - * PARAMETERS: GpeDevice - Parent GPE Device - * GpeNumber - GPE level within the GPE block - * Type - New GPE type - * - * RETURN: Status - * - * DESCRIPTION: Set the type of an individual GPE - * - ******************************************************************************/ - -ACPI_STATUS -AcpiSetGpeType ( - ACPI_HANDLE GpeDevice, - UINT32 GpeNumber, - UINT8 Type) -{ - ACPI_STATUS Status = AE_OK; - ACPI_GPE_EVENT_INFO *GpeEventInfo; - - - ACPI_FUNCTION_TRACE (AcpiSetGpeType); - - - /* Ensure that we have a valid GPE number */ - - GpeEventInfo = AcpiEvGetGpeEventInfo (GpeDevice, GpeNumber); - if (!GpeEventInfo) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - if ((GpeEventInfo->Flags & ACPI_GPE_TYPE_MASK) == Type) - { - return_ACPI_STATUS (AE_OK); - } - - /* Set the new type (will disable GPE if currently enabled) */ - - Status = AcpiEvSetGpeType (GpeEventInfo, Type); - -UnlockAndExit: - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiSetGpeType) - - -/******************************************************************************* - * - * FUNCTION: AcpiEnableGpe - * - * PARAMETERS: GpeDevice - Parent GPE Device - * GpeNumber - GPE level within the GPE block - * Flags - Just enable, or also wake enable? - * Called from ISR or not - * - * RETURN: Status - * - * DESCRIPTION: Enable an ACPI event (general purpose) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEnableGpe ( - ACPI_HANDLE GpeDevice, - UINT32 GpeNumber, - UINT32 Flags) -{ - ACPI_STATUS Status = AE_OK; - ACPI_GPE_EVENT_INFO *GpeEventInfo; - - - ACPI_FUNCTION_TRACE (AcpiEnableGpe); - - - /* Use semaphore lock if not executing at interrupt level */ - - if (Flags & ACPI_NOT_ISR) - { - Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* Ensure that we have a valid GPE number */ - - GpeEventInfo = AcpiEvGetGpeEventInfo (GpeDevice, GpeNumber); - if (!GpeEventInfo) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - /* Perform the enable */ - - Status = AcpiEvEnableGpe (GpeEventInfo, TRUE); - -UnlockAndExit: - if (Flags & ACPI_NOT_ISR) - { - (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); - } - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiEnableGpe) - - -/******************************************************************************* - * - * FUNCTION: AcpiDisableGpe - * - * PARAMETERS: GpeDevice - Parent GPE Device - * GpeNumber - GPE level within the GPE block - * Flags - Just disable, or also wake disable? - * Called from ISR or not - * - * RETURN: Status - * - * DESCRIPTION: Disable an ACPI event (general purpose) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDisableGpe ( - ACPI_HANDLE GpeDevice, - UINT32 GpeNumber, - UINT32 Flags) -{ - ACPI_STATUS Status = AE_OK; - ACPI_GPE_EVENT_INFO *GpeEventInfo; - - - ACPI_FUNCTION_TRACE (AcpiDisableGpe); - - - /* Use semaphore lock if not executing at interrupt level */ - - if (Flags & ACPI_NOT_ISR) - { - Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* Ensure that we have a valid GPE number */ - - GpeEventInfo = AcpiEvGetGpeEventInfo (GpeDevice, GpeNumber); - if (!GpeEventInfo) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - Status = AcpiEvDisableGpe (GpeEventInfo); - -UnlockAndExit: - if (Flags & ACPI_NOT_ISR) - { - (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); - } - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiDisableGpe) - - -/******************************************************************************* - * - * FUNCTION: AcpiDisableEvent - * - * PARAMETERS: Event - The fixed eventto be enabled - * Flags - Reserved - * - * RETURN: Status - * - * DESCRIPTION: Disable an ACPI event (fixed) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDisableEvent ( - UINT32 Event, - UINT32 Flags) -{ - ACPI_STATUS Status = AE_OK; - UINT32 Value; - - - ACPI_FUNCTION_TRACE (AcpiDisableEvent); - - - /* Decode the Fixed Event */ - - if (Event > ACPI_EVENT_MAX) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* - * Disable the requested fixed event (by writing a zero to the - * enable register bit) - */ - Status = AcpiSetRegister (AcpiGbl_FixedEventInfo[Event].EnableRegisterId, 0); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - Status = AcpiGetRegister (AcpiGbl_FixedEventInfo[Event].EnableRegisterId, - &Value); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - if (Value != 0) - { - ACPI_ERROR ((AE_INFO, - "Could not disable %s events", AcpiUtGetEventName (Event))); - return_ACPI_STATUS (AE_NO_HARDWARE_RESPONSE); - } - - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiDisableEvent) - - -/******************************************************************************* - * - * FUNCTION: AcpiClearEvent - * - * PARAMETERS: Event - The fixed event to be cleared - * - * RETURN: Status - * - * DESCRIPTION: Clear an ACPI event (fixed) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiClearEvent ( - UINT32 Event) -{ - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE (AcpiClearEvent); - - - /* Decode the Fixed Event */ - - if (Event > ACPI_EVENT_MAX) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* - * Clear the requested fixed event (By writing a one to the - * status register bit) - */ - Status = AcpiSetRegister (AcpiGbl_FixedEventInfo[Event].StatusRegisterId, 1); - - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiClearEvent) - - -/******************************************************************************* - * - * FUNCTION: AcpiClearGpe - * - * PARAMETERS: GpeDevice - Parent GPE Device - * GpeNumber - GPE level within the GPE block - * Flags - Called from an ISR or not - * - * RETURN: Status - * - * DESCRIPTION: Clear an ACPI event (general purpose) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiClearGpe ( - ACPI_HANDLE GpeDevice, - UINT32 GpeNumber, - UINT32 Flags) -{ - ACPI_STATUS Status = AE_OK; - ACPI_GPE_EVENT_INFO *GpeEventInfo; - - - ACPI_FUNCTION_TRACE (AcpiClearGpe); - - - /* Use semaphore lock if not executing at interrupt level */ - - if (Flags & ACPI_NOT_ISR) - { - Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* Ensure that we have a valid GPE number */ - - GpeEventInfo = AcpiEvGetGpeEventInfo (GpeDevice, GpeNumber); - if (!GpeEventInfo) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - Status = AcpiHwClearGpe (GpeEventInfo); - -UnlockAndExit: - if (Flags & ACPI_NOT_ISR) - { - (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); - } - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiClearGpe) - - -/******************************************************************************* - * - * FUNCTION: AcpiGetEventStatus - * - * PARAMETERS: Event - The fixed event - * EventStatus - Where the current status of the event will - * be returned - * - * RETURN: Status - * - * DESCRIPTION: Obtains and returns the current status of the event - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetEventStatus ( - UINT32 Event, - ACPI_EVENT_STATUS *EventStatus) -{ - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE (AcpiGetEventStatus); - - - if (!EventStatus) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Decode the Fixed Event */ - - if (Event > ACPI_EVENT_MAX) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Get the status of the requested fixed event */ - - Status = AcpiGetRegister (AcpiGbl_FixedEventInfo[Event].StatusRegisterId, - EventStatus); - - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiGetEventStatus) - - -/******************************************************************************* - * - * FUNCTION: AcpiGetGpeStatus - * - * PARAMETERS: GpeDevice - Parent GPE Device - * GpeNumber - GPE level within the GPE block - * Flags - Called from an ISR or not - * EventStatus - Where the current status of the event will - * be returned - * - * RETURN: Status - * - * DESCRIPTION: Get status of an event (general purpose) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetGpeStatus ( - ACPI_HANDLE GpeDevice, - UINT32 GpeNumber, - UINT32 Flags, - ACPI_EVENT_STATUS *EventStatus) -{ - ACPI_STATUS Status = AE_OK; - ACPI_GPE_EVENT_INFO *GpeEventInfo; - - - ACPI_FUNCTION_TRACE (AcpiGetGpeStatus); - - - /* Use semaphore lock if not executing at interrupt level */ - - if (Flags & ACPI_NOT_ISR) - { - Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* Ensure that we have a valid GPE number */ - - GpeEventInfo = AcpiEvGetGpeEventInfo (GpeDevice, GpeNumber); - if (!GpeEventInfo) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - /* Obtain status on the requested GPE number */ - - Status = AcpiHwGetGpeStatus (GpeEventInfo, EventStatus); - -UnlockAndExit: - if (Flags & ACPI_NOT_ISR) - { - (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); - } - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiGetGpeStatus) - - -/******************************************************************************* - * - * FUNCTION: AcpiInstallGpeBlock - * - * PARAMETERS: GpeDevice - Handle to the parent GPE Block Device - * GpeBlockAddress - Address and SpaceID - * RegisterCount - Number of GPE register pairs in the block - * InterruptNumber - H/W interrupt for the block - * - * RETURN: Status - * - * DESCRIPTION: Create and Install a block of GPE registers - * - ******************************************************************************/ - -ACPI_STATUS -AcpiInstallGpeBlock ( - ACPI_HANDLE GpeDevice, - ACPI_GENERIC_ADDRESS *GpeBlockAddress, - UINT32 RegisterCount, - UINT32 InterruptNumber) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_NAMESPACE_NODE *Node; - ACPI_GPE_BLOCK_INFO *GpeBlock; - - - ACPI_FUNCTION_TRACE (AcpiInstallGpeBlock); - - - if ((!GpeDevice) || - (!GpeBlockAddress) || - (!RegisterCount)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - Node = AcpiNsMapHandleToNode (GpeDevice); - if (!Node) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - /* - * For user-installed GPE Block Devices, the GpeBlockBaseNumber - * is always zero - */ - Status = AcpiEvCreateGpeBlock (Node, GpeBlockAddress, RegisterCount, - 0, InterruptNumber, &GpeBlock); - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - - /* Run the _PRW methods and enable the GPEs */ - - Status = AcpiEvInitializeGpeBlock (Node, GpeBlock); - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - - /* Get the DeviceObject attached to the node */ - - ObjDesc = AcpiNsGetAttachedObject (Node); - if (!ObjDesc) - { - /* No object, create a new one */ - - ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_DEVICE); - if (!ObjDesc) - { - Status = AE_NO_MEMORY; - goto UnlockAndExit; - } - - Status = AcpiNsAttachObject (Node, ObjDesc, ACPI_TYPE_DEVICE); - - /* Remove local reference to the object */ - - AcpiUtRemoveReference (ObjDesc); - - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - } - - /* Install the GPE block in the DeviceObject */ - - ObjDesc->Device.GpeBlock = GpeBlock; - - -UnlockAndExit: - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiInstallGpeBlock) - - -/******************************************************************************* - * - * FUNCTION: AcpiRemoveGpeBlock - * - * PARAMETERS: GpeDevice - Handle to the parent GPE Block Device - * - * RETURN: Status - * - * DESCRIPTION: Remove a previously installed block of GPE registers - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRemoveGpeBlock ( - ACPI_HANDLE GpeDevice) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - - - ACPI_FUNCTION_TRACE (AcpiRemoveGpeBlock); - - - if (!GpeDevice) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - Node = AcpiNsMapHandleToNode (GpeDevice); - if (!Node) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - /* Get the DeviceObject attached to the node */ - - ObjDesc = AcpiNsGetAttachedObject (Node); - if (!ObjDesc || - !ObjDesc->Device.GpeBlock) - { - return_ACPI_STATUS (AE_NULL_OBJECT); - } - - /* Delete the GPE block (but not the DeviceObject) */ - - Status = AcpiEvDeleteGpeBlock (ObjDesc->Device.GpeBlock); - if (ACPI_SUCCESS (Status)) - { - ObjDesc->Device.GpeBlock = NULL; - } - -UnlockAndExit: - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiRemoveGpeBlock) - diff --git a/sys/contrib/dev/acpica-unix-20061109/events/evxfregn.c b/sys/contrib/dev/acpica-unix-20061109/events/evxfregn.c deleted file mode 100644 index 834d65a65d..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/events/evxfregn.c +++ /dev/null @@ -1,345 +0,0 @@ -/****************************************************************************** - * - * Module Name: evxfregn - External Interfaces, ACPI Operation Regions and - * Address Spaces. - * $Revision: 1.69 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __EVXFREGN_C__ - -#include "acpi.h" -#include "acnamesp.h" -#include "acevents.h" - -#define _COMPONENT ACPI_EVENTS - ACPI_MODULE_NAME ("evxfregn") - - -/******************************************************************************* - * - * FUNCTION: AcpiInstallAddressSpaceHandler - * - * PARAMETERS: Device - Handle for the device - * SpaceId - The address space ID - * Handler - Address of the handler - * Setup - Address of the setup function - * Context - Value passed to the handler on each access - * - * RETURN: Status - * - * DESCRIPTION: Install a handler for all OpRegions of a given SpaceId. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiInstallAddressSpaceHandler ( - ACPI_HANDLE Device, - ACPI_ADR_SPACE_TYPE SpaceId, - ACPI_ADR_SPACE_HANDLER Handler, - ACPI_ADR_SPACE_SETUP Setup, - void *Context) -{ - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (AcpiInstallAddressSpaceHandler); - - - /* Parameter validation */ - - if (!Device) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Convert and validate the device handle */ - - Node = AcpiNsMapHandleToNode (Device); - if (!Node) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - /* Install the handler for all Regions for this Space ID */ - - Status = AcpiEvInstallSpaceHandler (Node, SpaceId, Handler, Setup, Context); - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - - /* Run all _REG methods for this address space */ - - Status = AcpiEvExecuteRegMethods (Node, SpaceId); - -UnlockAndExit: - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiInstallAddressSpaceHandler) - - -/******************************************************************************* - * - * FUNCTION: AcpiRemoveAddressSpaceHandler - * - * PARAMETERS: Device - Handle for the device - * SpaceId - The address space ID - * Handler - Address of the handler - * - * RETURN: Status - * - * DESCRIPTION: Remove a previously installed handler. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRemoveAddressSpaceHandler ( - ACPI_HANDLE Device, - ACPI_ADR_SPACE_TYPE SpaceId, - ACPI_ADR_SPACE_HANDLER Handler) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *HandlerObj; - ACPI_OPERAND_OBJECT *RegionObj; - ACPI_OPERAND_OBJECT **LastObjPtr; - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (AcpiRemoveAddressSpaceHandler); - - - /* Parameter validation */ - - if (!Device) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Convert and validate the device handle */ - - Node = AcpiNsMapHandleToNode (Device); - if (!Node || - ((Node->Type != ACPI_TYPE_DEVICE) && - (Node->Type != ACPI_TYPE_PROCESSOR) && - (Node->Type != ACPI_TYPE_THERMAL) && - (Node != AcpiGbl_RootNode))) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - /* Make sure the internal object exists */ - - ObjDesc = AcpiNsGetAttachedObject (Node); - if (!ObjDesc) - { - Status = AE_NOT_EXIST; - goto UnlockAndExit; - } - - /* Find the address handler the user requested */ - - HandlerObj = ObjDesc->Device.Handler; - LastObjPtr = &ObjDesc->Device.Handler; - while (HandlerObj) - { - /* We have a handler, see if user requested this one */ - - if (HandlerObj->AddressSpace.SpaceId == SpaceId) - { - /* Handler must be the same as the installed handler */ - - if (HandlerObj->AddressSpace.Handler != Handler) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - /* Matched SpaceId, first dereference this in the Regions */ - - ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, - "Removing address handler %p(%p) for region %s on Device %p(%p)\n", - HandlerObj, Handler, AcpiUtGetRegionName (SpaceId), - Node, ObjDesc)); - - RegionObj = HandlerObj->AddressSpace.RegionList; - - /* Walk the handler's region list */ - - while (RegionObj) - { - /* - * First disassociate the handler from the region. - * - * NOTE: this doesn't mean that the region goes away - * The region is just inaccessible as indicated to - * the _REG method - */ - AcpiEvDetachRegion (RegionObj, TRUE); - - /* - * Walk the list: Just grab the head because the - * DetachRegion removed the previous head. - */ - RegionObj = HandlerObj->AddressSpace.RegionList; - - } - - /* Remove this Handler object from the list */ - - *LastObjPtr = HandlerObj->AddressSpace.Next; - - /* Now we can delete the handler object */ - - AcpiUtRemoveReference (HandlerObj); - goto UnlockAndExit; - } - - /* Walk the linked list of handlers */ - - LastObjPtr = &HandlerObj->AddressSpace.Next; - HandlerObj = HandlerObj->AddressSpace.Next; - } - - /* The handler does not exist */ - - ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, - "Unable to remove address handler %p for %s(%X), DevNode %p, obj %p\n", - Handler, AcpiUtGetRegionName (SpaceId), SpaceId, Node, ObjDesc)); - - Status = AE_NOT_EXIST; - -UnlockAndExit: - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiRemoveAddressSpaceHandler) - diff --git a/sys/contrib/dev/acpica-unix-20061109/generate/lint/lint.bat b/sys/contrib/dev/acpica-unix-20061109/generate/lint/lint.bat deleted file mode 100644 index a58edf01f9..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/generate/lint/lint.bat +++ /dev/null @@ -1,10 +0,0 @@ -"C:\Program Files\Lint\Lint-nt" +v -i"C:\Acpi\Generate\Lint" std64.lnt -os(C:\Acpi\Generate\Lint\LintOut.txt) %1 %2 %3 %4 %5 %6 %7 %8 %9 -echo "64-bit lint completed" >> c:\acpi\Generate\lint\LintOut.txt -"C:\Program Files\Lint\Lint-nt" +v -i"C:\Acpi\Generate\Lint" std32.lnt +os(C:\Acpi\Generate\Lint\LintOut.txt) %1 %2 %3 %4 %5 %6 %7 %8 %9 -echo "32-bit lint completed" >> c:\acpi\Generate\lint\LintOut.txt -"C:\Program Files\Lint\Lint-nt" +v -i"C:\Acpi\Generate\Lint" std16.lnt +os(C:\Acpi\Generate\Lint\LintOut.txt) %1 %2 %3 %4 %5 %6 %7 %8 %9 -echo "16-bit lint completed" >> c:\acpi\Generate\lint\LintOut.txt -@echo off -echo --- -echo output placed in C:\Acpi\Generate\Lint\LintOut.txt - diff --git a/sys/contrib/dev/acpica-unix-20061109/generate/lint/lset.bat b/sys/contrib/dev/acpica-unix-20061109/generate/lint/lset.bat deleted file mode 100644 index 9eb68da304..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/generate/lint/lset.bat +++ /dev/null @@ -1 +0,0 @@ -set path=%PATH%;c:\acpi\generate\lint diff --git a/sys/contrib/dev/acpica-unix-20061109/generate/lint/options.lnt b/sys/contrib/dev/acpica-unix-20061109/generate/lint/options.lnt deleted file mode 100644 index 0d3f92e5df..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/generate/lint/options.lnt +++ /dev/null @@ -1,73 +0,0 @@ -// Please note -- this is a representative set of error suppression -// options. Please adjust to suit your own policies -// See manual (chapter LIVING WITH LINT) -// for further details. - --ic:\acpi\source\include --ic:\acpi\source\include\platform --ic:\acpi\generate\msvc\aslcompiler --ic:\progra~1\"Microsoft Visual Studio"\VC98\include - -/* Global options */ - --A // ANSI C only -+fie // Enum is integer --dACPI_USE_DO_WHILE_0 --dACPI_DEBUG_OUTPUT --dACPI_APPLICATION --dACPI_DEBUGGER --dACPI_DISASSEMBLER --dACPI_ENABLE_OBJECT_CACHE --dACPI_DBG_TRACK_ALLOCATIONS --d_LINT=1 - --printf(4, AcpiUtDebugPrint, AcpiUtDebugPrintRaw) --printf(1, AcpiOsPrintf, AcpiOsVprintf) - -/* Macro exceptions */ - --emacro( (413), ACPI_OFFSET ) // use of NULL pointer creates a stir --emacro( (413), ACPI_TO_INTEGER ) // use of NULL pointer creates a stir --emacro( (413), ACPI_TO_POINTER ) // use of NULL pointer creates a stir --emacro( (413), ACPI_ADD_PTR ) // use of NULL pointer creates a stir --emacro( (413), ACPI_PTR_DIFF ) // use of NULL pointer creates a stir --emacro( (413), ACPI_FADT_OFFSET ) // use of NULL pointer creates a stir --emacro( (413), ASL_RESDESC_OFFSET ) // use of NULL pointer creates a stir - - --emacro( 826, ACPI_NEXT_RESOURCE) // Pointer cast --emacro( 826, ACPI_MOVE_UNALIGNED16_TO_16) // Pointer cast --emacro( 826, ACPI_MOVE_UNALIGNED16_TO_32) // Pointer cast --emacro( 826, ACPI_MOVE_UNALIGNED32_TO_32) // Pointer cast --emacro( 950, ACPI_INTERNAL_VAR_XFACE) // Uses non-ANSI --emacro( 950, ACPI_SYSTEM_XFACE) // Uses non-ANSI --emacro( 826, ACPI_CAST_PTR) // Pointer cast --emacro( 826, ACPI_ADD_PTR) // Pointer cast --emacro( 826, ACPI_LODWORD) // Pointer cast --emacro( 826, ACPI_HIDWORD) // Pointer cast - -/* Symbol exceptions */ - --esym( 528, _AcpiModuleName) // Symbol not always used, but always present --esym( 550, CurrentSp) // Used to track stack use --esym( 534, AcpiDmDumpName) // Return value not always used --esym( 534, AcpiDmCommaIfListMember) // Return value not always used - -/* Symbol exceptions for generation of iASL compiler */ - --esym( 534, TrWalkParseTree) // Return value not always used --esym( 534, AslCompilerparse) // Return value not always used --esym( 534, OpcSetOptimalIntegerSize) // Return value not always used --esym( 534, AslCompilererror) // Return value not always used - -/* Global exceptions */ - --e716 // Allow while(1) --e717 // Allow do..while(0) --e801 // Allow judicious use of goto without incurring complaint --e818 // Don't make suggestions about const to avoid "const" pollution --e715 // Ignore non-referenced formal parameters --e750 // Ignore non-referenced local macros (_MODULE_NAME, _COMPONENT, etc.) --e834 // - followed by + is "confusing" NOT. --e820 // Allow Boolean test of a parenthesized assignment --e778 // Allow constant expressions to evaluate to zero diff --git a/sys/contrib/dev/acpica-unix-20061109/generate/lint/readme.txt b/sys/contrib/dev/acpica-unix-20061109/generate/lint/readme.txt deleted file mode 100644 index 3f427ad6bd..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/generate/lint/readme.txt +++ /dev/null @@ -1,14 +0,0 @@ - -Lint files for PC-Lint (FlexLint) by Gimpel Software, Inc. - -These are the configuration and option files used to lint the -ACPI-CA software. - -lset.bat - adds lint directory to the command line search path -lint.bat - lint batch file for 32 and 64 bit lint -std16.lnt - 16-bit options -std32.lnt - 32-bit options -std64.lnt - 64-bit options -options.lnt - common options -others - windows/dos compiler option files - diff --git a/sys/contrib/dev/acpica-unix-20061109/generate/lint/std16.lnt b/sys/contrib/dev/acpica-unix-20061109/generate/lint/std16.lnt deleted file mode 100644 index c3a116a6e4..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/generate/lint/std16.lnt +++ /dev/null @@ -1,16 +0,0 @@ -// Microsoft C and Visual C++ 4.x, -mL -si2 -spN2 -spF4, lib-win.lnt -// Standard lint options - - -c:\acpi\generate\lint\co-msc40.lnt -//c:\acpi\generate\lint\lib-win.lnt - --dMSDOS --dACPI_MACHINE_WIDTH=16 -//-d_MSC_VER - --e747 // Compiler supports parameter conversions - - -options.lnt -mL -si2 -spN2 -spF4 -sl4 - diff --git a/sys/contrib/dev/acpica-unix-20061109/generate/lint/std32.lnt b/sys/contrib/dev/acpica-unix-20061109/generate/lint/std32.lnt deleted file mode 100644 index 2e84135ab4..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/generate/lint/std32.lnt +++ /dev/null @@ -1,14 +0,0 @@ -// Microsoft C and Visual C++ 6.x, -si4 -sp4, lib-w32.lnt -// Standard lint options - -c:\acpi\generate\lint\co-msc60.lnt -//c:\acpi\generate\lint\lib-w32.lnt - --dACPI_MACHINE_WIDTH=32 --dWIN32=1 --d_MSC_VER=1 -+fll // enable long long -+rw(__asm) // enable in-line assembly --esym( 950, __asm) // Used to track stack use - -options.lnt -si4 -sp4 diff --git a/sys/contrib/dev/acpica-unix-20061109/generate/lint/std64.lnt b/sys/contrib/dev/acpica-unix-20061109/generate/lint/std64.lnt deleted file mode 100644 index be7be5926b..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/generate/lint/std64.lnt +++ /dev/null @@ -1,21 +0,0 @@ -// Generic Compilers, -si4 -sl4 -sp8, -// Standard lint options - - -c:\acpi\generate\lint\co.lnt - -/* IA-64 */ - --dACPI_MACHINE_WIDTH=64 - --e747 // Compiler supports parameter conversions --e46 // Compiler supports bitfields other than int --d_IA64 --dWIN64 --d_MAC -+fll // enable long long - --si4 -sl4 -sp8 -sll8 - -options.lnt - diff --git a/sys/contrib/dev/acpica-unix-20061109/hardware/hwacpi.c b/sys/contrib/dev/acpica-unix-20061109/hardware/hwacpi.c deleted file mode 100644 index cd8461c832..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/hardware/hwacpi.c +++ /dev/null @@ -1,277 +0,0 @@ - -/****************************************************************************** - * - * Module Name: hwacpi - ACPI Hardware Initialization/Mode Interface - * $Revision: 1.77 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __HWACPI_C__ - -#include "acpi.h" - - -#define _COMPONENT ACPI_HARDWARE - ACPI_MODULE_NAME ("hwacpi") - - -/****************************************************************************** - * - * FUNCTION: AcpiHwSetMode - * - * PARAMETERS: Mode - SYS_MODE_ACPI or SYS_MODE_LEGACY - * - * RETURN: Status - * - * DESCRIPTION: Transitions the system into the requested mode. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiHwSetMode ( - UINT32 Mode) -{ - - ACPI_STATUS Status; - UINT32 Retry; - - - ACPI_FUNCTION_TRACE (HwSetMode); - - /* - * ACPI 2.0 clarified that if SMI_CMD in FADT is zero, - * system does not support mode transition. - */ - if (!AcpiGbl_FADT.SmiCommand) - { - ACPI_ERROR ((AE_INFO, "No SMI_CMD in FADT, mode transition failed")); - return_ACPI_STATUS (AE_NO_HARDWARE_RESPONSE); - } - - /* - * ACPI 2.0 clarified the meaning of ACPI_ENABLE and ACPI_DISABLE - * in FADT: If it is zero, enabling or disabling is not supported. - * As old systems may have used zero for mode transition, - * we make sure both the numbers are zero to determine these - * transitions are not supported. - */ - if (!AcpiGbl_FADT.AcpiEnable && !AcpiGbl_FADT.AcpiDisable) - { - ACPI_ERROR ((AE_INFO, - "No ACPI mode transition supported in this system (enable/disable both zero)")); - return_ACPI_STATUS (AE_OK); - } - - switch (Mode) - { - case ACPI_SYS_MODE_ACPI: - - /* BIOS should have disabled ALL fixed and GP events */ - - Status = AcpiOsWritePort (AcpiGbl_FADT.SmiCommand, - (UINT32) AcpiGbl_FADT.AcpiEnable, 8); - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Attempting to enable ACPI mode\n")); - break; - - case ACPI_SYS_MODE_LEGACY: - - /* - * BIOS should clear all fixed status bits and restore fixed event - * enable bits to default - */ - Status = AcpiOsWritePort (AcpiGbl_FADT.SmiCommand, - (UINT32) AcpiGbl_FADT.AcpiDisable, 8); - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Attempting to enable Legacy (non-ACPI) mode\n")); - break; - - default: - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Could not write ACPI mode change")); - return_ACPI_STATUS (Status); - } - - /* - * Some hardware takes a LONG time to switch modes. Give them 3 sec to - * do so, but allow faster systems to proceed more quickly. - */ - Retry = 3000; - while (Retry) - { - if (AcpiHwGetMode() == Mode) - { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Mode %X successfully enabled\n", - Mode)); - return_ACPI_STATUS (AE_OK); - } - AcpiOsStall(1000); - Retry--; - } - - ACPI_ERROR ((AE_INFO, "Hardware did not change modes")); - return_ACPI_STATUS (AE_NO_HARDWARE_RESPONSE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiHwGetMode - * - * PARAMETERS: none - * - * RETURN: SYS_MODE_ACPI or SYS_MODE_LEGACY - * - * DESCRIPTION: Return current operating state of system. Determined by - * querying the SCI_EN bit. - * - ******************************************************************************/ - -UINT32 -AcpiHwGetMode ( - void) -{ - ACPI_STATUS Status; - UINT32 Value; - - - ACPI_FUNCTION_TRACE (HwGetMode); - - - /* - * ACPI 2.0 clarified that if SMI_CMD in FADT is zero, - * system does not support mode transition. - */ - if (!AcpiGbl_FADT.SmiCommand) - { - return_UINT32 (ACPI_SYS_MODE_ACPI); - } - - Status = AcpiGetRegister (ACPI_BITREG_SCI_ENABLE, &Value); - if (ACPI_FAILURE (Status)) - { - return_UINT32 (ACPI_SYS_MODE_LEGACY); - } - - if (Value) - { - return_UINT32 (ACPI_SYS_MODE_ACPI); - } - else - { - return_UINT32 (ACPI_SYS_MODE_LEGACY); - } -} diff --git a/sys/contrib/dev/acpica-unix-20061109/hardware/hwgpe.c b/sys/contrib/dev/acpica-unix-20061109/hardware/hwgpe.c deleted file mode 100644 index 25259f531c..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/hardware/hwgpe.c +++ /dev/null @@ -1,545 +0,0 @@ - -/****************************************************************************** - * - * Module Name: hwgpe - Low level GPE enable/disable/clear functions - * $Revision: 1.74 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "acevents.h" - -#define _COMPONENT ACPI_HARDWARE - ACPI_MODULE_NAME ("hwgpe") - -/* Local prototypes */ - -static ACPI_STATUS -AcpiHwEnableWakeupGpeBlock ( - ACPI_GPE_XRUPT_INFO *GpeXruptInfo, - ACPI_GPE_BLOCK_INFO *GpeBlock); - - -/****************************************************************************** - * - * FUNCTION: AcpiHwWriteGpeEnableReg - * - * PARAMETERS: GpeEventInfo - Info block for the GPE to be enabled - * - * RETURN: Status - * - * DESCRIPTION: Write a GPE enable register. Note: The bit for this GPE must - * already be cleared or set in the parent register - * EnableForRun mask. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiHwWriteGpeEnableReg ( - ACPI_GPE_EVENT_INFO *GpeEventInfo) -{ - ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; - ACPI_STATUS Status; - - - ACPI_FUNCTION_ENTRY (); - - - /* Get the info block for the entire GPE register */ - - GpeRegisterInfo = GpeEventInfo->RegisterInfo; - if (!GpeRegisterInfo) - { - return (AE_NOT_EXIST); - } - - /* Write the entire GPE (runtime) enable register */ - - Status = AcpiHwLowLevelWrite (8, GpeRegisterInfo->EnableForRun, - &GpeRegisterInfo->EnableAddress); - - return (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiHwClearGpe - * - * PARAMETERS: GpeEventInfo - Info block for the GPE to be cleared - * - * RETURN: Status - * - * DESCRIPTION: Clear the status bit for a single GPE. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiHwClearGpe ( - ACPI_GPE_EVENT_INFO *GpeEventInfo) -{ - ACPI_STATUS Status; - UINT8 RegisterBit; - - - ACPI_FUNCTION_ENTRY (); - - - RegisterBit = (UINT8) - (1 << (GpeEventInfo->GpeNumber - GpeEventInfo->RegisterInfo->BaseGpeNumber)); - - /* - * Write a one to the appropriate bit in the status register to - * clear this GPE. - */ - Status = AcpiHwLowLevelWrite (8, RegisterBit, - &GpeEventInfo->RegisterInfo->StatusAddress); - - return (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiHwGetGpeStatus - * - * PARAMETERS: GpeEventInfo - Info block for the GPE to queried - * EventStatus - Where the GPE status is returned - * - * RETURN: Status - * - * DESCRIPTION: Return the status of a single GPE. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiHwGetGpeStatus ( - ACPI_GPE_EVENT_INFO *GpeEventInfo, - ACPI_EVENT_STATUS *EventStatus) -{ - UINT32 InByte; - UINT8 RegisterBit; - ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; - ACPI_STATUS Status; - ACPI_EVENT_STATUS LocalEventStatus = 0; - - - ACPI_FUNCTION_ENTRY (); - - - if (!EventStatus) - { - return (AE_BAD_PARAMETER); - } - - /* Get the info block for the entire GPE register */ - - GpeRegisterInfo = GpeEventInfo->RegisterInfo; - - /* Get the register bitmask for this GPE */ - - RegisterBit = (UINT8) - (1 << (GpeEventInfo->GpeNumber - GpeEventInfo->RegisterInfo->BaseGpeNumber)); - - /* GPE currently enabled? (enabled for runtime?) */ - - if (RegisterBit & GpeRegisterInfo->EnableForRun) - { - LocalEventStatus |= ACPI_EVENT_FLAG_ENABLED; - } - - /* GPE enabled for wake? */ - - if (RegisterBit & GpeRegisterInfo->EnableForWake) - { - LocalEventStatus |= ACPI_EVENT_FLAG_WAKE_ENABLED; - } - - /* GPE currently active (status bit == 1)? */ - - Status = AcpiHwLowLevelRead (8, &InByte, &GpeRegisterInfo->StatusAddress); - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - - if (RegisterBit & InByte) - { - LocalEventStatus |= ACPI_EVENT_FLAG_SET; - } - - /* Set return value */ - - (*EventStatus) = LocalEventStatus; - - -UnlockAndExit: - return (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiHwDisableGpeBlock - * - * PARAMETERS: GpeXruptInfo - GPE Interrupt info - * GpeBlock - Gpe Block info - * - * RETURN: Status - * - * DESCRIPTION: Disable all GPEs within a single GPE block - * - ******************************************************************************/ - -ACPI_STATUS -AcpiHwDisableGpeBlock ( - ACPI_GPE_XRUPT_INFO *GpeXruptInfo, - ACPI_GPE_BLOCK_INFO *GpeBlock) -{ - UINT32 i; - ACPI_STATUS Status; - - - /* Examine each GPE Register within the block */ - - for (i = 0; i < GpeBlock->RegisterCount; i++) - { - /* Disable all GPEs in this register */ - - Status = AcpiHwLowLevelWrite (8, 0x00, - &GpeBlock->RegisterInfo[i].EnableAddress); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - } - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiHwClearGpeBlock - * - * PARAMETERS: GpeXruptInfo - GPE Interrupt info - * GpeBlock - Gpe Block info - * - * RETURN: Status - * - * DESCRIPTION: Clear status bits for all GPEs within a single GPE block - * - ******************************************************************************/ - -ACPI_STATUS -AcpiHwClearGpeBlock ( - ACPI_GPE_XRUPT_INFO *GpeXruptInfo, - ACPI_GPE_BLOCK_INFO *GpeBlock) -{ - UINT32 i; - ACPI_STATUS Status; - - - /* Examine each GPE Register within the block */ - - for (i = 0; i < GpeBlock->RegisterCount; i++) - { - /* Clear status on all GPEs in this register */ - - Status = AcpiHwLowLevelWrite (8, 0xFF, - &GpeBlock->RegisterInfo[i].StatusAddress); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - } - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiHwEnableRuntimeGpeBlock - * - * PARAMETERS: GpeXruptInfo - GPE Interrupt info - * GpeBlock - Gpe Block info - * - * RETURN: Status - * - * DESCRIPTION: Enable all "runtime" GPEs within a single GPE block. Includes - * combination wake/run GPEs. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiHwEnableRuntimeGpeBlock ( - ACPI_GPE_XRUPT_INFO *GpeXruptInfo, - ACPI_GPE_BLOCK_INFO *GpeBlock) -{ - UINT32 i; - ACPI_STATUS Status; - - - /* NOTE: assumes that all GPEs are currently disabled */ - - /* Examine each GPE Register within the block */ - - for (i = 0; i < GpeBlock->RegisterCount; i++) - { - if (!GpeBlock->RegisterInfo[i].EnableForRun) - { - continue; - } - - /* Enable all "runtime" GPEs in this register */ - - Status = AcpiHwLowLevelWrite (8, GpeBlock->RegisterInfo[i].EnableForRun, - &GpeBlock->RegisterInfo[i].EnableAddress); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - } - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiHwEnableWakeupGpeBlock - * - * PARAMETERS: GpeXruptInfo - GPE Interrupt info - * GpeBlock - Gpe Block info - * - * RETURN: Status - * - * DESCRIPTION: Enable all "wake" GPEs within a single GPE block. Includes - * combination wake/run GPEs. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiHwEnableWakeupGpeBlock ( - ACPI_GPE_XRUPT_INFO *GpeXruptInfo, - ACPI_GPE_BLOCK_INFO *GpeBlock) -{ - UINT32 i; - ACPI_STATUS Status; - - - /* Examine each GPE Register within the block */ - - for (i = 0; i < GpeBlock->RegisterCount; i++) - { - if (!GpeBlock->RegisterInfo[i].EnableForWake) - { - continue; - } - - /* Enable all "wake" GPEs in this register */ - - Status = AcpiHwLowLevelWrite (8, - GpeBlock->RegisterInfo[i].EnableForWake, - &GpeBlock->RegisterInfo[i].EnableAddress); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - } - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiHwDisableAllGpes - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Disable and clear all GPEs in all GPE blocks - * - ******************************************************************************/ - -ACPI_STATUS -AcpiHwDisableAllGpes ( - void) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (HwDisableAllGpes); - - - Status = AcpiEvWalkGpeList (AcpiHwDisableGpeBlock); - Status = AcpiEvWalkGpeList (AcpiHwClearGpeBlock); - return_ACPI_STATUS (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiHwEnableAllRuntimeGpes - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Enable all "runtime" GPEs, in all GPE blocks - * - ******************************************************************************/ - -ACPI_STATUS -AcpiHwEnableAllRuntimeGpes ( - void) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (HwEnableAllRuntimeGpes); - - - Status = AcpiEvWalkGpeList (AcpiHwEnableRuntimeGpeBlock); - return_ACPI_STATUS (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiHwEnableAllWakeupGpes - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Enable all "wakeup" GPEs, in all GPE blocks - * - ******************************************************************************/ - -ACPI_STATUS -AcpiHwEnableAllWakeupGpes ( - void) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (HwEnableAllWakeupGpes); - - - Status = AcpiEvWalkGpeList (AcpiHwEnableWakeupGpeBlock); - return_ACPI_STATUS (Status); -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/hardware/hwregs.c b/sys/contrib/dev/acpica-unix-20061109/hardware/hwregs.c deleted file mode 100644 index 09c0f1b3bc..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/hardware/hwregs.c +++ /dev/null @@ -1,1008 +0,0 @@ - -/******************************************************************************* - * - * Module Name: hwregs - Read/write access functions for the various ACPI - * control and status registers. - * $Revision: 1.185 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __HWREGS_C__ - -#include "acpi.h" -#include "acnamesp.h" -#include "acevents.h" - -#define _COMPONENT ACPI_HARDWARE - ACPI_MODULE_NAME ("hwregs") - - -/******************************************************************************* - * - * FUNCTION: AcpiHwClearAcpiStatus - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Clears all fixed and general purpose status bits - * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED - * - ******************************************************************************/ - -ACPI_STATUS -AcpiHwClearAcpiStatus ( - void) -{ - ACPI_STATUS Status; - ACPI_CPU_FLAGS LockFlags = 0; - - - ACPI_FUNCTION_TRACE (HwClearAcpiStatus); - - - ACPI_DEBUG_PRINT ((ACPI_DB_IO, "About to write %04X to %04X\n", - ACPI_BITMASK_ALL_FIXED_STATUS, - (UINT16) ACPI_GET_ADDRESS (AcpiGbl_FADT.XPm1aEventBlock.Address))); - - LockFlags = AcpiOsAcquireLock (AcpiGbl_HardwareLock); - - Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, - ACPI_REGISTER_PM1_STATUS, - ACPI_BITMASK_ALL_FIXED_STATUS); - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - - /* Clear the fixed events */ - - if (ACPI_VALID_ADDRESS (AcpiGbl_FADT.XPm1bEventBlock.Address)) - { - Status = AcpiHwLowLevelWrite (16, ACPI_BITMASK_ALL_FIXED_STATUS, - &AcpiGbl_FADT.XPm1bEventBlock); - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - } - - /* Clear the GPE Bits in all GPE registers in all GPE blocks */ - - Status = AcpiEvWalkGpeList (AcpiHwClearGpeBlock); - -UnlockAndExit: - AcpiOsReleaseLock (AcpiGbl_HardwareLock, LockFlags); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiGetSleepTypeData - * - * PARAMETERS: SleepState - Numeric sleep state - * *SleepTypeA - Where SLP_TYPa is returned - * *SleepTypeB - Where SLP_TYPb is returned - * - * RETURN: Status - ACPI status - * - * DESCRIPTION: Obtain the SLP_TYPa and SLP_TYPb values for the requested sleep - * state. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetSleepTypeData ( - UINT8 SleepState, - UINT8 *SleepTypeA, - UINT8 *SleepTypeB) -{ - ACPI_STATUS Status = AE_OK; - ACPI_EVALUATE_INFO *Info; - - - ACPI_FUNCTION_TRACE (AcpiGetSleepTypeData); - - - /* Validate parameters */ - - if ((SleepState > ACPI_S_STATES_MAX) || - !SleepTypeA || !SleepTypeB) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Allocate the evaluation information block */ - - Info = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EVALUATE_INFO)); - if (!Info) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - Info->Pathname = ACPI_CAST_PTR (char, AcpiGbl_SleepStateNames[SleepState]); - - /* Evaluate the namespace object containing the values for this state */ - - Status = AcpiNsEvaluate (Info); - if (ACPI_FAILURE (Status)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "%s while evaluating SleepState [%s]\n", - AcpiFormatException (Status), Info->Pathname)); - - goto Cleanup; - } - - /* Must have a return object */ - - if (!Info->ReturnObject) - { - ACPI_ERROR ((AE_INFO, "No Sleep State object returned from [%s]", - Info->Pathname)); - Status = AE_NOT_EXIST; - } - - /* It must be of type Package */ - - else if (ACPI_GET_OBJECT_TYPE (Info->ReturnObject) != ACPI_TYPE_PACKAGE) - { - ACPI_ERROR ((AE_INFO, "Sleep State return object is not a Package")); - Status = AE_AML_OPERAND_TYPE; - } - - /* - * The package must have at least two elements. NOTE (March 2005): This - * goes against the current ACPI spec which defines this object as a - * package with one encoded DWORD element. However, existing practice - * by BIOS vendors seems to be to have 2 or more elements, at least - * one per sleep type (A/B). - */ - else if (Info->ReturnObject->Package.Count < 2) - { - ACPI_ERROR ((AE_INFO, - "Sleep State return package does not have at least two elements")); - Status = AE_AML_NO_OPERAND; - } - - /* The first two elements must both be of type Integer */ - - else if ((ACPI_GET_OBJECT_TYPE (Info->ReturnObject->Package.Elements[0]) - != ACPI_TYPE_INTEGER) || - (ACPI_GET_OBJECT_TYPE (Info->ReturnObject->Package.Elements[1]) - != ACPI_TYPE_INTEGER)) - { - ACPI_ERROR ((AE_INFO, - "Sleep State return package elements are not both Integers (%s, %s)", - AcpiUtGetObjectTypeName (Info->ReturnObject->Package.Elements[0]), - AcpiUtGetObjectTypeName (Info->ReturnObject->Package.Elements[1]))); - Status = AE_AML_OPERAND_TYPE; - } - else - { - /* Valid _Sx_ package size, type, and value */ - - *SleepTypeA = (UINT8) - (Info->ReturnObject->Package.Elements[0])->Integer.Value; - *SleepTypeB = (UINT8) - (Info->ReturnObject->Package.Elements[1])->Integer.Value; - } - - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "While evaluating SleepState [%s], bad Sleep object %p type %s", - Info->Pathname, Info->ReturnObject, - AcpiUtGetObjectTypeName (Info->ReturnObject))); - } - - AcpiUtRemoveReference (Info->ReturnObject); - -Cleanup: - ACPI_FREE (Info); - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiGetSleepTypeData) - - -/******************************************************************************* - * - * FUNCTION: AcpiHwGetRegisterBitMask - * - * PARAMETERS: RegisterId - Index of ACPI Register to access - * - * RETURN: The bitmask to be used when accessing the register - * - * DESCRIPTION: Map RegisterId into a register bitmask. - * - ******************************************************************************/ - -ACPI_BIT_REGISTER_INFO * -AcpiHwGetBitRegisterInfo ( - UINT32 RegisterId) -{ - ACPI_FUNCTION_ENTRY (); - - - if (RegisterId > ACPI_BITREG_MAX) - { - ACPI_ERROR ((AE_INFO, "Invalid BitRegister ID: %X", RegisterId)); - return (NULL); - } - - return (&AcpiGbl_BitRegisterInfo[RegisterId]); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiGetRegister - * - * PARAMETERS: RegisterId - ID of ACPI BitRegister to access - * ReturnValue - Value that was read from the register - * - * RETURN: Status and the value read from specified Register. Value - * returned is normalized to bit0 (is shifted all the way right) - * - * DESCRIPTION: ACPI BitRegister read function. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetRegister ( - UINT32 RegisterId, - UINT32 *ReturnValue) -{ - UINT32 RegisterValue = 0; - ACPI_BIT_REGISTER_INFO *BitRegInfo; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (AcpiGetRegister); - - - /* Get the info structure corresponding to the requested ACPI Register */ - - BitRegInfo = AcpiHwGetBitRegisterInfo (RegisterId); - if (!BitRegInfo) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Read from the register */ - - Status = AcpiHwRegisterRead (ACPI_MTX_LOCK, - BitRegInfo->ParentRegister, &RegisterValue); - - if (ACPI_SUCCESS (Status)) - { - /* Normalize the value that was read */ - - RegisterValue = ((RegisterValue & BitRegInfo->AccessBitMask) - >> BitRegInfo->BitPosition); - - *ReturnValue = RegisterValue; - - ACPI_DEBUG_PRINT ((ACPI_DB_IO, "Read value %8.8X register %X\n", - RegisterValue, BitRegInfo->ParentRegister)); - } - - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiGetRegister) - - -/******************************************************************************* - * - * FUNCTION: AcpiSetRegister - * - * PARAMETERS: RegisterId - ID of ACPI BitRegister to access - * Value - (only used on write) value to write to the - * Register, NOT pre-normalized to the bit pos - * - * RETURN: Status - * - * DESCRIPTION: ACPI Bit Register write function. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiSetRegister ( - UINT32 RegisterId, - UINT32 Value) -{ - UINT32 RegisterValue = 0; - ACPI_BIT_REGISTER_INFO *BitRegInfo; - ACPI_STATUS Status; - ACPI_CPU_FLAGS LockFlags; - - - ACPI_FUNCTION_TRACE_U32 (AcpiSetRegister, RegisterId); - - - /* Get the info structure corresponding to the requested ACPI Register */ - - BitRegInfo = AcpiHwGetBitRegisterInfo (RegisterId); - if (!BitRegInfo) - { - ACPI_ERROR ((AE_INFO, "Bad ACPI HW RegisterId: %X", RegisterId)); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - LockFlags = AcpiOsAcquireLock (AcpiGbl_HardwareLock); - - /* Always do a register read first so we can insert the new bits */ - - Status = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, - BitRegInfo->ParentRegister, &RegisterValue); - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - - /* - * Decode the Register ID - * Register ID = [Register block ID] | [bit ID] - * - * Check bit ID to fine locate Register offset. - * Check Mask to determine Register offset, and then read-write. - */ - switch (BitRegInfo->ParentRegister) - { - case ACPI_REGISTER_PM1_STATUS: - - /* - * Status Registers are different from the rest. Clear by - * writing 1, and writing 0 has no effect. So, the only relevant - * information is the single bit we're interested in, all others should - * be written as 0 so they will be left unchanged. - */ - Value = ACPI_REGISTER_PREPARE_BITS (Value, - BitRegInfo->BitPosition, BitRegInfo->AccessBitMask); - if (Value) - { - Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, - ACPI_REGISTER_PM1_STATUS, (UINT16) Value); - RegisterValue = 0; - } - break; - - - case ACPI_REGISTER_PM1_ENABLE: - - ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition, - BitRegInfo->AccessBitMask, Value); - - Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, - ACPI_REGISTER_PM1_ENABLE, (UINT16) RegisterValue); - break; - - - case ACPI_REGISTER_PM1_CONTROL: - - /* - * Write the PM1 Control register. - * Note that at this level, the fact that there are actually TWO - * registers (A and B - and B may not exist) is abstracted. - */ - ACPI_DEBUG_PRINT ((ACPI_DB_IO, "PM1 control: Read %X\n", - RegisterValue)); - - ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition, - BitRegInfo->AccessBitMask, Value); - - Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, - ACPI_REGISTER_PM1_CONTROL, (UINT16) RegisterValue); - break; - - - case ACPI_REGISTER_PM2_CONTROL: - - Status = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, - ACPI_REGISTER_PM2_CONTROL, &RegisterValue); - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - - ACPI_DEBUG_PRINT ((ACPI_DB_IO, "PM2 control: Read %X from %8.8X%8.8X\n", - RegisterValue, - ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS ( - AcpiGbl_FADT.XPm2ControlBlock.Address)))); - - ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition, - BitRegInfo->AccessBitMask, Value); - - ACPI_DEBUG_PRINT ((ACPI_DB_IO, "About to write %4.4X to %8.8X%8.8X\n", - RegisterValue, - ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS ( - AcpiGbl_FADT.XPm2ControlBlock.Address)))); - - Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, - ACPI_REGISTER_PM2_CONTROL, (UINT8) (RegisterValue)); - break; - - - default: - break; - } - - -UnlockAndExit: - - AcpiOsReleaseLock (AcpiGbl_HardwareLock, LockFlags); - - /* Normalize the value that was read */ - - ACPI_DEBUG_EXEC (RegisterValue = - ((RegisterValue & BitRegInfo->AccessBitMask) >> - BitRegInfo->BitPosition)); - - ACPI_DEBUG_PRINT ((ACPI_DB_IO, "Set bits: %8.8X actual %8.8X register %X\n", - Value, RegisterValue, BitRegInfo->ParentRegister)); - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiSetRegister) - - -/****************************************************************************** - * - * FUNCTION: AcpiHwRegisterRead - * - * PARAMETERS: UseLock - Lock hardware? True/False - * RegisterId - ACPI Register ID - * ReturnValue - Where the register value is returned - * - * RETURN: Status and the value read. - * - * DESCRIPTION: Read from the specified ACPI register - * - ******************************************************************************/ - -ACPI_STATUS -AcpiHwRegisterRead ( - BOOLEAN UseLock, - UINT32 RegisterId, - UINT32 *ReturnValue) -{ - UINT32 Value1 = 0; - UINT32 Value2 = 0; - ACPI_STATUS Status; - ACPI_CPU_FLAGS LockFlags = 0; - - - ACPI_FUNCTION_TRACE (HwRegisterRead); - - - if (ACPI_MTX_LOCK == UseLock) - { - LockFlags = AcpiOsAcquireLock (AcpiGbl_HardwareLock); - } - - switch (RegisterId) - { - case ACPI_REGISTER_PM1_STATUS: /* 16-bit access */ - - Status = AcpiHwLowLevelRead (16, &Value1, &AcpiGbl_FADT.XPm1aEventBlock); - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - - /* PM1B is optional */ - - Status = AcpiHwLowLevelRead (16, &Value2, &AcpiGbl_FADT.XPm1bEventBlock); - Value1 |= Value2; - break; - - - case ACPI_REGISTER_PM1_ENABLE: /* 16-bit access */ - - Status = AcpiHwLowLevelRead (16, &Value1, &AcpiGbl_XPm1aEnable); - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - - /* PM1B is optional */ - - Status = AcpiHwLowLevelRead (16, &Value2, &AcpiGbl_XPm1bEnable); - Value1 |= Value2; - break; - - - case ACPI_REGISTER_PM1_CONTROL: /* 16-bit access */ - - Status = AcpiHwLowLevelRead (16, &Value1, &AcpiGbl_FADT.XPm1aControlBlock); - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - - Status = AcpiHwLowLevelRead (16, &Value2, &AcpiGbl_FADT.XPm1bControlBlock); - Value1 |= Value2; - break; - - - case ACPI_REGISTER_PM2_CONTROL: /* 8-bit access */ - - Status = AcpiHwLowLevelRead (8, &Value1, &AcpiGbl_FADT.XPm2ControlBlock); - break; - - - case ACPI_REGISTER_PM_TIMER: /* 32-bit access */ - - Status = AcpiHwLowLevelRead (32, &Value1, &AcpiGbl_FADT.XPmTimerBlock); - break; - - case ACPI_REGISTER_SMI_COMMAND_BLOCK: /* 8-bit access */ - - Status = AcpiOsReadPort (AcpiGbl_FADT.SmiCommand, &Value1, 8); - break; - - default: - ACPI_ERROR ((AE_INFO, "Unknown Register ID: %X", - RegisterId)); - Status = AE_BAD_PARAMETER; - break; - } - -UnlockAndExit: - if (ACPI_MTX_LOCK == UseLock) - { - AcpiOsReleaseLock (AcpiGbl_HardwareLock, LockFlags); - } - - if (ACPI_SUCCESS (Status)) - { - *ReturnValue = Value1; - } - - return_ACPI_STATUS (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiHwRegisterWrite - * - * PARAMETERS: UseLock - Lock hardware? True/False - * RegisterId - ACPI Register ID - * Value - The value to write - * - * RETURN: Status - * - * DESCRIPTION: Write to the specified ACPI register - * - * NOTE: In accordance with the ACPI specification, this function automatically - * preserves the value of the following bits, meaning that these bits cannot be - * changed via this interface: - * - * PM1_CONTROL[0] = SCI_EN - * PM1_CONTROL[9] - * PM1_STATUS[11] - * - * ACPI References: - * 1) Hardware Ignored Bits: When software writes to a register with ignored - * bit fields, it preserves the ignored bit fields - * 2) SCI_EN: OSPM always preserves this bit position - * - ******************************************************************************/ - -ACPI_STATUS -AcpiHwRegisterWrite ( - BOOLEAN UseLock, - UINT32 RegisterId, - UINT32 Value) -{ - ACPI_STATUS Status; - ACPI_CPU_FLAGS LockFlags = 0; - UINT32 ReadValue; - - - ACPI_FUNCTION_TRACE (HwRegisterWrite); - - - if (ACPI_MTX_LOCK == UseLock) - { - LockFlags = AcpiOsAcquireLock (AcpiGbl_HardwareLock); - } - - switch (RegisterId) - { - case ACPI_REGISTER_PM1_STATUS: /* 16-bit access */ - - /* Perform a read first to preserve certain bits (per ACPI spec) */ - - Status = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, - ACPI_REGISTER_PM1_STATUS, &ReadValue); - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - - /* Insert the bits to be preserved */ - - ACPI_INSERT_BITS (Value, ACPI_PM1_STATUS_PRESERVED_BITS, ReadValue); - - /* Now we can write the data */ - - Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT.XPm1aEventBlock); - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - - /* PM1B is optional */ - - Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT.XPm1bEventBlock); - break; - - - case ACPI_REGISTER_PM1_ENABLE: /* 16-bit access */ - - Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_XPm1aEnable); - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - - /* PM1B is optional */ - - Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_XPm1bEnable); - break; - - - case ACPI_REGISTER_PM1_CONTROL: /* 16-bit access */ - - /* - * Perform a read first to preserve certain bits (per ACPI spec) - * - * Note: This includes SCI_EN, we never want to change this bit - */ - Status = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, - ACPI_REGISTER_PM1_CONTROL, &ReadValue); - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - - /* Insert the bits to be preserved */ - - ACPI_INSERT_BITS (Value, ACPI_PM1_CONTROL_PRESERVED_BITS, ReadValue); - - /* Now we can write the data */ - - Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT.XPm1aControlBlock); - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - - Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT.XPm1bControlBlock); - break; - - - case ACPI_REGISTER_PM1A_CONTROL: /* 16-bit access */ - - Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT.XPm1aControlBlock); - break; - - - case ACPI_REGISTER_PM1B_CONTROL: /* 16-bit access */ - - Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT.XPm1bControlBlock); - break; - - - case ACPI_REGISTER_PM2_CONTROL: /* 8-bit access */ - - Status = AcpiHwLowLevelWrite (8, Value, &AcpiGbl_FADT.XPm2ControlBlock); - break; - - - case ACPI_REGISTER_PM_TIMER: /* 32-bit access */ - - Status = AcpiHwLowLevelWrite (32, Value, &AcpiGbl_FADT.XPmTimerBlock); - break; - - - case ACPI_REGISTER_SMI_COMMAND_BLOCK: /* 8-bit access */ - - /* SMI_CMD is currently always in IO space */ - - Status = AcpiOsWritePort (AcpiGbl_FADT.SmiCommand, Value, 8); - break; - - - default: - Status = AE_BAD_PARAMETER; - break; - } - -UnlockAndExit: - if (ACPI_MTX_LOCK == UseLock) - { - AcpiOsReleaseLock (AcpiGbl_HardwareLock, LockFlags); - } - - return_ACPI_STATUS (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiHwLowLevelRead - * - * PARAMETERS: Width - 8, 16, or 32 - * Value - Where the value is returned - * Reg - GAS register structure - * - * RETURN: Status - * - * DESCRIPTION: Read from either memory or IO space. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiHwLowLevelRead ( - UINT32 Width, - UINT32 *Value, - ACPI_GENERIC_ADDRESS *Reg) -{ - UINT64 Address; - ACPI_STATUS Status; - - - ACPI_FUNCTION_NAME (HwLowLevelRead); - - - /* - * Must have a valid pointer to a GAS structure, and - * a non-zero address within. However, don't return an error - * because the PM1A/B code must not fail if B isn't present. - */ - if (!Reg) - { - return (AE_OK); - } - - /* Get a local copy of the address. Handles possible alignment issues */ - - ACPI_MOVE_64_TO_64 (&Address, &Reg->Address); - if (!ACPI_VALID_ADDRESS (Address)) - { - return (AE_OK); - } - *Value = 0; - - /* - * Two address spaces supported: Memory or IO. - * PCI_Config is not supported here because the GAS struct is insufficient - */ - switch (Reg->SpaceId) - { - case ACPI_ADR_SPACE_SYSTEM_MEMORY: - - Status = AcpiOsReadMemory ( - (ACPI_PHYSICAL_ADDRESS) ACPI_GET_ADDRESS (Address), - Value, Width); - break; - - - case ACPI_ADR_SPACE_SYSTEM_IO: - - Status = AcpiOsReadPort ((ACPI_IO_ADDRESS) ACPI_GET_ADDRESS (Address), - Value, Width); - break; - - - default: - ACPI_ERROR ((AE_INFO, - "Unsupported address space: %X", Reg->SpaceId)); - return (AE_BAD_PARAMETER); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_IO, - "Read: %8.8X width %2d from %8.8X%8.8X (%s)\n", - *Value, Width, - ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (Address)), - AcpiUtGetRegionName (Reg->SpaceId))); - - return (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiHwLowLevelWrite - * - * PARAMETERS: Width - 8, 16, or 32 - * Value - To be written - * Reg - GAS register structure - * - * RETURN: Status - * - * DESCRIPTION: Write to either memory or IO space. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiHwLowLevelWrite ( - UINT32 Width, - UINT32 Value, - ACPI_GENERIC_ADDRESS *Reg) -{ - UINT64 Address; - ACPI_STATUS Status; - - - ACPI_FUNCTION_NAME (HwLowLevelWrite); - - - /* - * Must have a valid pointer to a GAS structure, and - * a non-zero address within. However, don't return an error - * because the PM1A/B code must not fail if B isn't present. - */ - if (!Reg) - { - return (AE_OK); - } - - /* Get a local copy of the address. Handles possible alignment issues */ - - ACPI_MOVE_64_TO_64 (&Address, &Reg->Address); - if (!ACPI_VALID_ADDRESS (Address)) - { - return (AE_OK); - } - - /* - * Two address spaces supported: Memory or IO. - * PCI_Config is not supported here because the GAS struct is insufficient - */ - switch (Reg->SpaceId) - { - case ACPI_ADR_SPACE_SYSTEM_MEMORY: - - Status = AcpiOsWriteMemory ( - (ACPI_PHYSICAL_ADDRESS) ACPI_GET_ADDRESS (Address), - Value, Width); - break; - - - case ACPI_ADR_SPACE_SYSTEM_IO: - - Status = AcpiOsWritePort ((ACPI_IO_ADDRESS) ACPI_GET_ADDRESS (Address), - Value, Width); - break; - - - default: - ACPI_ERROR ((AE_INFO, - "Unsupported address space: %X", Reg->SpaceId)); - return (AE_BAD_PARAMETER); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_IO, - "Wrote: %8.8X width %2d to %8.8X%8.8X (%s)\n", - Value, Width, - ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (Address)), - AcpiUtGetRegionName (Reg->SpaceId))); - - return (Status); -} diff --git a/sys/contrib/dev/acpica-unix-20061109/hardware/hwsleep.c b/sys/contrib/dev/acpica-unix-20061109/hardware/hwsleep.c deleted file mode 100644 index ecf8d54cf7..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/hardware/hwsleep.c +++ /dev/null @@ -1,750 +0,0 @@ - -/****************************************************************************** - * - * Name: hwsleep.c - ACPI Hardware Sleep/Wake Interface - * $Revision: 1.85 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "actables.h" - -#define _COMPONENT ACPI_HARDWARE - ACPI_MODULE_NAME ("hwsleep") - - -/******************************************************************************* - * - * FUNCTION: AcpiSetFirmwareWakingVector - * - * PARAMETERS: PhysicalAddress - Physical address of ACPI real mode - * entry point. - * - * RETURN: Status - * - * DESCRIPTION: Access function for the FirmwareWakingVector field in FACS - * - ******************************************************************************/ - -ACPI_STATUS -AcpiSetFirmwareWakingVector ( - ACPI_PHYSICAL_ADDRESS PhysicalAddress) -{ - ACPI_TABLE_FACS *Facs; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (AcpiSetFirmwareWakingVector); - - /* Get the FACS */ - - Status = AcpiGetTableByIndex (ACPI_TABLE_INDEX_FACS, (ACPI_TABLE_HEADER **) &Facs); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Set the vector */ - - if ((Facs->Length < 32) || - (!(ACPI_GET_ADDRESS (Facs->XFirmwareWakingVector)))) - { - /* - * ACPI 1.0 FACS or short table or optional X_ field is zero - */ - Facs->FirmwareWakingVector = (UINT32) PhysicalAddress; - } - else - { - /* - * ACPI 2.0 FACS with valid X_ field - */ - Facs->XFirmwareWakingVector = PhysicalAddress; - } - - return_ACPI_STATUS (AE_OK); -} - -ACPI_EXPORT_SYMBOL (AcpiSetFirmwareWakingVector) - - -/******************************************************************************* - * - * FUNCTION: AcpiGetFirmwareWakingVector - * - * PARAMETERS: *PhysicalAddress - Where the contents of - * the FirmwareWakingVector field of - * the FACS will be returned. - * - * RETURN: Status, vector - * - * DESCRIPTION: Access function for the FirmwareWakingVector field in FACS - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetFirmwareWakingVector ( - ACPI_PHYSICAL_ADDRESS *PhysicalAddress) -{ - ACPI_TABLE_FACS *Facs; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (AcpiGetFirmwareWakingVector); - - - if (!PhysicalAddress) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Get the FACS */ - - Status = AcpiGetTableByIndex (ACPI_TABLE_INDEX_FACS, (ACPI_TABLE_HEADER **) &Facs); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Get the vector */ - - if ((Facs->Length < 32) || - (!(ACPI_GET_ADDRESS (Facs->XFirmwareWakingVector)))) - { - /* - * ACPI 1.0 FACS or short table or optional X_ field is zero - */ - *PhysicalAddress = - (ACPI_PHYSICAL_ADDRESS) Facs->FirmwareWakingVector; - } - else - { - /* - * ACPI 2.0 FACS with valid X_ field - */ - *PhysicalAddress = (ACPI_PHYSICAL_ADDRESS) Facs->XFirmwareWakingVector; - } - - return_ACPI_STATUS (AE_OK); -} - -ACPI_EXPORT_SYMBOL (AcpiGetFirmwareWakingVector) - - -/******************************************************************************* - * - * FUNCTION: AcpiEnterSleepStatePrep - * - * PARAMETERS: SleepState - Which sleep state to enter - * - * RETURN: Status - * - * DESCRIPTION: Prepare to enter a system sleep state (see ACPI 2.0 spec p 231) - * This function must execute with interrupts enabled. - * We break sleeping into 2 stages so that OSPM can handle - * various OS-specific tasks between the two steps. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEnterSleepStatePrep ( - UINT8 SleepState) -{ - ACPI_STATUS Status; - ACPI_OBJECT_LIST ArgList; - ACPI_OBJECT Arg; - - - ACPI_FUNCTION_TRACE (AcpiEnterSleepStatePrep); - - - /* - * _PSW methods could be run here to enable wake-on keyboard, LAN, etc. - */ - Status = AcpiGetSleepTypeData (SleepState, - &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Setup parameter object */ - - ArgList.Count = 1; - ArgList.Pointer = &Arg; - - Arg.Type = ACPI_TYPE_INTEGER; - Arg.Integer.Value = SleepState; - - /* Run the _PTS and _GTS methods */ - - Status = AcpiEvaluateObject (NULL, METHOD_NAME__PTS, &ArgList, NULL); - if (ACPI_FAILURE (Status) && Status != AE_NOT_FOUND) - { - return_ACPI_STATUS (Status); - } - - Status = AcpiEvaluateObject (NULL, METHOD_NAME__GTS, &ArgList, NULL); - if (ACPI_FAILURE (Status) && Status != AE_NOT_FOUND) - { - return_ACPI_STATUS (Status); - } - - /* Setup the argument to _SST */ - - switch (SleepState) - { - case ACPI_STATE_S0: - Arg.Integer.Value = ACPI_SST_WORKING; - break; - - case ACPI_STATE_S1: - case ACPI_STATE_S2: - case ACPI_STATE_S3: - Arg.Integer.Value = ACPI_SST_SLEEPING; - break; - - case ACPI_STATE_S4: - Arg.Integer.Value = ACPI_SST_SLEEP_CONTEXT; - break; - - default: - Arg.Integer.Value = ACPI_SST_INDICATOR_OFF; /* Default is off */ - break; - } - - /* Set the system indicators to show the desired sleep state. */ - - Status = AcpiEvaluateObject (NULL, METHOD_NAME__SST, &ArgList, NULL); - if (ACPI_FAILURE (Status) && Status != AE_NOT_FOUND) - { - ACPI_EXCEPTION ((AE_INFO, Status, "While executing method _SST")); - } - - return_ACPI_STATUS (AE_OK); -} - -ACPI_EXPORT_SYMBOL (AcpiEnterSleepStatePrep) - - -/******************************************************************************* - * - * FUNCTION: AcpiEnterSleepState - * - * PARAMETERS: SleepState - Which sleep state to enter - * - * RETURN: Status - * - * DESCRIPTION: Enter a system sleep state (see ACPI 2.0 spec p 231) - * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEnterSleepState ( - UINT8 SleepState) -{ - UINT32 PM1AControl; - UINT32 PM1BControl; - ACPI_BIT_REGISTER_INFO *SleepTypeRegInfo; - ACPI_BIT_REGISTER_INFO *SleepEnableRegInfo; - UINT32 InValue; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (AcpiEnterSleepState); - - - if ((AcpiGbl_SleepTypeA > ACPI_SLEEP_TYPE_MAX) || - (AcpiGbl_SleepTypeB > ACPI_SLEEP_TYPE_MAX)) - { - ACPI_ERROR ((AE_INFO, "Sleep values out of range: A=%X B=%X", - AcpiGbl_SleepTypeA, AcpiGbl_SleepTypeB)); - return_ACPI_STATUS (AE_AML_OPERAND_VALUE); - } - - SleepTypeRegInfo = AcpiHwGetBitRegisterInfo (ACPI_BITREG_SLEEP_TYPE_A); - SleepEnableRegInfo = AcpiHwGetBitRegisterInfo (ACPI_BITREG_SLEEP_ENABLE); - - /* Clear wake status */ - - Status = AcpiSetRegister (ACPI_BITREG_WAKE_STATUS, 1); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Clear all fixed and general purpose status bits */ - - Status = AcpiHwClearAcpiStatus (); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - if (SleepState != ACPI_STATE_S5) - { - /* Disable BM arbitration */ - - Status = AcpiSetRegister (ACPI_BITREG_ARB_DISABLE, 1); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* - * 1) Disable/Clear all GPEs - * 2) Enable all wakeup GPEs - */ - Status = AcpiHwDisableAllGpes (); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - AcpiGbl_SystemAwakeAndRunning = FALSE; - - Status = AcpiHwEnableAllWakeupGpes (); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Get current value of PM1A control */ - - Status = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, - ACPI_REGISTER_PM1_CONTROL, &PM1AControl); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - ACPI_DEBUG_PRINT ((ACPI_DB_INIT, - "Entering sleep state [S%d]\n", SleepState)); - - /* Clear SLP_EN and SLP_TYP fields */ - - PM1AControl &= ~(SleepTypeRegInfo->AccessBitMask | - SleepEnableRegInfo->AccessBitMask); - PM1BControl = PM1AControl; - - /* Insert SLP_TYP bits */ - - PM1AControl |= (AcpiGbl_SleepTypeA << SleepTypeRegInfo->BitPosition); - PM1BControl |= (AcpiGbl_SleepTypeB << SleepTypeRegInfo->BitPosition); - - /* - * We split the writes of SLP_TYP and SLP_EN to workaround - * poorly implemented hardware. - */ - - /* Write #1: fill in SLP_TYP data */ - - Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, - ACPI_REGISTER_PM1A_CONTROL, PM1AControl); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, - ACPI_REGISTER_PM1B_CONTROL, PM1BControl); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Insert SLP_ENABLE bit */ - - PM1AControl |= SleepEnableRegInfo->AccessBitMask; - PM1BControl |= SleepEnableRegInfo->AccessBitMask; - - /* Write #2: SLP_TYP + SLP_EN */ - - ACPI_FLUSH_CPU_CACHE (); - - Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, - ACPI_REGISTER_PM1A_CONTROL, PM1AControl); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, - ACPI_REGISTER_PM1B_CONTROL, PM1BControl); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - if (SleepState > ACPI_STATE_S3) - { - /* - * We wanted to sleep > S3, but it didn't happen (by virtue of the - * fact that we are still executing!) - * - * Wait ten seconds, then try again. This is to get S4/S5 to work on - * all machines. - * - * We wait so long to allow chipsets that poll this reg very slowly to - * still read the right value. Ideally, this block would go - * away entirely. - */ - AcpiOsStall (10000000); - - Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, - ACPI_REGISTER_PM1_CONTROL, - SleepEnableRegInfo->AccessBitMask); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* Wait until we enter sleep state */ - - do - { - Status = AcpiGetRegister (ACPI_BITREG_WAKE_STATUS, &InValue); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Spin until we wake */ - - } while (!InValue); - - return_ACPI_STATUS (AE_OK); -} - -ACPI_EXPORT_SYMBOL (AcpiEnterSleepState) - - -/******************************************************************************* - * - * FUNCTION: AcpiEnterSleepStateS4bios - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Perform a S4 bios request. - * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEnterSleepStateS4bios ( - void) -{ - UINT32 InValue; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (AcpiEnterSleepStateS4bios); - - - Status = AcpiSetRegister (ACPI_BITREG_WAKE_STATUS, 1); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - Status = AcpiHwClearAcpiStatus (); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * 1) Disable/Clear all GPEs - * 2) Enable all wakeup GPEs - */ - Status = AcpiHwDisableAllGpes (); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - AcpiGbl_SystemAwakeAndRunning = FALSE; - - Status = AcpiHwEnableAllWakeupGpes (); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - ACPI_FLUSH_CPU_CACHE (); - - Status = AcpiOsWritePort (AcpiGbl_FADT.SmiCommand, - (UINT32) AcpiGbl_FADT.S4BiosRequest, 8); - - do { - AcpiOsStall(1000); - Status = AcpiGetRegister (ACPI_BITREG_WAKE_STATUS, &InValue); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } while (!InValue); - - return_ACPI_STATUS (AE_OK); -} - -ACPI_EXPORT_SYMBOL (AcpiEnterSleepStateS4bios) - - -/******************************************************************************* - * - * FUNCTION: AcpiLeaveSleepState - * - * PARAMETERS: SleepState - Which sleep state we just exited - * - * RETURN: Status - * - * DESCRIPTION: Perform OS-independent ACPI cleanup after a sleep - * Called with interrupts ENABLED. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiLeaveSleepState ( - UINT8 SleepState) -{ - ACPI_OBJECT_LIST ArgList; - ACPI_OBJECT Arg; - ACPI_STATUS Status; - ACPI_BIT_REGISTER_INFO *SleepTypeRegInfo; - ACPI_BIT_REGISTER_INFO *SleepEnableRegInfo; - UINT32 PM1AControl; - UINT32 PM1BControl; - - - ACPI_FUNCTION_TRACE (AcpiLeaveSleepState); - - - /* - * Set SLP_TYPE and SLP_EN to state S0. - * This is unclear from the ACPI Spec, but it is required - * by some machines. - */ - Status = AcpiGetSleepTypeData (ACPI_STATE_S0, - &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB); - if (ACPI_SUCCESS (Status)) - { - SleepTypeRegInfo = AcpiHwGetBitRegisterInfo (ACPI_BITREG_SLEEP_TYPE_A); - SleepEnableRegInfo = AcpiHwGetBitRegisterInfo (ACPI_BITREG_SLEEP_ENABLE); - - /* Get current value of PM1A control */ - - Status = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, - ACPI_REGISTER_PM1_CONTROL, &PM1AControl); - if (ACPI_SUCCESS (Status)) - { - /* Clear SLP_EN and SLP_TYP fields */ - - PM1AControl &= ~(SleepTypeRegInfo->AccessBitMask | - SleepEnableRegInfo->AccessBitMask); - PM1BControl = PM1AControl; - - /* Insert SLP_TYP bits */ - - PM1AControl |= (AcpiGbl_SleepTypeA << SleepTypeRegInfo->BitPosition); - PM1BControl |= (AcpiGbl_SleepTypeB << SleepTypeRegInfo->BitPosition); - - /* Just ignore any errors */ - - (void) AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, - ACPI_REGISTER_PM1A_CONTROL, PM1AControl); - (void) AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, - ACPI_REGISTER_PM1B_CONTROL, PM1BControl); - } - } - - /* Ensure EnterSleepStatePrep -> EnterSleepState ordering */ - - AcpiGbl_SleepTypeA = ACPI_SLEEP_TYPE_INVALID; - - /* Setup parameter object */ - - ArgList.Count = 1; - ArgList.Pointer = &Arg; - Arg.Type = ACPI_TYPE_INTEGER; - - /* Ignore any errors from these methods */ - - Arg.Integer.Value = ACPI_SST_WAKING; - Status = AcpiEvaluateObject (NULL, METHOD_NAME__SST, &ArgList, NULL); - if (ACPI_FAILURE (Status) && Status != AE_NOT_FOUND) - { - ACPI_EXCEPTION ((AE_INFO, Status, "During Method _SST")); - } - - Arg.Integer.Value = SleepState; - Status = AcpiEvaluateObject (NULL, METHOD_NAME__BFS, &ArgList, NULL); - if (ACPI_FAILURE (Status) && Status != AE_NOT_FOUND) - { - ACPI_EXCEPTION ((AE_INFO, Status, "During Method _BFS")); - } - - Status = AcpiEvaluateObject (NULL, METHOD_NAME__WAK, &ArgList, NULL); - if (ACPI_FAILURE (Status) && Status != AE_NOT_FOUND) - { - ACPI_EXCEPTION ((AE_INFO, Status, "During Method _WAK")); - } - /* TBD: _WAK "sometimes" returns stuff - do we want to look at it? */ - - /* - * Restore the GPEs: - * 1) Disable/Clear all GPEs - * 2) Enable all runtime GPEs - */ - Status = AcpiHwDisableAllGpes (); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - AcpiGbl_SystemAwakeAndRunning = TRUE; - - Status = AcpiHwEnableAllRuntimeGpes (); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Enable power button */ - - (void) AcpiSetRegister( - AcpiGbl_FixedEventInfo[ACPI_EVENT_POWER_BUTTON].EnableRegisterId, 1); - - (void) AcpiSetRegister( - AcpiGbl_FixedEventInfo[ACPI_EVENT_POWER_BUTTON].StatusRegisterId, 1); - - /* Enable BM arbitration */ - - Status = AcpiSetRegister (ACPI_BITREG_ARB_DISABLE, 0); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - Arg.Integer.Value = ACPI_SST_WORKING; - Status = AcpiEvaluateObject (NULL, METHOD_NAME__SST, &ArgList, NULL); - if (ACPI_FAILURE (Status) && Status != AE_NOT_FOUND) - { - ACPI_EXCEPTION ((AE_INFO, Status, "During Method _SST")); - } - - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiLeaveSleepState) - diff --git a/sys/contrib/dev/acpica-unix-20061109/hardware/hwtimer.c b/sys/contrib/dev/acpica-unix-20061109/hardware/hwtimer.c deleted file mode 100644 index 87e6218d13..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/hardware/hwtimer.c +++ /dev/null @@ -1,288 +0,0 @@ - -/****************************************************************************** - * - * Name: hwtimer.c - ACPI Power Management Timer Interface - * $Revision: 1.36 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" - -#define _COMPONENT ACPI_HARDWARE - ACPI_MODULE_NAME ("hwtimer") - - -/****************************************************************************** - * - * FUNCTION: AcpiGetTimerResolution - * - * PARAMETERS: Resolution - Where the resolution is returned - * - * RETURN: Status and timer resolution - * - * DESCRIPTION: Obtains resolution of the ACPI PM Timer (24 or 32 bits). - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetTimerResolution ( - UINT32 *Resolution) -{ - ACPI_FUNCTION_TRACE (AcpiGetTimerResolution); - - - if (!Resolution) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - if ((AcpiGbl_FADT.Flags & ACPI_FADT_32BIT_TIMER) == 0) - { - *Resolution = 24; - } - else - { - *Resolution = 32; - } - - return_ACPI_STATUS (AE_OK); -} - -ACPI_EXPORT_SYMBOL (AcpiGetTimerResolution) - - -/****************************************************************************** - * - * FUNCTION: AcpiGetTimer - * - * PARAMETERS: Ticks - Where the timer value is returned - * - * RETURN: Status and current timer value (ticks) - * - * DESCRIPTION: Obtains current value of ACPI PM Timer (in ticks). - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetTimer ( - UINT32 *Ticks) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (AcpiGetTimer); - - - if (!Ticks) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - Status = AcpiHwLowLevelRead (32, Ticks, &AcpiGbl_FADT.XPmTimerBlock); - - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiGetTimer) - - -/****************************************************************************** - * - * FUNCTION: AcpiGetTimerDuration - * - * PARAMETERS: StartTicks - Starting timestamp - * EndTicks - End timestamp - * TimeElapsed - Where the elapsed time is returned - * - * RETURN: Status and TimeElapsed - * - * DESCRIPTION: Computes the time elapsed (in microseconds) between two - * PM Timer time stamps, taking into account the possibility of - * rollovers, the timer resolution, and timer frequency. - * - * The PM Timer's clock ticks at roughly 3.6 times per - * _microsecond_, and its clock continues through Cx state - * transitions (unlike many CPU timestamp counters) -- making it - * a versatile and accurate timer. - * - * Note that this function accommodates only a single timer - * rollover. Thus for 24-bit timers, this function should only - * be used for calculating durations less than ~4.6 seconds - * (~20 minutes for 32-bit timers) -- calculations below: - * - * 2**24 Ticks / 3,600,000 Ticks/Sec = 4.66 sec - * 2**32 Ticks / 3,600,000 Ticks/Sec = 1193 sec or 19.88 minutes - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetTimerDuration ( - UINT32 StartTicks, - UINT32 EndTicks, - UINT32 *TimeElapsed) -{ - ACPI_STATUS Status; - UINT32 DeltaTicks; - ACPI_INTEGER Quotient; - - - ACPI_FUNCTION_TRACE (AcpiGetTimerDuration); - - - if (!TimeElapsed) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* - * Compute Tick Delta: - * Handle (max one) timer rollovers on 24-bit versus 32-bit timers. - */ - if (StartTicks < EndTicks) - { - DeltaTicks = EndTicks - StartTicks; - } - else if (StartTicks > EndTicks) - { - if ((AcpiGbl_FADT.Flags & ACPI_FADT_32BIT_TIMER) == 0) - { - /* 24-bit Timer */ - - DeltaTicks = (((0x00FFFFFF - StartTicks) + EndTicks) & 0x00FFFFFF); - } - else - { - /* 32-bit Timer */ - - DeltaTicks = (0xFFFFFFFF - StartTicks) + EndTicks; - } - } - else /* StartTicks == EndTicks */ - { - *TimeElapsed = 0; - return_ACPI_STATUS (AE_OK); - } - - /* - * Compute Duration (Requires a 64-bit multiply and divide): - * - * TimeElapsed = (DeltaTicks * 1000000) / PM_TIMER_FREQUENCY; - */ - Status = AcpiUtShortDivide (((UINT64) DeltaTicks) * 1000000, - PM_TIMER_FREQUENCY, &Quotient, NULL); - - *TimeElapsed = (UINT32) Quotient; - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiGetTimerDuration) - diff --git a/sys/contrib/dev/acpica-unix-20061109/include/acapps.h b/sys/contrib/dev/acpica-unix-20061109/include/acapps.h deleted file mode 100644 index 15503375b1..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/acapps.h +++ /dev/null @@ -1,243 +0,0 @@ -/****************************************************************************** - * - * Module Name: acapps - common include for ACPI applications/tools - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef _ACAPPS -#define _ACAPPS - - -#ifdef _MSC_VER /* disable some level-4 warnings */ -#pragma warning(disable:4100) /* warning C4100: unreferenced formal parameter */ -#endif - -#define FILE_SUFFIX_DISASSEMBLY "dsl" -#define ACPI_TABLE_FILE_SUFFIX ".dat" - -extern UINT8 *DsdtPtr; -extern UINT32 AcpiDsdtLength; -extern UINT8 *AmlStart; -extern UINT32 AmlLength; - - -extern int AcpiGbl_Optind; -extern char *AcpiGbl_Optarg; - -int -AcpiGetopt( - int argc, - char **argv, - char *opts); - -/* - * adisasm - */ -ACPI_STATUS -AdAmlDisassemble ( - BOOLEAN OutToFile, - char *Filename, - char *Prefix, - char **OutFilename, - BOOLEAN GetAllTables); - -void -AdPrintStatistics (void); - -ACPI_STATUS -AdFindDsdt( - UINT8 **DsdtPtr, - UINT32 *DsdtLength); - -void -AdDumpTables (void); - -ACPI_STATUS -AdGetLocalTables ( - char *Filename, - BOOLEAN GetAllTables); - -ACPI_STATUS -AdParseTable ( - ACPI_TABLE_HEADER *Table); - -ACPI_STATUS -AdDisplayTables ( - char *Filename, - ACPI_TABLE_HEADER *Table); - -ACPI_STATUS -AdDisplayStatistics (void); - -/* - * adwalk - */ -void -AcpiDmCrossReferenceNamespace ( - ACPI_PARSE_OBJECT *ParseTreeRoot, - ACPI_NAMESPACE_NODE *NamespaceRoot); - -void -AcpiDmDumpTree ( - ACPI_PARSE_OBJECT *Origin); - -void -AcpiDmFindOrphanMethods ( - ACPI_PARSE_OBJECT *Origin); - -void -AcpiDmFinishNamespaceLoad ( - ACPI_PARSE_OBJECT *ParseTreeRoot, - ACPI_NAMESPACE_NODE *NamespaceRoot); - -void -AcpiDmConvertResourceIndexes ( - ACPI_PARSE_OBJECT *ParseTreeRoot, - ACPI_NAMESPACE_NODE *NamespaceRoot); - -/* - * adfile - */ -ACPI_STATUS -AdInitialize ( - void); - -char * -FlGenerateFilename ( - char *InputFilename, - char *Suffix); - -ACPI_STATUS -FlSplitInputPathname ( - char *InputPath, - char **OutDirectoryPath, - char **OutFilename); - -char * -FlGenerateFilename ( - char *InputFilename, - char *Suffix); - -char * -AdGenerateFilename ( - char *Prefix, - char *TableId); - -void -AdWriteTable ( - ACPI_TABLE_HEADER *Table, - UINT32 Length, - char *TableName, - char *OemTableId); - -#endif /* _ACAPPS */ - diff --git a/sys/contrib/dev/acpica-unix-20061109/include/acconfig.h b/sys/contrib/dev/acpica-unix-20061109/include/acconfig.h deleted file mode 100644 index d11a2f57c5..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/acconfig.h +++ /dev/null @@ -1,285 +0,0 @@ -/****************************************************************************** - * - * Name: acconfig.h - Global configuration constants - * $Revision: 1.229 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef _ACCONFIG_H -#define _ACCONFIG_H - - -/****************************************************************************** - * - * Configuration options - * - *****************************************************************************/ - -/* - * ACPI_DEBUG_OUTPUT - This switch enables all the debug facilities of the - * ACPI subsystem. This includes the DEBUG_PRINT output - * statements. When disabled, all DEBUG_PRINT - * statements are compiled out. - * - * ACPI_APPLICATION - Use this switch if the subsystem is going to be run - * at the application level. - * - */ - -/* Current ACPICA subsystem version in YYYYMMDD format */ - -#define ACPI_CA_VERSION 0x20061109 - -/* - * OS name, used for the _OS object. The _OS object is essentially obsolete, - * but there is a large base of ASL/AML code in existing machines that check - * for the string below. The use of this string usually guarantees that - * the ASL will execute down the most tested code path. Also, there is some - * code that will not execute the _OSI method unless _OS matches the string - * below. Therefore, change this string at your own risk. - */ -#define ACPI_OS_NAME "Microsoft Windows NT" - -/* Maximum objects in the various object caches */ - -#define ACPI_MAX_STATE_CACHE_DEPTH 96 /* State objects */ -#define ACPI_MAX_PARSE_CACHE_DEPTH 96 /* Parse tree objects */ -#define ACPI_MAX_EXTPARSE_CACHE_DEPTH 96 /* Parse tree objects */ -#define ACPI_MAX_OBJECT_CACHE_DEPTH 96 /* Interpreter operand objects */ -#define ACPI_MAX_NAMESPACE_CACHE_DEPTH 96 /* Namespace objects */ - -/* - * Should the subsystem abort the loading of an ACPI table if the - * table checksum is incorrect? - */ -#define ACPI_CHECKSUM_ABORT FALSE - - -/****************************************************************************** - * - * Subsystem Constants - * - *****************************************************************************/ - -/* Version of ACPI supported */ - -#define ACPI_CA_SUPPORT_LEVEL 3 - -/* Maximum count for a semaphore object */ - -#define ACPI_MAX_SEMAPHORE_COUNT 256 - -/* Maximum object reference count (detects object deletion issues) */ - -#define ACPI_MAX_REFERENCE_COUNT 0x800 - -/* Size of cached memory mapping for system memory operation region */ - -#define ACPI_SYSMEM_REGION_WINDOW_SIZE 4096 - -/* OwnerId tracking. 8 entries allows for 255 OwnerIds */ - -#define ACPI_NUM_OWNERID_MASKS 8 - -/* Size of the root table array is increased by this increment */ - -#define ACPI_ROOT_TABLE_SIZE_INCREMENT 4 - - -/****************************************************************************** - * - * ACPI Specification constants (Do not change unless the specification changes) - * - *****************************************************************************/ - -/* Number of distinct GPE register blocks and register width */ - -#define ACPI_MAX_GPE_BLOCKS 2 -#define ACPI_GPE_REGISTER_WIDTH 8 - -/* Method info (in WALK_STATE), containing local variables and argumetns */ - -#define ACPI_METHOD_NUM_LOCALS 8 -#define ACPI_METHOD_MAX_LOCAL 7 - -#define ACPI_METHOD_NUM_ARGS 7 -#define ACPI_METHOD_MAX_ARG 6 - -/* Length of _HID, _UID, _CID, and UUID values */ - -#define ACPI_DEVICE_ID_LENGTH 0x09 -#define ACPI_MAX_CID_LENGTH 48 -#define ACPI_UUID_LENGTH 16 - -/* - * Operand Stack (in WALK_STATE), Must be large enough to contain METHOD_MAX_ARG - */ -#define ACPI_OBJ_NUM_OPERANDS 8 -#define ACPI_OBJ_MAX_OPERAND 7 - -/* Names within the namespace are 4 bytes long */ - -#define ACPI_NAME_SIZE 4 -#define ACPI_PATH_SEGMENT_LENGTH 5 /* 4 chars for name + 1 char for separator */ -#define ACPI_PATH_SEPARATOR '.' - -/* Sizes for ACPI table headers */ - -#define ACPI_OEM_ID_SIZE 6 -#define ACPI_OEM_TABLE_ID_SIZE 8 - -/* Constants used in searching for the RSDP in low memory */ - -#define ACPI_EBDA_PTR_LOCATION 0x0000040E /* Physical Address */ -#define ACPI_EBDA_PTR_LENGTH 2 -#define ACPI_EBDA_WINDOW_SIZE 1024 -#define ACPI_HI_RSDP_WINDOW_BASE 0x000E0000 /* Physical Address */ -#define ACPI_HI_RSDP_WINDOW_SIZE 0x00020000 -#define ACPI_RSDP_SCAN_STEP 16 - -/* Operation regions */ - -#define ACPI_NUM_PREDEFINED_REGIONS 8 -#define ACPI_USER_REGION_BEGIN 0x80 - -/* Maximum SpaceIds for Operation Regions */ - -#define ACPI_MAX_ADDRESS_SPACE 255 - -/* Array sizes. Used for range checking also */ - -#define ACPI_MAX_MATCH_OPCODE 5 - -/* RSDP checksums */ - -#define ACPI_RSDP_CHECKSUM_LENGTH 20 -#define ACPI_RSDP_XCHECKSUM_LENGTH 36 - -/* SMBus bidirectional buffer size */ - -#define ACPI_SMBUS_BUFFER_SIZE 34 - - -/****************************************************************************** - * - * ACPI AML Debugger - * - *****************************************************************************/ - -#define ACPI_DEBUGGER_MAX_ARGS 8 /* Must be max method args + 1 */ - -#define ACPI_DEBUGGER_COMMAND_PROMPT '-' -#define ACPI_DEBUGGER_EXECUTE_PROMPT '%' - - -#endif /* _ACCONFIG_H */ - diff --git a/sys/contrib/dev/acpica-unix-20061109/include/acdebug.h b/sys/contrib/dev/acpica-unix-20061109/include/acdebug.h deleted file mode 100644 index a56bde7cca..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/acdebug.h +++ /dev/null @@ -1,426 +0,0 @@ -/****************************************************************************** - * - * Name: acdebug.h - ACPI/AML debugger - * $Revision: 1.81 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACDEBUG_H__ -#define __ACDEBUG_H__ - - -#define ACPI_DEBUG_BUFFER_SIZE 4196 - -typedef struct CommandInfo -{ - char *Name; /* Command Name */ - UINT8 MinArgs; /* Minimum arguments required */ - -} COMMAND_INFO; - - -typedef struct ArgumentInfo -{ - char *Name; /* Argument Name */ - -} ARGUMENT_INFO; - - -#define PARAM_LIST(pl) pl -#define DBTEST_OUTPUT_LEVEL(lvl) if (AcpiGbl_DbOpt_verbose) -#define VERBOSE_PRINT(fp) DBTEST_OUTPUT_LEVEL(lvl) {\ - AcpiOsPrintf PARAM_LIST(fp);} - -#define EX_NO_SINGLE_STEP 1 -#define EX_SINGLE_STEP 2 - - -/* - * dbxface - external debugger interfaces - */ -ACPI_STATUS -AcpiDbInitialize ( - void); - -void -AcpiDbTerminate ( - void); - -ACPI_STATUS -AcpiDbSingleStep ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - UINT32 OpType); - - -/* - * dbcmds - debug commands and output routines - */ -ACPI_STATUS -AcpiDbDisassembleMethod ( - char *Name); - -void -AcpiDbDisplayTableInfo ( - char *TableArg); - -void -AcpiDbUnloadAcpiTable ( - char *TableArg, - char *InstanceArg); - -void -AcpiDbSetMethodBreakpoint ( - char *Location, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op); - -void -AcpiDbSetMethodCallBreakpoint ( - ACPI_PARSE_OBJECT *Op); - -void -AcpiDbGetBusInfo ( - void); - -void -AcpiDbDisassembleAml ( - char *Statements, - ACPI_PARSE_OBJECT *Op); - -void -AcpiDbDumpNamespace ( - char *StartArg, - char *DepthArg); - -void -AcpiDbDumpNamespaceByOwner ( - char *OwnerArg, - char *DepthArg); - -void -AcpiDbSendNotify ( - char *Name, - UINT32 Value); - -void -AcpiDbSetMethodData ( - char *TypeArg, - char *IndexArg, - char *ValueArg); - -ACPI_STATUS -AcpiDbDisplayObjects ( - char *ObjTypeArg, - char *DisplayCountArg); - -ACPI_STATUS -AcpiDbFindNameInNamespace ( - char *NameArg); - -void -AcpiDbSetScope ( - char *Name); - -ACPI_STATUS -AcpiDbSleep ( - char *ObjectArg); - -void -AcpiDbFindReferences ( - char *ObjectArg); - -void -AcpiDbDisplayLocks ( - void); - -void -AcpiDbDisplayResources ( - char *ObjectArg); - -void -AcpiDbDisplayGpes ( - void); - -void -AcpiDbCheckIntegrity ( - void); - -void -AcpiDbGenerateGpe ( - char *GpeArg, - char *BlockArg); - - -/* - * dbdisply - debug display commands - */ -void -AcpiDbDisplayMethodInfo ( - ACPI_PARSE_OBJECT *Op); - -void -AcpiDbDecodeAndDisplayObject ( - char *Target, - char *OutputType); - -void -AcpiDbDisplayResultObject ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDbDisplayAllMethods ( - char *DisplayCountArg); - -void -AcpiDbDisplayArguments ( - void); - -void -AcpiDbDisplayLocals ( - void); - -void -AcpiDbDisplayResults ( - void); - -void -AcpiDbDisplayCallingTree ( - void); - -void -AcpiDbDisplayObjectType ( - char *ObjectArg); - -void -AcpiDbDisplayArgumentObject ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState); - - -/* - * dbexec - debugger control method execution - */ -void -AcpiDbExecute ( - char *Name, - char **Args, - UINT32 Flags); - -void -AcpiDbCreateExecutionThreads ( - char *NumThreadsArg, - char *NumLoopsArg, - char *MethodNameArg); - - -/* - * dbfileio - Debugger file I/O commands - */ -ACPI_OBJECT_TYPE -AcpiDbMatchArgument ( - char *UserArgument, - ARGUMENT_INFO *Arguments); - -void -AcpiDbCloseDebugFile ( - void); - -void -AcpiDbOpenDebugFile ( - char *Name); - -ACPI_STATUS -AcpiDbLoadAcpiTable ( - char *Filename); - -ACPI_STATUS -AcpiDbGetTableFromFile ( - char *Filename, - ACPI_TABLE_HEADER **Table); - -ACPI_STATUS -AcpiDbReadTableFromFile ( - char *Filename, - ACPI_TABLE_HEADER **Table); - - -/* - * dbhistry - debugger HISTORY command - */ -void -AcpiDbAddToHistory ( - char *CommandLine); - -void -AcpiDbDisplayHistory ( - void); - -char * -AcpiDbGetFromHistory ( - char *CommandNumArg); - - -/* - * dbinput - user front-end to the AML debugger - */ -ACPI_STATUS -AcpiDbCommandDispatch ( - char *InputBuffer, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op); - -void ACPI_SYSTEM_XFACE -AcpiDbExecuteThread ( - void *Context); - -ACPI_STATUS -AcpiDbUserCommands ( - char Prompt, - ACPI_PARSE_OBJECT *Op); - - -/* - * dbstats - Generation and display of ACPI table statistics - */ -void -AcpiDbGenerateStatistics ( - ACPI_PARSE_OBJECT *Root, - BOOLEAN IsMethod); - -ACPI_STATUS -AcpiDbDisplayStatistics ( - char *TypeArg); - - -/* - * dbutils - AML debugger utilities - */ -void -AcpiDbSetOutputDestination ( - UINT32 Where); - -void -AcpiDbDumpExternalObject ( - ACPI_OBJECT *ObjDesc, - UINT32 Level); - -void -AcpiDbPrepNamestring ( - char *Name); - -ACPI_NAMESPACE_NODE * -AcpiDbLocalNsLookup ( - char *Name); - -#endif /* __ACDEBUG_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/acdisasm.h b/sys/contrib/dev/acpica-unix-20061109/include/acdisasm.h deleted file mode 100644 index 51c5e88eaa..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/acdisasm.h +++ /dev/null @@ -1,680 +0,0 @@ -/****************************************************************************** - * - * Name: acdisasm.h - AML disassembler - * $Revision: 1.38 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACDISASM_H__ -#define __ACDISASM_H__ - -#include "amlresrc.h" - - -#define BLOCK_NONE 0 -#define BLOCK_PAREN 1 -#define BLOCK_BRACE 2 -#define BLOCK_COMMA_LIST 4 -#define ACPI_DEFAULT_RESNAME *(UINT32 *) "__RD" - -typedef struct acpi_external_list -{ - char *Path; - char *InternalPath; - struct acpi_external_list *Next; - UINT32 Value; - UINT16 Length; - UINT8 Type; - -} ACPI_EXTERNAL_LIST; - -extern ACPI_EXTERNAL_LIST *AcpiGbl_ExternalList; - -typedef const struct acpi_dmtable_info -{ - UINT8 Opcode; - UINT8 Offset; - char *Name; - -} ACPI_DMTABLE_INFO; - -/* - * Values for Opcode above. - * Note: 0-7 must not change, used as a flag shift value - */ -#define ACPI_DMT_FLAG0 0 -#define ACPI_DMT_FLAG1 1 -#define ACPI_DMT_FLAG2 2 -#define ACPI_DMT_FLAG3 3 -#define ACPI_DMT_FLAG4 4 -#define ACPI_DMT_FLAG5 5 -#define ACPI_DMT_FLAG6 6 -#define ACPI_DMT_FLAG7 7 -#define ACPI_DMT_FLAGS0 8 -#define ACPI_DMT_FLAGS2 9 -#define ACPI_DMT_UINT8 10 -#define ACPI_DMT_UINT16 11 -#define ACPI_DMT_UINT24 12 -#define ACPI_DMT_UINT32 13 -#define ACPI_DMT_UINT56 14 -#define ACPI_DMT_UINT64 15 -#define ACPI_DMT_STRING 16 -#define ACPI_DMT_NAME4 17 -#define ACPI_DMT_NAME6 18 -#define ACPI_DMT_NAME8 19 -#define ACPI_DMT_CHKSUM 20 -#define ACPI_DMT_SPACEID 21 -#define ACPI_DMT_GAS 22 -#define ACPI_DMT_DMAR 23 -#define ACPI_DMT_MADT 24 -#define ACPI_DMT_SRAT 25 -#define ACPI_DMT_EXIT 26 -#define ACPI_DMT_SIG 27 - -typedef -void (*ACPI_TABLE_HANDLER) ( - ACPI_TABLE_HEADER *Table); - -typedef struct acpi_dmtable_data -{ - char *Signature; - ACPI_DMTABLE_INFO *TableInfo; - ACPI_TABLE_HANDLER TableHandler; - char *Name; - -} ACPI_DMTABLE_DATA; - - -typedef struct acpi_op_walk_info -{ - UINT32 Level; - UINT32 LastLevel; - UINT32 Count; - UINT32 BitOffset; - UINT32 Flags; - ACPI_WALK_STATE *WalkState; - -} ACPI_OP_WALK_INFO; - -typedef -ACPI_STATUS (*ASL_WALK_CALLBACK) ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -typedef struct acpi_resource_tag -{ - UINT32 BitIndex; - char *Tag; - -} ACPI_RESOURCE_TAG; - -/* Strings used for decoding flags to ASL keywords */ - -extern const char *AcpiGbl_WordDecode[]; -extern const char *AcpiGbl_IrqDecode[]; -extern const char *AcpiGbl_LockRule[]; -extern const char *AcpiGbl_AccessTypes[]; -extern const char *AcpiGbl_UpdateRules[]; -extern const char *AcpiGbl_MatchOps[]; - -extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf0[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf1[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf1a[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf2[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf2a[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf3[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf4[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsfHdr[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoBoot[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoCpep[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoCpep0[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoDbgp[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmarHdr[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmarScope[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar0[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar1[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoEcdt[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoFacs[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoFadt1[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoFadt2[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoGas[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoHeader[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoHpet[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt0[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt1[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt2[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt3[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt4[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt5[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt6[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt7[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt8[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadtHdr[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoMcfg[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoMcfg0[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp1[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp2[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoSbst[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoSlit[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoSpcr[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoSpmi[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat0[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat1[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpa[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoWdrt[]; - - -/* - * dmtable - */ -void -AcpiDmDumpDataTable ( - ACPI_TABLE_HEADER *Table); - -void -AcpiDmDumpTable ( - UINT32 TableLength, - UINT32 TableOffset, - void *Table, - UINT32 SubTableLength, - ACPI_DMTABLE_INFO *Info); - -void -AcpiDmLineHeader ( - UINT32 Offset, - UINT32 ByteLength, - char *Name); - -void -AcpiDmLineHeader2 ( - UINT32 Offset, - UINT32 ByteLength, - char *Name, - UINT32 Value); - - -/* - * dmtbdump - */ -void -AcpiDmDumpAsf ( - ACPI_TABLE_HEADER *Table); - -void -AcpiDmDumpCpep ( - ACPI_TABLE_HEADER *Table); - -void -AcpiDmDumpDmar ( - ACPI_TABLE_HEADER *Table); - -void -AcpiDmDumpFadt ( - ACPI_TABLE_HEADER *Table); - -void -AcpiDmDumpSrat ( - ACPI_TABLE_HEADER *Table); - -void -AcpiDmDumpMcfg ( - ACPI_TABLE_HEADER *Table); - -void -AcpiDmDumpMadt ( - ACPI_TABLE_HEADER *Table); - -UINT32 -AcpiDmDumpRsdp ( - ACPI_TABLE_HEADER *Table); - -void -AcpiDmDumpRsdt ( - ACPI_TABLE_HEADER *Table); - -void -AcpiDmDumpSlit ( - ACPI_TABLE_HEADER *Table); - -void -AcpiDmDumpXsdt ( - ACPI_TABLE_HEADER *Table); - - -/* - * dmwalk - */ -void -AcpiDmDisassemble ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Origin, - UINT32 NumOpcodes); - -void -AcpiDmWalkParseTree ( - ACPI_PARSE_OBJECT *Op, - ASL_WALK_CALLBACK DescendingCallback, - ASL_WALK_CALLBACK AscendingCallback, - void *Context); - - -/* - * dmopcode - */ -void -AcpiDmDisassembleOneOp ( - ACPI_WALK_STATE *WalkState, - ACPI_OP_WALK_INFO *Info, - ACPI_PARSE_OBJECT *Op); - -void -AcpiDmDecodeInternalObject ( - ACPI_OPERAND_OBJECT *ObjDesc); - -UINT32 -AcpiDmListType ( - ACPI_PARSE_OBJECT *Op); - -void -AcpiDmMethodFlags ( - ACPI_PARSE_OBJECT *Op); - -void -AcpiDmFieldFlags ( - ACPI_PARSE_OBJECT *Op); - -void -AcpiDmAddressSpace ( - UINT8 SpaceId); - -void -AcpiDmRegionFlags ( - ACPI_PARSE_OBJECT *Op); - -void -AcpiDmMatchOp ( - ACPI_PARSE_OBJECT *Op); - -BOOLEAN -AcpiDmCommaIfListMember ( - ACPI_PARSE_OBJECT *Op); - -void -AcpiDmCommaIfFieldMember ( - ACPI_PARSE_OBJECT *Op); - - -/* - * dmnames - */ -UINT32 -AcpiDmDumpName ( - char *Name); - -ACPI_STATUS -AcpiPsDisplayObjectPathname ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op); - -void -AcpiDmNamestring ( - char *Name); - - -/* - * dmobject - */ -void -AcpiDmDisplayInternalObject ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState); - -void -AcpiDmDisplayArguments ( - ACPI_WALK_STATE *WalkState); - -void -AcpiDmDisplayLocals ( - ACPI_WALK_STATE *WalkState); - -void -AcpiDmDumpMethodInfo ( - ACPI_STATUS Status, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op); - - -/* - * dmbuffer - */ -void -AcpiDmDisasmByteList ( - UINT32 Level, - UINT8 *ByteData, - UINT32 ByteCount); - -void -AcpiDmByteList ( - ACPI_OP_WALK_INFO *Info, - ACPI_PARSE_OBJECT *Op); - -void -AcpiDmIsEisaId ( - ACPI_PARSE_OBJECT *Op); - -void -AcpiDmEisaId ( - UINT32 EncodedId); - -BOOLEAN -AcpiDmIsUnicodeBuffer ( - ACPI_PARSE_OBJECT *Op); - -BOOLEAN -AcpiDmIsStringBuffer ( - ACPI_PARSE_OBJECT *Op); - - -/* - * dmresrc - */ -void -AcpiDmDumpInteger8 ( - UINT8 Value, - char *Name); - -void -AcpiDmDumpInteger16 ( - UINT16 Value, - char *Name); - -void -AcpiDmDumpInteger32 ( - UINT32 Value, - char *Name); - -void -AcpiDmDumpInteger64 ( - UINT64 Value, - char *Name); - -void -AcpiDmResourceTemplate ( - ACPI_OP_WALK_INFO *Info, - ACPI_PARSE_OBJECT *Op, - UINT8 *ByteData, - UINT32 ByteCount); - -ACPI_STATUS -AcpiDmIsResourceTemplate ( - ACPI_PARSE_OBJECT *Op); - -void -AcpiDmIndent ( - UINT32 Level); - -void -AcpiDmBitList ( - UINT16 Mask); - -void -AcpiDmDecodeAttribute ( - UINT8 Attribute); - -void -AcpiDmDescriptorName ( - void); - - -/* - * dmresrcl - */ -void -AcpiDmWordDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level); - -void -AcpiDmDwordDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level); - -void -AcpiDmExtendedDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level); - -void -AcpiDmQwordDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level); - -void -AcpiDmMemory24Descriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level); - -void -AcpiDmMemory32Descriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level); - -void -AcpiDmFixedMemory32Descriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level); - -void -AcpiDmGenericRegisterDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level); - -void -AcpiDmInterruptDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level); - -void -AcpiDmVendorLargeDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level); - -void -AcpiDmVendorCommon ( - char *Name, - UINT8 *ByteData, - UINT32 Length, - UINT32 Level); - - -/* - * dmresrcs - */ -void -AcpiDmIrqDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level); - -void -AcpiDmDmaDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level); - -void -AcpiDmIoDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level); - -void -AcpiDmFixedIoDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level); - -void -AcpiDmStartDependentDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level); - -void -AcpiDmEndDependentDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level); - -void -AcpiDmVendorSmallDescriptor ( - AML_RESOURCE *Resource, - UINT32 Length, - UINT32 Level); - - -/* - * dmutils - */ -void -AcpiDmAddToExternalList ( - char *Path, - UINT8 Type, - UINT32 Value); - -/* - * dmrestag - */ -void -AcpiDmFindResources ( - ACPI_PARSE_OBJECT *Root); - -void -AcpiDmCheckResourceReference ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState); - -#endif /* __ACDISASM_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/acdispat.h b/sys/contrib/dev/acpica-unix-20061109/include/acdispat.h deleted file mode 100644 index c1c66fae00..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/acdispat.h +++ /dev/null @@ -1,529 +0,0 @@ -/****************************************************************************** - * - * Name: acdispat.h - dispatcher (parser to interpreter interface) - * $Revision: 1.73 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#ifndef _ACDISPAT_H_ -#define _ACDISPAT_H_ - - -#define NAMEOF_LOCAL_NTE "__L0" -#define NAMEOF_ARG_NTE "__A0" - - -/* - * dsopcode - support for late evaluation - */ -ACPI_STATUS -AcpiDsGetBufferFieldArguments ( - ACPI_OPERAND_OBJECT *ObjDesc); - -ACPI_STATUS -AcpiDsGetRegionArguments ( - ACPI_OPERAND_OBJECT *RgnDesc); - -ACPI_STATUS -AcpiDsGetBufferArguments ( - ACPI_OPERAND_OBJECT *ObjDesc); - -ACPI_STATUS -AcpiDsGetPackageArguments ( - ACPI_OPERAND_OBJECT *ObjDesc); - -ACPI_STATUS -AcpiDsEvalBufferFieldOperands ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op); - -ACPI_STATUS -AcpiDsEvalRegionOperands ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op); - -ACPI_STATUS -AcpiDsEvalDataObjectOperands ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - ACPI_OPERAND_OBJECT *ObjDesc); - -ACPI_STATUS -AcpiDsInitializeRegion ( - ACPI_HANDLE ObjHandle); - - -/* - * dsctrl - Parser/Interpreter interface, control stack routines - */ -ACPI_STATUS -AcpiDsExecBeginControlOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op); - -ACPI_STATUS -AcpiDsExecEndControlOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op); - - -/* - * dsexec - Parser/Interpreter interface, method execution callbacks - */ -ACPI_STATUS -AcpiDsGetPredicateValue ( - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT *ResultObj); - -ACPI_STATUS -AcpiDsExecBeginOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT **OutOp); - -ACPI_STATUS -AcpiDsExecEndOp ( - ACPI_WALK_STATE *State); - - -/* - * dsfield - Parser/Interpreter interface for AML fields - */ -ACPI_STATUS -AcpiDsCreateField ( - ACPI_PARSE_OBJECT *Op, - ACPI_NAMESPACE_NODE *RegionNode, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsCreateBankField ( - ACPI_PARSE_OBJECT *Op, - ACPI_NAMESPACE_NODE *RegionNode, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsCreateIndexField ( - ACPI_PARSE_OBJECT *Op, - ACPI_NAMESPACE_NODE *RegionNode, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsCreateBufferField ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsInitFieldObjects ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState); - - -/* - * dsload - Parser/Interpreter interface, namespace load callbacks - */ -ACPI_STATUS -AcpiDsLoad1BeginOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT **OutOp); - -ACPI_STATUS -AcpiDsLoad1EndOp ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsLoad2BeginOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT **OutOp); - -ACPI_STATUS -AcpiDsLoad2EndOp ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsInitCallbacks ( - ACPI_WALK_STATE *WalkState, - UINT32 PassNumber); - - -/* - * dsmthdat - method data (locals/args) - */ -ACPI_STATUS -AcpiDsStoreObjectToLocal ( - UINT16 Opcode, - UINT32 Index, - ACPI_OPERAND_OBJECT *SrcDesc, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsMethodDataGetEntry ( - UINT16 Opcode, - UINT32 Index, - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT ***Node); - -void -AcpiDsMethodDataDeleteAll ( - ACPI_WALK_STATE *WalkState); - -BOOLEAN -AcpiDsIsMethodValue ( - ACPI_OPERAND_OBJECT *ObjDesc); - -ACPI_STATUS -AcpiDsMethodDataGetValue ( - UINT16 Opcode, - UINT32 Index, - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT **DestDesc); - -ACPI_STATUS -AcpiDsMethodDataInitArgs ( - ACPI_OPERAND_OBJECT **Params, - UINT32 MaxParamCount, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsMethodDataGetNode ( - UINT16 Opcode, - UINT32 Index, - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE **Node); - -void -AcpiDsMethodDataInit ( - ACPI_WALK_STATE *WalkState); - - -/* - * dsmethod - Parser/Interpreter interface - control method parsing - */ -ACPI_STATUS -AcpiDsParseMethod ( - ACPI_NAMESPACE_NODE *Node); - -ACPI_STATUS -AcpiDsCallControlMethod ( - ACPI_THREAD_STATE *Thread, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op); - -ACPI_STATUS -AcpiDsRestartControlMethod ( - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT *ReturnDesc); - -void -AcpiDsTerminateControlMethod ( - ACPI_OPERAND_OBJECT *MethodDesc, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsBeginMethodExecution ( - ACPI_NAMESPACE_NODE *MethodNode, - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsMethodError ( - ACPI_STATUS Status, - ACPI_WALK_STATE *WalkState); - -/* - * dsinit - */ -ACPI_STATUS -AcpiDsInitializeObjects ( - ACPI_NATIVE_UINT TableIndex, - ACPI_NAMESPACE_NODE *StartNode); - - -/* - * dsobject - Parser/Interpreter interface - object initialization and conversion - */ -ACPI_STATUS -AcpiDsBuildInternalBufferObj ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - UINT32 BufferLength, - ACPI_OPERAND_OBJECT **ObjDescPtr); - -ACPI_STATUS -AcpiDsBuildInternalPackageObj ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *op, - UINT32 PackageLength, - ACPI_OPERAND_OBJECT **ObjDesc); - -ACPI_STATUS -AcpiDsInitObjectFromOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - UINT16 Opcode, - ACPI_OPERAND_OBJECT **ObjDesc); - -ACPI_STATUS -AcpiDsCreateNode ( - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE *Node, - ACPI_PARSE_OBJECT *Op); - - -/* - * dsutils - Parser/Interpreter interface utility routines - */ -void -AcpiDsClearImplicitReturn ( - ACPI_WALK_STATE *WalkState); - -BOOLEAN -AcpiDsDoImplicitReturn ( - ACPI_OPERAND_OBJECT *ReturnDesc, - ACPI_WALK_STATE *WalkState, - BOOLEAN AddReference); - -BOOLEAN -AcpiDsIsResultUsed ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState); - -void -AcpiDsDeleteResultIfNotUsed ( - ACPI_PARSE_OBJECT *Op, - ACPI_OPERAND_OBJECT *ResultObj, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsCreateOperand ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Arg, - UINT32 ArgsRemaining); - -ACPI_STATUS -AcpiDsCreateOperands ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *FirstArg); - -ACPI_STATUS -AcpiDsResolveOperands ( - ACPI_WALK_STATE *WalkState); - -void -AcpiDsClearOperands ( - ACPI_WALK_STATE *WalkState); - - -/* - * dswscope - Scope Stack manipulation - */ -ACPI_STATUS -AcpiDsScopeStackPush ( - ACPI_NAMESPACE_NODE *Node, - ACPI_OBJECT_TYPE Type, - ACPI_WALK_STATE *WalkState); - - -ACPI_STATUS -AcpiDsScopeStackPop ( - ACPI_WALK_STATE *WalkState); - -void -AcpiDsScopeStackClear ( - ACPI_WALK_STATE *WalkState); - - -/* - * dswstate - parser WALK_STATE management routines - */ -ACPI_STATUS -AcpiDsObjStackPush ( - void *Object, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsObjStackPop ( - UINT32 PopCount, - ACPI_WALK_STATE *WalkState); - -ACPI_WALK_STATE * -AcpiDsCreateWalkState ( - ACPI_OWNER_ID OwnerId, - ACPI_PARSE_OBJECT *Origin, - ACPI_OPERAND_OBJECT *MthDesc, - ACPI_THREAD_STATE *Thread); - -ACPI_STATUS -AcpiDsInitAmlWalk ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - ACPI_NAMESPACE_NODE *MethodNode, - UINT8 *AmlStart, - UINT32 AmlLength, - ACPI_EVALUATE_INFO *Info, - UINT8 PassNumber); - -ACPI_STATUS -AcpiDsObjStackPopAndDelete ( - UINT32 PopCount, - ACPI_WALK_STATE *WalkState); - -void -AcpiDsDeleteWalkState ( - ACPI_WALK_STATE *WalkState); - -ACPI_WALK_STATE * -AcpiDsPopWalkState ( - ACPI_THREAD_STATE *Thread); - -void -AcpiDsPushWalkState ( - ACPI_WALK_STATE *WalkState, - ACPI_THREAD_STATE *Thread); - -ACPI_STATUS -AcpiDsResultStackPop ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsResultStackPush ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsResultStackClear ( - ACPI_WALK_STATE *WalkState); - -ACPI_WALK_STATE * -AcpiDsGetCurrentWalkState ( - ACPI_THREAD_STATE *Thread); - -ACPI_STATUS -AcpiDsResultRemove ( - ACPI_OPERAND_OBJECT **Object, - UINT32 Index, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsResultPop ( - ACPI_OPERAND_OBJECT **Object, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsResultPush ( - ACPI_OPERAND_OBJECT *Object, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsResultPopFromBottom ( - ACPI_OPERAND_OBJECT **Object, - ACPI_WALK_STATE *WalkState); - -#endif /* _ACDISPAT_H_ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/acevents.h b/sys/contrib/dev/acpica-unix-20061109/include/acevents.h deleted file mode 100644 index 1b685c7201..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/acevents.h +++ /dev/null @@ -1,374 +0,0 @@ -/****************************************************************************** - * - * Name: acevents.h - Event subcomponent prototypes and defines - * $Revision: 1.106 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACEVENTS_H__ -#define __ACEVENTS_H__ - - -/* - * evevent - */ -ACPI_STATUS -AcpiEvInitializeEvents ( - void); - -ACPI_STATUS -AcpiEvInstallXruptHandlers ( - void); - -ACPI_STATUS -AcpiEvInstallFadtGpes ( - void); - -UINT32 -AcpiEvFixedEventDetect ( - void); - - -/* - * evmisc - */ -BOOLEAN -AcpiEvIsNotifyObject ( - ACPI_NAMESPACE_NODE *Node); - -ACPI_STATUS -AcpiEvAcquireGlobalLock( - UINT16 Timeout); - -ACPI_STATUS -AcpiEvReleaseGlobalLock( - void); - -ACPI_STATUS -AcpiEvInitGlobalLockHandler ( - void); - -UINT32 -AcpiEvGetGpeNumberIndex ( - UINT32 GpeNumber); - -ACPI_STATUS -AcpiEvQueueNotifyRequest ( - ACPI_NAMESPACE_NODE *Node, - UINT32 NotifyValue); - - -/* - * evgpe - GPE handling and dispatch - */ -ACPI_STATUS -AcpiEvUpdateGpeEnableMasks ( - ACPI_GPE_EVENT_INFO *GpeEventInfo, - UINT8 Type); - -ACPI_STATUS -AcpiEvEnableGpe ( - ACPI_GPE_EVENT_INFO *GpeEventInfo, - BOOLEAN WriteToHardware); - -ACPI_STATUS -AcpiEvDisableGpe ( - ACPI_GPE_EVENT_INFO *GpeEventInfo); - -ACPI_GPE_EVENT_INFO * -AcpiEvGetGpeEventInfo ( - ACPI_HANDLE GpeDevice, - UINT32 GpeNumber); - - -/* - * evgpeblk - */ -BOOLEAN -AcpiEvValidGpeEvent ( - ACPI_GPE_EVENT_INFO *GpeEventInfo); - -ACPI_STATUS -AcpiEvWalkGpeList ( - ACPI_GPE_CALLBACK GpeWalkCallback); - -ACPI_STATUS -AcpiEvDeleteGpeHandlers ( - ACPI_GPE_XRUPT_INFO *GpeXruptInfo, - ACPI_GPE_BLOCK_INFO *GpeBlock); - -ACPI_STATUS -AcpiEvCreateGpeBlock ( - ACPI_NAMESPACE_NODE *GpeDevice, - ACPI_GENERIC_ADDRESS *GpeBlockAddress, - UINT32 RegisterCount, - UINT8 GpeBlockBaseNumber, - UINT32 InterruptNumber, - ACPI_GPE_BLOCK_INFO **ReturnGpeBlock); - -ACPI_STATUS -AcpiEvInitializeGpeBlock ( - ACPI_NAMESPACE_NODE *GpeDevice, - ACPI_GPE_BLOCK_INFO *GpeBlock); - -ACPI_STATUS -AcpiEvDeleteGpeBlock ( - ACPI_GPE_BLOCK_INFO *GpeBlock); - -UINT32 -AcpiEvGpeDispatch ( - ACPI_GPE_EVENT_INFO *GpeEventInfo, - UINT32 GpeNumber); - -UINT32 -AcpiEvGpeDetect ( - ACPI_GPE_XRUPT_INFO *GpeXruptList); - -ACPI_STATUS -AcpiEvSetGpeType ( - ACPI_GPE_EVENT_INFO *GpeEventInfo, - UINT8 Type); - -ACPI_STATUS -AcpiEvCheckForWakeOnlyGpe ( - ACPI_GPE_EVENT_INFO *GpeEventInfo); - -ACPI_STATUS -AcpiEvGpeInitialize ( - void); - - -/* - * evregion - Address Space handling - */ -ACPI_STATUS -AcpiEvInstallRegionHandlers ( - void); - -ACPI_STATUS -AcpiEvInitializeOpRegions ( - void); - -ACPI_STATUS -AcpiEvAddressSpaceDispatch ( - ACPI_OPERAND_OBJECT *RegionObj, - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - ACPI_INTEGER *Value); - -ACPI_STATUS -AcpiEvAttachRegion ( - ACPI_OPERAND_OBJECT *HandlerObj, - ACPI_OPERAND_OBJECT *RegionObj, - BOOLEAN AcpiNsIsLocked); - -void -AcpiEvDetachRegion ( - ACPI_OPERAND_OBJECT *RegionObj, - BOOLEAN AcpiNsIsLocked); - -ACPI_STATUS -AcpiEvInstallSpaceHandler ( - ACPI_NAMESPACE_NODE *Node, - ACPI_ADR_SPACE_TYPE SpaceId, - ACPI_ADR_SPACE_HANDLER Handler, - ACPI_ADR_SPACE_SETUP Setup, - void *Context); - -ACPI_STATUS -AcpiEvExecuteRegMethods ( - ACPI_NAMESPACE_NODE *Node, - ACPI_ADR_SPACE_TYPE SpaceId); - -ACPI_STATUS -AcpiEvExecuteRegMethod ( - ACPI_OPERAND_OBJECT *RegionObj, - UINT32 Function); - - -/* - * evregini - Region initialization and setup - */ -ACPI_STATUS -AcpiEvSystemMemoryRegionSetup ( - ACPI_HANDLE Handle, - UINT32 Function, - void *HandlerContext, - void **RegionContext); - -ACPI_STATUS -AcpiEvIoSpaceRegionSetup ( - ACPI_HANDLE Handle, - UINT32 Function, - void *HandlerContext, - void **RegionContext); - -ACPI_STATUS -AcpiEvPciConfigRegionSetup ( - ACPI_HANDLE Handle, - UINT32 Function, - void *HandlerContext, - void **RegionContext); - -ACPI_STATUS -AcpiEvCmosRegionSetup ( - ACPI_HANDLE Handle, - UINT32 Function, - void *HandlerContext, - void **RegionContext); - -ACPI_STATUS -AcpiEvPciBarRegionSetup ( - ACPI_HANDLE Handle, - UINT32 Function, - void *HandlerContext, - void **RegionContext); - -ACPI_STATUS -AcpiEvDefaultRegionSetup ( - ACPI_HANDLE Handle, - UINT32 Function, - void *HandlerContext, - void **RegionContext); - -ACPI_STATUS -AcpiEvInitializeRegion ( - ACPI_OPERAND_OBJECT *RegionObj, - BOOLEAN AcpiNsLocked); - - -/* - * evsci - SCI (System Control Interrupt) handling/dispatch - */ -UINT32 ACPI_SYSTEM_XFACE -AcpiEvGpeXruptHandler ( - void *Context); - -UINT32 -AcpiEvInstallSciHandler ( - void); - -ACPI_STATUS -AcpiEvRemoveSciHandler ( - void); - -UINT32 -AcpiEvInitializeSCI ( - UINT32 ProgramSCI); - -void -AcpiEvTerminate ( - void); - - -#endif /* __ACEVENTS_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/acexcep.h b/sys/contrib/dev/acpica-unix-20061109/include/acexcep.h deleted file mode 100644 index 3899a26021..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/acexcep.h +++ /dev/null @@ -1,390 +0,0 @@ -/****************************************************************************** - * - * Name: acexcep.h - Exception codes returned by the ACPI subsystem - * $Revision: 1.78 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACEXCEP_H__ -#define __ACEXCEP_H__ - - -/* - * Exceptions returned by external ACPI interfaces - */ -#define AE_CODE_ENVIRONMENTAL 0x0000 -#define AE_CODE_PROGRAMMER 0x1000 -#define AE_CODE_ACPI_TABLES 0x2000 -#define AE_CODE_AML 0x3000 -#define AE_CODE_CONTROL 0x4000 -#define AE_CODE_MASK 0xF000 - - -#define ACPI_SUCCESS(a) (!(a)) -#define ACPI_FAILURE(a) (a) - - -#define AE_OK (ACPI_STATUS) 0x0000 - -/* - * Environmental exceptions - */ -#define AE_ERROR (ACPI_STATUS) (0x0001 | AE_CODE_ENVIRONMENTAL) -#define AE_NO_ACPI_TABLES (ACPI_STATUS) (0x0002 | AE_CODE_ENVIRONMENTAL) -#define AE_NO_NAMESPACE (ACPI_STATUS) (0x0003 | AE_CODE_ENVIRONMENTAL) -#define AE_NO_MEMORY (ACPI_STATUS) (0x0004 | AE_CODE_ENVIRONMENTAL) -#define AE_NOT_FOUND (ACPI_STATUS) (0x0005 | AE_CODE_ENVIRONMENTAL) -#define AE_NOT_EXIST (ACPI_STATUS) (0x0006 | AE_CODE_ENVIRONMENTAL) -#define AE_ALREADY_EXISTS (ACPI_STATUS) (0x0007 | AE_CODE_ENVIRONMENTAL) -#define AE_TYPE (ACPI_STATUS) (0x0008 | AE_CODE_ENVIRONMENTAL) -#define AE_NULL_OBJECT (ACPI_STATUS) (0x0009 | AE_CODE_ENVIRONMENTAL) -#define AE_NULL_ENTRY (ACPI_STATUS) (0x000A | AE_CODE_ENVIRONMENTAL) -#define AE_BUFFER_OVERFLOW (ACPI_STATUS) (0x000B | AE_CODE_ENVIRONMENTAL) -#define AE_STACK_OVERFLOW (ACPI_STATUS) (0x000C | AE_CODE_ENVIRONMENTAL) -#define AE_STACK_UNDERFLOW (ACPI_STATUS) (0x000D | AE_CODE_ENVIRONMENTAL) -#define AE_NOT_IMPLEMENTED (ACPI_STATUS) (0x000E | AE_CODE_ENVIRONMENTAL) -#define AE_VERSION_MISMATCH (ACPI_STATUS) (0x000F | AE_CODE_ENVIRONMENTAL) -#define AE_SUPPORT (ACPI_STATUS) (0x0010 | AE_CODE_ENVIRONMENTAL) -#define AE_SHARE (ACPI_STATUS) (0x0011 | AE_CODE_ENVIRONMENTAL) -#define AE_LIMIT (ACPI_STATUS) (0x0012 | AE_CODE_ENVIRONMENTAL) -#define AE_TIME (ACPI_STATUS) (0x0013 | AE_CODE_ENVIRONMENTAL) -#define AE_UNKNOWN_STATUS (ACPI_STATUS) (0x0014 | AE_CODE_ENVIRONMENTAL) -#define AE_ACQUIRE_DEADLOCK (ACPI_STATUS) (0x0015 | AE_CODE_ENVIRONMENTAL) -#define AE_RELEASE_DEADLOCK (ACPI_STATUS) (0x0016 | AE_CODE_ENVIRONMENTAL) -#define AE_NOT_ACQUIRED (ACPI_STATUS) (0x0017 | AE_CODE_ENVIRONMENTAL) -#define AE_ALREADY_ACQUIRED (ACPI_STATUS) (0x0018 | AE_CODE_ENVIRONMENTAL) -#define AE_NO_HARDWARE_RESPONSE (ACPI_STATUS) (0x0019 | AE_CODE_ENVIRONMENTAL) -#define AE_NO_GLOBAL_LOCK (ACPI_STATUS) (0x001A | AE_CODE_ENVIRONMENTAL) -#define AE_LOGICAL_ADDRESS (ACPI_STATUS) (0x001B | AE_CODE_ENVIRONMENTAL) -#define AE_ABORT_METHOD (ACPI_STATUS) (0x001C | AE_CODE_ENVIRONMENTAL) -#define AE_SAME_HANDLER (ACPI_STATUS) (0x001D | AE_CODE_ENVIRONMENTAL) -#define AE_WAKE_ONLY_GPE (ACPI_STATUS) (0x001E | AE_CODE_ENVIRONMENTAL) -#define AE_OWNER_ID_LIMIT (ACPI_STATUS) (0x001F | AE_CODE_ENVIRONMENTAL) - -#define AE_CODE_ENV_MAX 0x001F - - -/* - * Programmer exceptions - */ -#define AE_BAD_PARAMETER (ACPI_STATUS) (0x0001 | AE_CODE_PROGRAMMER) -#define AE_BAD_CHARACTER (ACPI_STATUS) (0x0002 | AE_CODE_PROGRAMMER) -#define AE_BAD_PATHNAME (ACPI_STATUS) (0x0003 | AE_CODE_PROGRAMMER) -#define AE_BAD_DATA (ACPI_STATUS) (0x0004 | AE_CODE_PROGRAMMER) -#define AE_BAD_ADDRESS (ACPI_STATUS) (0x0005 | AE_CODE_PROGRAMMER) -#define AE_ALIGNMENT (ACPI_STATUS) (0x0006 | AE_CODE_PROGRAMMER) -#define AE_BAD_HEX_CONSTANT (ACPI_STATUS) (0x0007 | AE_CODE_PROGRAMMER) -#define AE_BAD_OCTAL_CONSTANT (ACPI_STATUS) (0x0008 | AE_CODE_PROGRAMMER) -#define AE_BAD_DECIMAL_CONSTANT (ACPI_STATUS) (0x0009 | AE_CODE_PROGRAMMER) - -#define AE_CODE_PGM_MAX 0x0009 - - -/* - * Acpi table exceptions - */ -#define AE_BAD_SIGNATURE (ACPI_STATUS) (0x0001 | AE_CODE_ACPI_TABLES) -#define AE_BAD_HEADER (ACPI_STATUS) (0x0002 | AE_CODE_ACPI_TABLES) -#define AE_BAD_CHECKSUM (ACPI_STATUS) (0x0003 | AE_CODE_ACPI_TABLES) -#define AE_BAD_VALUE (ACPI_STATUS) (0x0004 | AE_CODE_ACPI_TABLES) -#define AE_TABLE_NOT_SUPPORTED (ACPI_STATUS) (0x0005 | AE_CODE_ACPI_TABLES) -#define AE_INVALID_TABLE_LENGTH (ACPI_STATUS) (0x0006 | AE_CODE_ACPI_TABLES) - -#define AE_CODE_TBL_MAX 0x0006 - - -/* - * AML exceptions. These are caused by problems with - * the actual AML byte stream - */ -#define AE_AML_ERROR (ACPI_STATUS) (0x0001 | AE_CODE_AML) -#define AE_AML_PARSE (ACPI_STATUS) (0x0002 | AE_CODE_AML) -#define AE_AML_BAD_OPCODE (ACPI_STATUS) (0x0003 | AE_CODE_AML) -#define AE_AML_NO_OPERAND (ACPI_STATUS) (0x0004 | AE_CODE_AML) -#define AE_AML_OPERAND_TYPE (ACPI_STATUS) (0x0005 | AE_CODE_AML) -#define AE_AML_OPERAND_VALUE (ACPI_STATUS) (0x0006 | AE_CODE_AML) -#define AE_AML_UNINITIALIZED_LOCAL (ACPI_STATUS) (0x0007 | AE_CODE_AML) -#define AE_AML_UNINITIALIZED_ARG (ACPI_STATUS) (0x0008 | AE_CODE_AML) -#define AE_AML_UNINITIALIZED_ELEMENT (ACPI_STATUS) (0x0009 | AE_CODE_AML) -#define AE_AML_NUMERIC_OVERFLOW (ACPI_STATUS) (0x000A | AE_CODE_AML) -#define AE_AML_REGION_LIMIT (ACPI_STATUS) (0x000B | AE_CODE_AML) -#define AE_AML_BUFFER_LIMIT (ACPI_STATUS) (0x000C | AE_CODE_AML) -#define AE_AML_PACKAGE_LIMIT (ACPI_STATUS) (0x000D | AE_CODE_AML) -#define AE_AML_DIVIDE_BY_ZERO (ACPI_STATUS) (0x000E | AE_CODE_AML) -#define AE_AML_BAD_NAME (ACPI_STATUS) (0x000F | AE_CODE_AML) -#define AE_AML_NAME_NOT_FOUND (ACPI_STATUS) (0x0010 | AE_CODE_AML) -#define AE_AML_INTERNAL (ACPI_STATUS) (0x0011 | AE_CODE_AML) -#define AE_AML_INVALID_SPACE_ID (ACPI_STATUS) (0x0012 | AE_CODE_AML) -#define AE_AML_STRING_LIMIT (ACPI_STATUS) (0x0013 | AE_CODE_AML) -#define AE_AML_NO_RETURN_VALUE (ACPI_STATUS) (0x0014 | AE_CODE_AML) -#define AE_AML_METHOD_LIMIT (ACPI_STATUS) (0x0015 | AE_CODE_AML) -#define AE_AML_NOT_OWNER (ACPI_STATUS) (0x0016 | AE_CODE_AML) -#define AE_AML_MUTEX_ORDER (ACPI_STATUS) (0x0017 | AE_CODE_AML) -#define AE_AML_MUTEX_NOT_ACQUIRED (ACPI_STATUS) (0x0018 | AE_CODE_AML) -#define AE_AML_INVALID_RESOURCE_TYPE (ACPI_STATUS) (0x0019 | AE_CODE_AML) -#define AE_AML_INVALID_INDEX (ACPI_STATUS) (0x001A | AE_CODE_AML) -#define AE_AML_REGISTER_LIMIT (ACPI_STATUS) (0x001B | AE_CODE_AML) -#define AE_AML_NO_WHILE (ACPI_STATUS) (0x001C | AE_CODE_AML) -#define AE_AML_ALIGNMENT (ACPI_STATUS) (0x001D | AE_CODE_AML) -#define AE_AML_NO_RESOURCE_END_TAG (ACPI_STATUS) (0x001E | AE_CODE_AML) -#define AE_AML_BAD_RESOURCE_VALUE (ACPI_STATUS) (0x001F | AE_CODE_AML) -#define AE_AML_CIRCULAR_REFERENCE (ACPI_STATUS) (0x0020 | AE_CODE_AML) -#define AE_AML_BAD_RESOURCE_LENGTH (ACPI_STATUS) (0x0021 | AE_CODE_AML) -#define AE_AML_ILLEGAL_ADDRESS (ACPI_STATUS) (0x0022 | AE_CODE_AML) - -#define AE_CODE_AML_MAX 0x0022 - - -/* - * Internal exceptions used for control - */ -#define AE_CTRL_RETURN_VALUE (ACPI_STATUS) (0x0001 | AE_CODE_CONTROL) -#define AE_CTRL_PENDING (ACPI_STATUS) (0x0002 | AE_CODE_CONTROL) -#define AE_CTRL_TERMINATE (ACPI_STATUS) (0x0003 | AE_CODE_CONTROL) -#define AE_CTRL_TRUE (ACPI_STATUS) (0x0004 | AE_CODE_CONTROL) -#define AE_CTRL_FALSE (ACPI_STATUS) (0x0005 | AE_CODE_CONTROL) -#define AE_CTRL_DEPTH (ACPI_STATUS) (0x0006 | AE_CODE_CONTROL) -#define AE_CTRL_END (ACPI_STATUS) (0x0007 | AE_CODE_CONTROL) -#define AE_CTRL_TRANSFER (ACPI_STATUS) (0x0008 | AE_CODE_CONTROL) -#define AE_CTRL_BREAK (ACPI_STATUS) (0x0009 | AE_CODE_CONTROL) -#define AE_CTRL_CONTINUE (ACPI_STATUS) (0x000A | AE_CODE_CONTROL) -#define AE_CTRL_SKIP (ACPI_STATUS) (0x000B | AE_CODE_CONTROL) -#define AE_CTRL_PARSE_CONTINUE (ACPI_STATUS) (0x000C | AE_CODE_CONTROL) -#define AE_CTRL_PARSE_PENDING (ACPI_STATUS) (0x000D | AE_CODE_CONTROL) - -#define AE_CODE_CTRL_MAX 0x000D - - -#ifdef DEFINE_ACPI_GLOBALS - - -/* - * String versions of the exception codes above - * These strings must match the corresponding defines exactly - */ -char const *AcpiGbl_ExceptionNames_Env[] = -{ - "AE_OK", - "AE_ERROR", - "AE_NO_ACPI_TABLES", - "AE_NO_NAMESPACE", - "AE_NO_MEMORY", - "AE_NOT_FOUND", - "AE_NOT_EXIST", - "AE_ALREADY_EXISTS", - "AE_TYPE", - "AE_NULL_OBJECT", - "AE_NULL_ENTRY", - "AE_BUFFER_OVERFLOW", - "AE_STACK_OVERFLOW", - "AE_STACK_UNDERFLOW", - "AE_NOT_IMPLEMENTED", - "AE_VERSION_MISMATCH", - "AE_SUPPORT", - "AE_SHARE", - "AE_LIMIT", - "AE_TIME", - "AE_UNKNOWN_STATUS", - "AE_ACQUIRE_DEADLOCK", - "AE_RELEASE_DEADLOCK", - "AE_NOT_ACQUIRED", - "AE_ALREADY_ACQUIRED", - "AE_NO_HARDWARE_RESPONSE", - "AE_NO_GLOBAL_LOCK", - "AE_LOGICAL_ADDRESS", - "AE_ABORT_METHOD", - "AE_SAME_HANDLER", - "AE_WAKE_ONLY_GPE", - "AE_OWNER_ID_LIMIT" -}; - -char const *AcpiGbl_ExceptionNames_Pgm[] = -{ - "AE_BAD_PARAMETER", - "AE_BAD_CHARACTER", - "AE_BAD_PATHNAME", - "AE_BAD_DATA", - "AE_BAD_ADDRESS", - "AE_ALIGNMENT", - "AE_BAD_HEX_CONSTANT", - "AE_BAD_OCTAL_CONSTANT", - "AE_BAD_DECIMAL_CONSTANT" -}; - -char const *AcpiGbl_ExceptionNames_Tbl[] = -{ - "AE_BAD_SIGNATURE", - "AE_BAD_HEADER", - "AE_BAD_CHECKSUM", - "AE_BAD_VALUE", - "AE_TABLE_NOT_SUPPORTED", - "AE_INVALID_TABLE_LENGTH" -}; - -char const *AcpiGbl_ExceptionNames_Aml[] = -{ - "AE_AML_ERROR", - "AE_AML_PARSE", - "AE_AML_BAD_OPCODE", - "AE_AML_NO_OPERAND", - "AE_AML_OPERAND_TYPE", - "AE_AML_OPERAND_VALUE", - "AE_AML_UNINITIALIZED_LOCAL", - "AE_AML_UNINITIALIZED_ARG", - "AE_AML_UNINITIALIZED_ELEMENT", - "AE_AML_NUMERIC_OVERFLOW", - "AE_AML_REGION_LIMIT", - "AE_AML_BUFFER_LIMIT", - "AE_AML_PACKAGE_LIMIT", - "AE_AML_DIVIDE_BY_ZERO", - "AE_AML_BAD_NAME", - "AE_AML_NAME_NOT_FOUND", - "AE_AML_INTERNAL", - "AE_AML_INVALID_SPACE_ID", - "AE_AML_STRING_LIMIT", - "AE_AML_NO_RETURN_VALUE", - "AE_AML_METHOD_LIMIT", - "AE_AML_NOT_OWNER", - "AE_AML_MUTEX_ORDER", - "AE_AML_MUTEX_NOT_ACQUIRED", - "AE_AML_INVALID_RESOURCE_TYPE", - "AE_AML_INVALID_INDEX", - "AE_AML_REGISTER_LIMIT", - "AE_AML_NO_WHILE", - "AE_AML_ALIGNMENT", - "AE_AML_NO_RESOURCE_END_TAG", - "AE_AML_BAD_RESOURCE_VALUE", - "AE_AML_CIRCULAR_REFERENCE", - "AE_AML_BAD_RESOURCE_LENGTH", - "AE_AML_ILLEGAL_ADDRESS" -}; - -char const *AcpiGbl_ExceptionNames_Ctrl[] = -{ - "AE_CTRL_RETURN_VALUE", - "AE_CTRL_PENDING", - "AE_CTRL_TERMINATE", - "AE_CTRL_TRUE", - "AE_CTRL_FALSE", - "AE_CTRL_DEPTH", - "AE_CTRL_END", - "AE_CTRL_TRANSFER", - "AE_CTRL_BREAK", - "AE_CTRL_CONTINUE", - "AE_CTRL_SKIP", - "AE_CTRL_PARSE_CONTINUE", - "AE_CTRL_PARSE_PENDING" -}; - -#endif /* ACPI GLOBALS */ - -#endif /* __ACEXCEP_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/acglobal.h b/sys/contrib/dev/acpica-unix-20061109/include/acglobal.h deleted file mode 100644 index caf493f624..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/acglobal.h +++ /dev/null @@ -1,460 +0,0 @@ -/****************************************************************************** - * - * Name: acglobal.h - Declarations for global variables - * $Revision: 1.190 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACGLOBAL_H__ -#define __ACGLOBAL_H__ - - -/* - * Ensure that the globals are actually defined and initialized only once. - * - * The use of these macros allows a single list of globals (here) in order - * to simplify maintenance of the code. - */ -#ifdef DEFINE_ACPI_GLOBALS -#define ACPI_EXTERN -#define ACPI_INIT_GLOBAL(a,b) a=b -#else -#define ACPI_EXTERN extern -#define ACPI_INIT_GLOBAL(a,b) a -#endif - - -/***************************************************************************** - * - * Runtime configuration (static defaults that can be overriden at runtime) - * - ****************************************************************************/ - -/* - * Enable "slack" in the AML interpreter? Default is FALSE, and the - * interpreter strictly follows the ACPI specification. Setting to TRUE - * allows the interpreter to ignore certain errors and/or bad AML constructs. - * - * Currently, these features are enabled by this flag: - * - * 1) Allow "implicit return" of last value in a control method - * 2) Allow access beyond the end of an operation region - * 3) Allow access to uninitialized locals/args (auto-init to integer 0) - * 4) Allow ANY object type to be a source operand for the Store() operator - * 5) Allow unresolved references (invalid target name) in package objects - * 6) Enable warning messages for behavior that is not ACPI spec compliant - */ -ACPI_EXTERN UINT8 ACPI_INIT_GLOBAL (AcpiGbl_EnableInterpreterSlack, FALSE); - -/* - * Automatically serialize ALL control methods? Default is FALSE, meaning - * to use the Serialized/NotSerialized method flags on a per method basis. - * Only change this if the ASL code is poorly written and cannot handle - * reentrancy even though methods are marked "NotSerialized". - */ -ACPI_EXTERN UINT8 ACPI_INIT_GLOBAL (AcpiGbl_AllMethodsSerialized, FALSE); - -/* - * Create the predefined _OSI method in the namespace? Default is TRUE - * because ACPI CA is fully compatible with other ACPI implementations. - * Changing this will revert ACPI CA (and machine ASL) to pre-OSI behavior. - */ -ACPI_EXTERN UINT8 ACPI_INIT_GLOBAL (AcpiGbl_CreateOsiMethod, TRUE); - -/* - * Disable wakeup GPEs during runtime? Default is TRUE because WAKE and - * RUNTIME GPEs should never be shared, and WAKE GPEs should typically only - * be enabled just before going to sleep. - */ -ACPI_EXTERN UINT8 ACPI_INIT_GLOBAL (AcpiGbl_LeaveWakeGpesDisabled, TRUE); - - -/***************************************************************************** - * - * Debug support - * - ****************************************************************************/ - -/* Runtime configuration of debug print levels */ - -extern UINT32 AcpiDbgLevel; -extern UINT32 AcpiDbgLayer; - -/* Procedure nesting level for debug output */ - -extern UINT32 AcpiGbl_NestingLevel; - -/* Event counters */ - -ACPI_EXTERN UINT32 AcpiGpeCount; - -/* Support for dynamic control method tracing mechanism */ - -ACPI_EXTERN UINT32 AcpiGbl_OriginalDbgLevel; -ACPI_EXTERN UINT32 AcpiGbl_OriginalDbgLayer; -ACPI_EXTERN ACPI_NAME AcpiGbl_TraceMethodName; -ACPI_EXTERN UINT32 AcpiGbl_TraceDbgLevel; -ACPI_EXTERN UINT32 AcpiGbl_TraceDbgLayer; -ACPI_EXTERN UINT32 AcpiGbl_TraceFlags; - - -/***************************************************************************** - * - * ACPI Table globals - * - ****************************************************************************/ - -/* - * AcpiGbl_RootTableList is the master list of ACPI tables found in the - * RSDT/XSDT. - * - * AcpiGbl_FADT is a local copy of the FADT, converted to a common format. - */ -ACPI_EXTERN ACPI_INTERNAL_RSDT AcpiGbl_RootTableList; -ACPI_EXTERN ACPI_TABLE_FADT AcpiGbl_FADT; - -/* These addresses are calculated from FADT address values */ - -ACPI_EXTERN ACPI_GENERIC_ADDRESS AcpiGbl_XPm1aEnable; -ACPI_EXTERN ACPI_GENERIC_ADDRESS AcpiGbl_XPm1bEnable; - -/* - * Handle both ACPI 1.0 and ACPI 2.0 Integer widths. The integer width is - * determined by the revision of the DSDT: If the DSDT revision is less than - * 2, use only the lower 32 bits of the internal 64-bit Integer. - */ -ACPI_EXTERN UINT8 AcpiGbl_IntegerBitWidth; -ACPI_EXTERN UINT8 AcpiGbl_IntegerByteWidth; -ACPI_EXTERN UINT8 AcpiGbl_IntegerNybbleWidth; - - -/***************************************************************************** - * - * Mutual exlusion within ACPICA subsystem - * - ****************************************************************************/ - -/* - * Predefined mutex objects. This array contains the - * actual OS mutex handles, indexed by the local ACPI_MUTEX_HANDLEs. - * (The table maps local handles to the real OS handles) - */ -ACPI_EXTERN ACPI_MUTEX_INFO AcpiGbl_MutexInfo[ACPI_NUM_MUTEX]; - -/* - * Global lock semaphore works in conjunction with the actual HW global lock - */ -ACPI_EXTERN ACPI_MUTEX AcpiGbl_GlobalLockMutex; -ACPI_EXTERN ACPI_SEMAPHORE AcpiGbl_GlobalLockSemaphore; - -/* - * Spinlocks are used for interfaces that can be possibly called at - * interrupt level - */ -ACPI_EXTERN ACPI_SPINLOCK AcpiGbl_GpeLock; /* For GPE data structs and registers */ -ACPI_EXTERN ACPI_SPINLOCK AcpiGbl_HardwareLock; /* For ACPI H/W except GPE registers */ - - -/***************************************************************************** - * - * Miscellaneous globals - * - ****************************************************************************/ - -#ifdef ACPI_DBG_TRACK_ALLOCATIONS - -/* Lists for tracking memory allocations */ - -ACPI_EXTERN ACPI_MEMORY_LIST *AcpiGbl_GlobalList; -ACPI_EXTERN ACPI_MEMORY_LIST *AcpiGbl_NsNodeList; -#endif - -/* Object caches */ - -ACPI_EXTERN ACPI_CACHE_T *AcpiGbl_NamespaceCache; -ACPI_EXTERN ACPI_CACHE_T *AcpiGbl_StateCache; -ACPI_EXTERN ACPI_CACHE_T *AcpiGbl_PsNodeCache; -ACPI_EXTERN ACPI_CACHE_T *AcpiGbl_PsNodeExtCache; -ACPI_EXTERN ACPI_CACHE_T *AcpiGbl_OperandCache; - -/* Global handlers */ - -ACPI_EXTERN ACPI_OBJECT_NOTIFY_HANDLER AcpiGbl_DeviceNotify; -ACPI_EXTERN ACPI_OBJECT_NOTIFY_HANDLER AcpiGbl_SystemNotify; -ACPI_EXTERN ACPI_EXCEPTION_HANDLER AcpiGbl_ExceptionHandler; -ACPI_EXTERN ACPI_INIT_HANDLER AcpiGbl_InitHandler; -ACPI_EXTERN ACPI_WALK_STATE *AcpiGbl_BreakpointWalk; - -/* Misc */ - -ACPI_EXTERN UINT32 AcpiGbl_OriginalMode; -ACPI_EXTERN UINT32 AcpiGbl_RsdpOriginalLocation; -ACPI_EXTERN UINT32 AcpiGbl_NsLookupCount; -ACPI_EXTERN UINT32 AcpiGbl_PsFindCount; -ACPI_EXTERN UINT32 AcpiGbl_OwnerIdMask[ACPI_NUM_OWNERID_MASKS]; -ACPI_EXTERN UINT16 AcpiGbl_Pm1EnableRegisterSave; -ACPI_EXTERN UINT16 AcpiGbl_GlobalLockHandle; -ACPI_EXTERN UINT8 AcpiGbl_LastOwnerIdIndex; -ACPI_EXTERN UINT8 AcpiGbl_NextOwnerIdOffset; -ACPI_EXTERN UINT8 AcpiGbl_DebuggerConfiguration; -ACPI_EXTERN BOOLEAN AcpiGbl_GlobalLockAcquired; -ACPI_EXTERN BOOLEAN AcpiGbl_StepToNextCall; -ACPI_EXTERN BOOLEAN AcpiGbl_AcpiHardwarePresent; -ACPI_EXTERN BOOLEAN AcpiGbl_GlobalLockPresent; -ACPI_EXTERN BOOLEAN AcpiGbl_EventsInitialized; -ACPI_EXTERN BOOLEAN AcpiGbl_SystemAwakeAndRunning; - -extern BOOLEAN AcpiGbl_Shutdown; -extern UINT32 AcpiGbl_StartupFlags; -extern const char *AcpiGbl_SleepStateNames[ACPI_S_STATE_COUNT]; -extern const char *AcpiGbl_HighestDstateNames[4]; -extern const ACPI_OPCODE_INFO AcpiGbl_AmlOpInfo[AML_NUM_OPCODES]; -extern const char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS]; - -/* Exception codes */ - -extern char const *AcpiGbl_ExceptionNames_Env[]; -extern char const *AcpiGbl_ExceptionNames_Pgm[]; -extern char const *AcpiGbl_ExceptionNames_Tbl[]; -extern char const *AcpiGbl_ExceptionNames_Aml[]; -extern char const *AcpiGbl_ExceptionNames_Ctrl[]; - - -/***************************************************************************** - * - * Namespace globals - * - ****************************************************************************/ - -#define NUM_NS_TYPES ACPI_TYPE_INVALID+1 - -#if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY) -#define NUM_PREDEFINED_NAMES 10 -#else -#define NUM_PREDEFINED_NAMES 9 -#endif - -ACPI_EXTERN ACPI_NAMESPACE_NODE AcpiGbl_RootNodeStruct; -ACPI_EXTERN ACPI_NAMESPACE_NODE *AcpiGbl_RootNode; -ACPI_EXTERN ACPI_NAMESPACE_NODE *AcpiGbl_FadtGpeDevice; - -extern const UINT8 AcpiGbl_NsProperties[NUM_NS_TYPES]; -extern const ACPI_PREDEFINED_NAMES AcpiGbl_PreDefinedNames [NUM_PREDEFINED_NAMES]; - -#ifdef ACPI_DEBUG_OUTPUT -ACPI_EXTERN UINT32 AcpiGbl_CurrentNodeCount; -ACPI_EXTERN UINT32 AcpiGbl_CurrentNodeSize; -ACPI_EXTERN UINT32 AcpiGbl_MaxConcurrentNodeCount; -ACPI_EXTERN ACPI_SIZE AcpiGbl_EntryStackPointer; -ACPI_EXTERN ACPI_SIZE AcpiGbl_LowestStackPointer; -ACPI_EXTERN UINT32 AcpiGbl_DeepestNesting; -#endif - - -/***************************************************************************** - * - * Interpreter globals - * - ****************************************************************************/ - - -ACPI_EXTERN ACPI_THREAD_STATE *AcpiGbl_CurrentWalkList; - -/* Control method single step flag */ - -ACPI_EXTERN UINT8 AcpiGbl_CmSingleStep; - - -/***************************************************************************** - * - * Hardware globals - * - ****************************************************************************/ - -extern ACPI_BIT_REGISTER_INFO AcpiGbl_BitRegisterInfo[ACPI_NUM_BITREG]; -ACPI_EXTERN UINT8 AcpiGbl_SleepTypeA; -ACPI_EXTERN UINT8 AcpiGbl_SleepTypeB; - - -/***************************************************************************** - * - * Event and GPE globals - * - ****************************************************************************/ - -extern ACPI_FIXED_EVENT_INFO AcpiGbl_FixedEventInfo[ACPI_NUM_FIXED_EVENTS]; -ACPI_EXTERN ACPI_FIXED_EVENT_HANDLER AcpiGbl_FixedEventHandlers[ACPI_NUM_FIXED_EVENTS]; -ACPI_EXTERN ACPI_GPE_XRUPT_INFO *AcpiGbl_GpeXruptListHead; -ACPI_EXTERN ACPI_GPE_BLOCK_INFO *AcpiGbl_GpeFadtBlocks[ACPI_MAX_GPE_BLOCKS]; - - -/***************************************************************************** - * - * Debugger globals - * - ****************************************************************************/ - -ACPI_EXTERN UINT8 AcpiGbl_DbOutputFlags; - -#ifdef ACPI_DISASSEMBLER - -ACPI_EXTERN BOOLEAN AcpiGbl_DbOpt_disasm; -ACPI_EXTERN BOOLEAN AcpiGbl_DbOpt_verbose; -#endif - - -#ifdef ACPI_DEBUGGER - -extern BOOLEAN AcpiGbl_MethodExecuting; -extern BOOLEAN AcpiGbl_AbortMethod; -extern BOOLEAN AcpiGbl_DbTerminateThreads; - -ACPI_EXTERN int optind; -ACPI_EXTERN char *optarg; - -ACPI_EXTERN BOOLEAN AcpiGbl_DbOpt_tables; -ACPI_EXTERN BOOLEAN AcpiGbl_DbOpt_stats; -ACPI_EXTERN BOOLEAN AcpiGbl_DbOpt_ini_methods; - - -ACPI_EXTERN char *AcpiGbl_DbArgs[ACPI_DEBUGGER_MAX_ARGS]; -ACPI_EXTERN char AcpiGbl_DbLineBuf[80]; -ACPI_EXTERN char AcpiGbl_DbParsedBuf[80]; -ACPI_EXTERN char AcpiGbl_DbScopeBuf[40]; -ACPI_EXTERN char AcpiGbl_DbDebugFilename[40]; -ACPI_EXTERN BOOLEAN AcpiGbl_DbOutputToFile; -ACPI_EXTERN char *AcpiGbl_DbBuffer; -ACPI_EXTERN char *AcpiGbl_DbFilename; -ACPI_EXTERN UINT32 AcpiGbl_DbDebugLevel; -ACPI_EXTERN UINT32 AcpiGbl_DbConsoleDebugLevel; -ACPI_EXTERN ACPI_TABLE_HEADER *AcpiGbl_DbTablePtr; -ACPI_EXTERN ACPI_NAMESPACE_NODE *AcpiGbl_DbScopeNode; - -/* - * Statistic globals - */ -ACPI_EXTERN UINT16 AcpiGbl_ObjTypeCount[ACPI_TYPE_NS_NODE_MAX+1]; -ACPI_EXTERN UINT16 AcpiGbl_NodeTypeCount[ACPI_TYPE_NS_NODE_MAX+1]; -ACPI_EXTERN UINT16 AcpiGbl_ObjTypeCountMisc; -ACPI_EXTERN UINT16 AcpiGbl_NodeTypeCountMisc; -ACPI_EXTERN UINT32 AcpiGbl_NumNodes; -ACPI_EXTERN UINT32 AcpiGbl_NumObjects; - - -ACPI_EXTERN UINT32 AcpiGbl_SizeOfParseTree; -ACPI_EXTERN UINT32 AcpiGbl_SizeOfMethodTrees; -ACPI_EXTERN UINT32 AcpiGbl_SizeOfNodeEntries; -ACPI_EXTERN UINT32 AcpiGbl_SizeOfAcpiObjects; - -#endif /* ACPI_DEBUGGER */ - -#endif /* __ACGLOBAL_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/achware.h b/sys/contrib/dev/acpica-unix-20061109/include/achware.h deleted file mode 100644 index 9c0f58e4de..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/achware.h +++ /dev/null @@ -1,247 +0,0 @@ -/****************************************************************************** - * - * Name: achware.h -- hardware specific interfaces - * $Revision: 1.82 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACHWARE_H__ -#define __ACHWARE_H__ - - -/* PM Timer ticks per second (HZ) */ - -#define PM_TIMER_FREQUENCY 3579545 - -/* Values for the _SST reserved method */ - -#define ACPI_SST_INDICATOR_OFF 0 -#define ACPI_SST_WORKING 1 -#define ACPI_SST_WAKING 2 -#define ACPI_SST_SLEEPING 3 -#define ACPI_SST_SLEEP_CONTEXT 4 - - -/* Prototypes */ - - -/* - * hwacpi - high level functions - */ -ACPI_STATUS -AcpiHwSetMode ( - UINT32 Mode); - -UINT32 -AcpiHwGetMode ( - void); - - -/* - * hwregs - ACPI Register I/O - */ -ACPI_BIT_REGISTER_INFO * -AcpiHwGetBitRegisterInfo ( - UINT32 RegisterId); - -ACPI_STATUS -AcpiHwRegisterRead ( - BOOLEAN UseLock, - UINT32 RegisterId, - UINT32 *ReturnValue); - -ACPI_STATUS -AcpiHwRegisterWrite ( - BOOLEAN UseLock, - UINT32 RegisterId, - UINT32 Value); - -ACPI_STATUS -AcpiHwLowLevelRead ( - UINT32 Width, - UINT32 *Value, - ACPI_GENERIC_ADDRESS *Reg); - -ACPI_STATUS -AcpiHwLowLevelWrite ( - UINT32 Width, - UINT32 Value, - ACPI_GENERIC_ADDRESS *Reg); - -ACPI_STATUS -AcpiHwClearAcpiStatus ( - void); - - -/* - * hwgpe - GPE support - */ -ACPI_STATUS -AcpiHwWriteGpeEnableReg ( - ACPI_GPE_EVENT_INFO *GpeEventInfo); - -ACPI_STATUS -AcpiHwDisableGpeBlock ( - ACPI_GPE_XRUPT_INFO *GpeXruptInfo, - ACPI_GPE_BLOCK_INFO *GpeBlock); - -ACPI_STATUS -AcpiHwClearGpe ( - ACPI_GPE_EVENT_INFO *GpeEventInfo); - -ACPI_STATUS -AcpiHwClearGpeBlock ( - ACPI_GPE_XRUPT_INFO *GpeXruptInfo, - ACPI_GPE_BLOCK_INFO *GpeBlock); - -ACPI_STATUS -AcpiHwGetGpeStatus ( - ACPI_GPE_EVENT_INFO *GpeEventInfo, - ACPI_EVENT_STATUS *EventStatus); - -ACPI_STATUS -AcpiHwDisableAllGpes ( - void); - -ACPI_STATUS -AcpiHwEnableAllRuntimeGpes ( - void); - -ACPI_STATUS -AcpiHwEnableAllWakeupGpes ( - void); - -ACPI_STATUS -AcpiHwEnableRuntimeGpeBlock ( - ACPI_GPE_XRUPT_INFO *GpeXruptInfo, - ACPI_GPE_BLOCK_INFO *GpeBlock); - - -/* - * hwtimer - ACPI Timer prototypes - */ -ACPI_STATUS -AcpiGetTimerResolution ( - UINT32 *Resolution); - -ACPI_STATUS -AcpiGetTimer ( - UINT32 *Ticks); - -ACPI_STATUS -AcpiGetTimerDuration ( - UINT32 StartTicks, - UINT32 EndTicks, - UINT32 *TimeElapsed); - - -#endif /* __ACHWARE_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/acinterp.h b/sys/contrib/dev/acpica-unix-20061109/include/acinterp.h deleted file mode 100644 index 72dabc774b..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/acinterp.h +++ /dev/null @@ -1,783 +0,0 @@ -/****************************************************************************** - * - * Name: acinterp.h - Interpreter subcomponent prototypes and defines - * $Revision: 1.168 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACINTERP_H__ -#define __ACINTERP_H__ - - -#define ACPI_WALK_OPERANDS (&(WalkState->Operands [WalkState->NumOperands -1])) - -/* Macros for tables used for debug output */ - -#define ACPI_EXD_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_OPERAND_OBJECT,f) -#define ACPI_EXD_NSOFFSET(f) (UINT8) ACPI_OFFSET (ACPI_NAMESPACE_NODE,f) -#define ACPI_EXD_TABLE_SIZE(name) (sizeof(name) / sizeof (ACPI_EXDUMP_INFO)) - -/* - * If possible, pack the following structures to byte alignment, since we - * don't care about performance for debug output. Two cases where we cannot - * pack the structures: - * - * 1) Hardware does not support misaligned memory transfers - * 2) Compiler does not support pointers within packed structures - */ -#if (!defined(ACPI_MISALIGNMENT_NOT_SUPPORTED) && !defined(ACPI_PACKED_POINTERS_NOT_SUPPORTED)) -#pragma pack(1) -#endif - -typedef const struct acpi_exdump_info -{ - UINT8 Opcode; - UINT8 Offset; - char *Name; - -} ACPI_EXDUMP_INFO; - -/* Values for the Opcode field above */ - -#define ACPI_EXD_INIT 0 -#define ACPI_EXD_TYPE 1 -#define ACPI_EXD_UINT8 2 -#define ACPI_EXD_UINT16 3 -#define ACPI_EXD_UINT32 4 -#define ACPI_EXD_UINT64 5 -#define ACPI_EXD_LITERAL 6 -#define ACPI_EXD_POINTER 7 -#define ACPI_EXD_ADDRESS 8 -#define ACPI_EXD_STRING 9 -#define ACPI_EXD_BUFFER 10 -#define ACPI_EXD_PACKAGE 11 -#define ACPI_EXD_FIELD 12 -#define ACPI_EXD_REFERENCE 13 - -/* restore default alignment */ - -#pragma pack() - - -/* - * exconvrt - object conversion - */ -ACPI_STATUS -AcpiExConvertToInteger ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT **ResultDesc, - UINT32 Flags); - -ACPI_STATUS -AcpiExConvertToBuffer ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT **ResultDesc); - -ACPI_STATUS -AcpiExConvertToString ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT **ResultDesc, - UINT32 Type); - -/* Types for ->String conversion */ - -#define ACPI_EXPLICIT_BYTE_COPY 0x00000000 -#define ACPI_EXPLICIT_CONVERT_HEX 0x00000001 -#define ACPI_IMPLICIT_CONVERT_HEX 0x00000002 -#define ACPI_EXPLICIT_CONVERT_DECIMAL 0x00000003 - -ACPI_STATUS -AcpiExConvertToTargetType ( - ACPI_OBJECT_TYPE DestinationType, - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT **ResultDesc, - ACPI_WALK_STATE *WalkState); - - -/* - * exfield - ACPI AML (p-code) execution - field manipulation - */ -ACPI_STATUS -AcpiExCommonBufferSetup ( - ACPI_OPERAND_OBJECT *ObjDesc, - UINT32 BufferLength, - UINT32 *DatumCount); - -ACPI_STATUS -AcpiExWriteWithUpdateRule ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_INTEGER Mask, - ACPI_INTEGER FieldValue, - UINT32 FieldDatumByteOffset); - -void -AcpiExGetBufferDatum( - ACPI_INTEGER *Datum, - void *Buffer, - UINT32 BufferLength, - UINT32 ByteGranularity, - UINT32 BufferOffset); - -void -AcpiExSetBufferDatum ( - ACPI_INTEGER MergedDatum, - void *Buffer, - UINT32 BufferLength, - UINT32 ByteGranularity, - UINT32 BufferOffset); - -ACPI_STATUS -AcpiExReadDataFromField ( - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT **RetBufferDesc); - -ACPI_STATUS -AcpiExWriteDataToField ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT **ResultDesc); - - -/* - * exfldio - low level field I/O - */ -ACPI_STATUS -AcpiExExtractFromField ( - ACPI_OPERAND_OBJECT *ObjDesc, - void *Buffer, - UINT32 BufferLength); - -ACPI_STATUS -AcpiExInsertIntoField ( - ACPI_OPERAND_OBJECT *ObjDesc, - void *Buffer, - UINT32 BufferLength); - -ACPI_STATUS -AcpiExAccessRegion ( - ACPI_OPERAND_OBJECT *ObjDesc, - UINT32 FieldDatumByteOffset, - ACPI_INTEGER *Value, - UINT32 ReadWrite); - - -/* - * exmisc - misc support routines - */ -ACPI_STATUS -AcpiExGetObjectReference ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT **ReturnDesc, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiExConcatTemplate ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT *ObjDesc2, - ACPI_OPERAND_OBJECT **ActualReturnDesc, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiExDoConcatenate ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT *ObjDesc2, - ACPI_OPERAND_OBJECT **ActualReturnDesc, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiExDoLogicalNumericOp ( - UINT16 Opcode, - ACPI_INTEGER Integer0, - ACPI_INTEGER Integer1, - BOOLEAN *LogicalResult); - -ACPI_STATUS -AcpiExDoLogicalOp ( - UINT16 Opcode, - ACPI_OPERAND_OBJECT *Operand0, - ACPI_OPERAND_OBJECT *Operand1, - BOOLEAN *LogicalResult); - -ACPI_INTEGER -AcpiExDoMathOp ( - UINT16 Opcode, - ACPI_INTEGER Operand0, - ACPI_INTEGER Operand1); - -ACPI_STATUS -AcpiExCreateMutex ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiExCreateProcessor ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiExCreatePowerResource ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiExCreateRegion ( - UINT8 *AmlStart, - UINT32 AmlLength, - UINT8 RegionSpace, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiExCreateTableRegion ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiExCreateEvent ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiExCreateAlias ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiExCreateMethod ( - UINT8 *AmlStart, - UINT32 AmlLength, - ACPI_WALK_STATE *WalkState); - - -/* - * exconfig - dynamic table load/unload - */ -ACPI_STATUS -AcpiExLoadOp ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT *Target, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiExLoadTableOp ( - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT **ReturnDesc); - -ACPI_STATUS -AcpiExUnloadTable ( - ACPI_OPERAND_OBJECT *DdbHandle); - - -/* - * exmutex - mutex support - */ -ACPI_STATUS -AcpiExAcquireMutex ( - ACPI_OPERAND_OBJECT *TimeDesc, - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiExReleaseMutex ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState); - -void -AcpiExReleaseAllMutexes ( - ACPI_THREAD_STATE *Thread); - -void -AcpiExUnlinkMutex ( - ACPI_OPERAND_OBJECT *ObjDesc); - - -/* - * exprep - ACPI AML execution - prep utilities - */ -ACPI_STATUS -AcpiExPrepCommonFieldObject ( - ACPI_OPERAND_OBJECT *ObjDesc, - UINT8 FieldFlags, - UINT8 FieldAttribute, - UINT32 FieldBitPosition, - UINT32 FieldBitLength); - -ACPI_STATUS -AcpiExPrepFieldValue ( - ACPI_CREATE_FIELD_INFO *Info); - - -/* - * exsystem - Interface to OS services - */ -ACPI_STATUS -AcpiExSystemDoNotifyOp ( - ACPI_OPERAND_OBJECT *Value, - ACPI_OPERAND_OBJECT *ObjDesc); - -ACPI_STATUS -AcpiExSystemDoSuspend( - ACPI_INTEGER Time); - -ACPI_STATUS -AcpiExSystemDoStall ( - UINT32 Time); - -ACPI_STATUS -AcpiExSystemSignalEvent( - ACPI_OPERAND_OBJECT *ObjDesc); - -ACPI_STATUS -AcpiExSystemWaitEvent( - ACPI_OPERAND_OBJECT *Time, - ACPI_OPERAND_OBJECT *ObjDesc); - -ACPI_STATUS -AcpiExSystemResetEvent( - ACPI_OPERAND_OBJECT *ObjDesc); - -ACPI_STATUS -AcpiExSystemWaitSemaphore ( - ACPI_SEMAPHORE Semaphore, - UINT16 Timeout); - -ACPI_STATUS -AcpiExSystemWaitMutex ( - ACPI_MUTEX Mutex, - UINT16 Timeout); - -/* - * exoparg1 - ACPI AML execution, 1 operand - */ -ACPI_STATUS -AcpiExOpcode_0A_0T_1R ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiExOpcode_1A_0T_0R ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiExOpcode_1A_0T_1R ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiExOpcode_1A_1T_1R ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiExOpcode_1A_1T_0R ( - ACPI_WALK_STATE *WalkState); - -/* - * exoparg2 - ACPI AML execution, 2 operands - */ -ACPI_STATUS -AcpiExOpcode_2A_0T_0R ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiExOpcode_2A_0T_1R ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiExOpcode_2A_1T_1R ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiExOpcode_2A_2T_1R ( - ACPI_WALK_STATE *WalkState); - - -/* - * exoparg3 - ACPI AML execution, 3 operands - */ -ACPI_STATUS -AcpiExOpcode_3A_0T_0R ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiExOpcode_3A_1T_1R ( - ACPI_WALK_STATE *WalkState); - - -/* - * exoparg6 - ACPI AML execution, 6 operands - */ -ACPI_STATUS -AcpiExOpcode_6A_0T_1R ( - ACPI_WALK_STATE *WalkState); - - -/* - * exresolv - Object resolution and get value functions - */ -ACPI_STATUS -AcpiExResolveToValue ( - ACPI_OPERAND_OBJECT **StackPtr, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiExResolveMultiple ( - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT *Operand, - ACPI_OBJECT_TYPE *ReturnType, - ACPI_OPERAND_OBJECT **ReturnDesc); - - -/* - * exresnte - resolve namespace node - */ -ACPI_STATUS -AcpiExResolveNodeToValue ( - ACPI_NAMESPACE_NODE **StackPtr, - ACPI_WALK_STATE *WalkState); - - -/* - * exresop - resolve operand to value - */ -ACPI_STATUS -AcpiExResolveOperands ( - UINT16 Opcode, - ACPI_OPERAND_OBJECT **StackPtr, - ACPI_WALK_STATE *WalkState); - - -/* - * exdump - Interpreter debug output routines - */ -void -AcpiExDumpOperand ( - ACPI_OPERAND_OBJECT *ObjDesc, - UINT32 Depth); - -void -AcpiExDumpOperands ( - ACPI_OPERAND_OBJECT **Operands, - ACPI_INTERPRETER_MODE InterpreterMode, - char *Ident, - UINT32 NumLevels, - char *Note, - char *ModuleName, - UINT32 LineNumber); - -void -AcpiExDumpObjectDescriptor ( - ACPI_OPERAND_OBJECT *Object, - UINT32 Flags); - -void -AcpiExDumpNamespaceNode ( - ACPI_NAMESPACE_NODE *Node, - UINT32 Flags); - - -/* - * exnames - AML namestring support - */ -ACPI_STATUS -AcpiExGetNameString ( - ACPI_OBJECT_TYPE DataType, - UINT8 *InAmlAddress, - char **OutNameString, - UINT32 *OutNameLength); - - -/* - * exstore - Object store support - */ -ACPI_STATUS -AcpiExStore ( - ACPI_OPERAND_OBJECT *ValDesc, - ACPI_OPERAND_OBJECT *DestDesc, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiExStoreObjectToNode ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_NAMESPACE_NODE *Node, - ACPI_WALK_STATE *WalkState, - UINT8 ImplicitConversion); - -#define ACPI_IMPLICIT_CONVERSION TRUE -#define ACPI_NO_IMPLICIT_CONVERSION FALSE - - -/* - * exstoren - resolve/store object - */ -ACPI_STATUS -AcpiExResolveObject ( - ACPI_OPERAND_OBJECT **SourceDescPtr, - ACPI_OBJECT_TYPE TargetType, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiExStoreObjectToObject ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *DestDesc, - ACPI_OPERAND_OBJECT **NewDesc, - ACPI_WALK_STATE *WalkState); - - -/* - * exstorob - store object - buffer/string - */ -ACPI_STATUS -AcpiExStoreBufferToBuffer ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *TargetDesc); - -ACPI_STATUS -AcpiExStoreStringToString ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *TargetDesc); - - -/* - * excopy - object copy - */ -ACPI_STATUS -AcpiExCopyIntegerToIndexField ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *TargetDesc); - -ACPI_STATUS -AcpiExCopyIntegerToBankField ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *TargetDesc); - -ACPI_STATUS -AcpiExCopyDataToNamedField ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_NAMESPACE_NODE *Node); - -ACPI_STATUS -AcpiExCopyIntegerToBufferField ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *TargetDesc); - - -/* - * exutils - interpreter/scanner utilities - */ -void -AcpiExEnterInterpreter ( - void); - -void -AcpiExExitInterpreter ( - void); - -void -AcpiExReacquireInterpreter ( - void); - -void -AcpiExRelinquishInterpreter ( - void); - -void -AcpiExTruncateFor32bitTable ( - ACPI_OPERAND_OBJECT *ObjDesc); - -BOOLEAN -AcpiExAcquireGlobalLock ( - UINT32 Rule); - -void -AcpiExReleaseGlobalLock ( - BOOLEAN Locked); - -void -AcpiExEisaIdToString ( - UINT32 NumericId, - char *OutString); - -void -AcpiExUnsignedIntegerToString ( - ACPI_INTEGER Value, - char *OutString); - - -/* - * exregion - default OpRegion handlers - */ -ACPI_STATUS -AcpiExSystemMemorySpaceHandler ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - ACPI_INTEGER *Value, - void *HandlerContext, - void *RegionContext); - -ACPI_STATUS -AcpiExSystemIoSpaceHandler ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - ACPI_INTEGER *Value, - void *HandlerContext, - void *RegionContext); - -ACPI_STATUS -AcpiExPciConfigSpaceHandler ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - ACPI_INTEGER *Value, - void *HandlerContext, - void *RegionContext); - -ACPI_STATUS -AcpiExCmosSpaceHandler ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - ACPI_INTEGER *Value, - void *HandlerContext, - void *RegionContext); - -ACPI_STATUS -AcpiExPciBarSpaceHandler ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - ACPI_INTEGER *Value, - void *HandlerContext, - void *RegionContext); - -ACPI_STATUS -AcpiExEmbeddedControllerSpaceHandler ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - ACPI_INTEGER *Value, - void *HandlerContext, - void *RegionContext); - -ACPI_STATUS -AcpiExSmBusSpaceHandler ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - ACPI_INTEGER *Value, - void *HandlerContext, - void *RegionContext); - - -ACPI_STATUS -AcpiExDataTableSpaceHandler ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - ACPI_INTEGER *Value, - void *HandlerContext, - void *RegionContext); - -#endif /* __INTERP_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/aclocal.h b/sys/contrib/dev/acpica-unix-20061109/include/aclocal.h deleted file mode 100644 index 454fa0971a..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/aclocal.h +++ /dev/null @@ -1,1181 +0,0 @@ -/****************************************************************************** - * - * Name: aclocal.h - Internal data types used across the ACPI subsystem - * $Revision: 1.242 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACLOCAL_H__ -#define __ACLOCAL_H__ - -/* acpisrc:StructDefs -- for acpisrc conversion */ - -#define ACPI_WAIT_FOREVER 0xFFFF /* UINT16, as per ACPI spec */ -#define ACPI_DO_NOT_WAIT 0 -#define ACPI_SERIALIZED 0xFF - -typedef UINT32 ACPI_MUTEX_HANDLE; -#define ACPI_GLOBAL_LOCK (ACPI_SEMAPHORE) (-1) - -/* Total number of aml opcodes defined */ - -#define AML_NUM_OPCODES 0x7F - - -/* Forward declarations */ - -struct acpi_walk_state; -struct acpi_obj_mutex; -union acpi_parse_object; - - -/***************************************************************************** - * - * Mutex typedefs and structs - * - ****************************************************************************/ - - -/* - * Predefined handles for the mutex objects used within the subsystem - * All mutex objects are automatically created by AcpiUtMutexInitialize. - * - * The acquire/release ordering protocol is implied via this list. Mutexes - * with a lower value must be acquired before mutexes with a higher value. - * - * NOTE: any changes here must be reflected in the AcpiGbl_MutexNames - * table below also! - */ -#define ACPI_MTX_INTERPRETER 0 /* AML Interpreter, main lock */ -#define ACPI_MTX_NAMESPACE 1 /* ACPI Namespace */ -#define ACPI_MTX_TABLES 2 /* Data for ACPI tables */ -#define ACPI_MTX_EVENTS 3 /* Data for ACPI events */ -#define ACPI_MTX_CACHES 4 /* Internal caches, general purposes */ -#define ACPI_MTX_MEMORY 5 /* Debug memory tracking lists */ -#define ACPI_MTX_DEBUG_CMD_COMPLETE 6 /* AML debugger */ -#define ACPI_MTX_DEBUG_CMD_READY 7 /* AML debugger */ - -#define ACPI_MAX_MUTEX 7 -#define ACPI_NUM_MUTEX ACPI_MAX_MUTEX+1 - -#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) -#ifdef DEFINE_ACPI_GLOBALS - -/* Debug names for the mutexes above */ - -static char *AcpiGbl_MutexNames[ACPI_NUM_MUTEX] = -{ - "ACPI_MTX_Interpreter", - "ACPI_MTX_Tables", - "ACPI_MTX_Namespace", - "ACPI_MTX_Events", - "ACPI_MTX_Caches", - "ACPI_MTX_Memory", - "ACPI_MTX_CommandComplete", - "ACPI_MTX_CommandReady" -}; - -#endif -#endif - - -/* - * Predefined handles for spinlocks used within the subsystem. - * These spinlocks are created by AcpiUtMutexInitialize - */ -#define ACPI_LOCK_GPES 0 -#define ACPI_LOCK_HARDWARE 1 - -#define ACPI_MAX_LOCK 1 -#define ACPI_NUM_LOCK ACPI_MAX_LOCK+1 - - -/* Owner IDs are used to track namespace nodes for selective deletion */ - -typedef UINT8 ACPI_OWNER_ID; -#define ACPI_OWNER_ID_MAX 0xFF - -/* This Thread ID means that the mutex is not in use (unlocked) */ - -#define ACPI_MUTEX_NOT_ACQUIRED (UINT32) -1 - -/* Table for the global mutexes */ - -typedef struct acpi_mutex_info -{ - ACPI_MUTEX Mutex; - UINT32 UseCount; - ACPI_THREAD_ID ThreadId; - -} ACPI_MUTEX_INFO; - - -/* Lock flag parameter for various interfaces */ - -#define ACPI_MTX_DO_NOT_LOCK 0 -#define ACPI_MTX_LOCK 1 - - -/* Field access granularities */ - -#define ACPI_FIELD_BYTE_GRANULARITY 1 -#define ACPI_FIELD_WORD_GRANULARITY 2 -#define ACPI_FIELD_DWORD_GRANULARITY 4 -#define ACPI_FIELD_QWORD_GRANULARITY 8 - - -#define ACPI_ENTRY_NOT_FOUND NULL - - -/***************************************************************************** - * - * Namespace typedefs and structs - * - ****************************************************************************/ - -/* Operational modes of the AML interpreter/scanner */ - -typedef enum -{ - ACPI_IMODE_LOAD_PASS1 = 0x01, - ACPI_IMODE_LOAD_PASS2 = 0x02, - ACPI_IMODE_EXECUTE = 0x03 - -} ACPI_INTERPRETER_MODE; - -typedef union acpi_name_union -{ - UINT32 Integer; - char Ascii[4]; - -} ACPI_NAME_UNION; - - -/* - * The Namespace Node describes a named object that appears in the AML. - * DescriptorType is used to differentiate between internal descriptors. - * - * The node is optimized for both 32-bit and 64-bit platforms: - * 20 bytes for the 32-bit case, 32 bytes for the 64-bit case. - * - * Note: The DescriptorType and Type fields must appear in the identical - * position in both the ACPI_NAMESPACE_NODE and ACPI_OPERAND_OBJECT - * structures. - */ -typedef struct acpi_namespace_node -{ - union acpi_operand_object *Object; /* Interpreter object */ - UINT8 DescriptorType; /* Differentiate object descriptor types */ - UINT8 Type; /* ACPI Type associated with this name */ - UINT8 Flags; /* Miscellaneous flags */ - ACPI_OWNER_ID OwnerId; /* Node creator */ - ACPI_NAME_UNION Name; /* ACPI Name, always 4 chars per ACPI spec */ - struct acpi_namespace_node *Child; /* First child */ - struct acpi_namespace_node *Peer; /* Peer. Parent if ANOBJ_END_OF_PEER_LIST set */ - - /* - * The following fields are used by the ASL compiler and disassembler only - */ -#ifdef ACPI_LARGE_NAMESPACE_NODE - union acpi_parse_object *Op; - UINT32 Value; - UINT32 Length; -#endif - -} ACPI_NAMESPACE_NODE; - - -/* Namespace Node flags */ - -#define ANOBJ_END_OF_PEER_LIST 0x01 /* End-of-list, Peer field points to parent */ -#define ANOBJ_TEMPORARY 0x02 /* Node is create by a method and is temporary */ -#define ANOBJ_METHOD_ARG 0x04 /* Node is a method argument */ -#define ANOBJ_METHOD_LOCAL 0x08 /* Node is a method local */ -#define ANOBJ_SUBTREE_HAS_INI 0x10 /* Used to optimize device initialization */ - -#define ANOBJ_IS_EXTERNAL 0x08 /* iASL only: This object created via External() */ -#define ANOBJ_METHOD_NO_RETVAL 0x10 /* iASL only: Method has no return value */ -#define ANOBJ_METHOD_SOME_NO_RETVAL 0x20 /* iASL only: Method has at least one return value */ -#define ANOBJ_IS_BIT_OFFSET 0x40 /* iASL only: Reference is a bit offset */ -#define ANOBJ_IS_REFERENCED 0x80 /* iASL only: Object was referenced */ - -/* - * ACPI Table Descriptor. One per ACPI table - */ -typedef struct acpi_table_desc -{ - ACPI_PHYSICAL_ADDRESS Address; - ACPI_TABLE_HEADER *Pointer; - UINT32 Length; /* Length fixed at 32 bits */ - ACPI_NAME_UNION Signature; - ACPI_OWNER_ID OwnerId; - UINT8 Flags; - -} ACPI_TABLE_DESC; - -/* Flags for above */ - -#define ACPI_TABLE_ORIGIN_UNKNOWN (0) -#define ACPI_TABLE_ORIGIN_MAPPED (1) -#define ACPI_TABLE_ORIGIN_ALLOCATED (2) -#define ACPI_TABLE_ORIGIN_MASK (3) -#define ACPI_TABLE_IS_LOADED (4) - -/* One internal RSDT for table management */ - -typedef struct acpi_internal_rsdt -{ - ACPI_TABLE_DESC *Tables; - UINT32 Count; - UINT32 Size; - UINT8 Flags; - -} ACPI_INTERNAL_RSDT; - -/* Flags for above */ - -#define ACPI_ROOT_ORIGIN_UNKNOWN (0) /* ~ORIGIN_ALLOCATED */ -#define ACPI_ROOT_ORIGIN_ALLOCATED (1) -#define ACPI_ROOT_ALLOW_RESIZE (2) - - -/* Predefined (fixed) table indexes */ - -#define ACPI_TABLE_INDEX_DSDT (0) -#define ACPI_TABLE_INDEX_FACS (1) - - -typedef struct acpi_find_context -{ - char *SearchFor; - ACPI_HANDLE *List; - UINT32 *Count; - -} ACPI_FIND_CONTEXT; - - -typedef struct acpi_ns_search_data -{ - ACPI_NAMESPACE_NODE *Node; - -} ACPI_NS_SEARCH_DATA; - - -/* - * Predefined Namespace items - */ -typedef struct acpi_predefined_names -{ - char *Name; - UINT8 Type; - char *Val; - -} ACPI_PREDEFINED_NAMES; - - -/* Object types used during package copies */ - -#define ACPI_COPY_TYPE_SIMPLE 0 -#define ACPI_COPY_TYPE_PACKAGE 1 - - -/* Info structure used to convert external<->internal namestrings */ - -typedef struct acpi_namestring_info -{ - char *ExternalName; - char *NextExternalChar; - char *InternalName; - UINT32 Length; - UINT32 NumSegments; - UINT32 NumCarats; - BOOLEAN FullyQualified; - -} ACPI_NAMESTRING_INFO; - - -/* Field creation info */ - -typedef struct acpi_create_field_info -{ - ACPI_NAMESPACE_NODE *RegionNode; - ACPI_NAMESPACE_NODE *FieldNode; - ACPI_NAMESPACE_NODE *RegisterNode; - ACPI_NAMESPACE_NODE *DataRegisterNode; - UINT32 BankValue; - UINT32 FieldBitPosition; - UINT32 FieldBitLength; - UINT8 FieldFlags; - UINT8 Attribute; - UINT8 FieldType; - -} ACPI_CREATE_FIELD_INFO; - - -typedef -ACPI_STATUS (*ACPI_INTERNAL_METHOD) ( - struct acpi_walk_state *WalkState); - - -/* - * Bitmapped ACPI types. Used internally only - */ -#define ACPI_BTYPE_ANY 0x00000000 -#define ACPI_BTYPE_INTEGER 0x00000001 -#define ACPI_BTYPE_STRING 0x00000002 -#define ACPI_BTYPE_BUFFER 0x00000004 -#define ACPI_BTYPE_PACKAGE 0x00000008 -#define ACPI_BTYPE_FIELD_UNIT 0x00000010 -#define ACPI_BTYPE_DEVICE 0x00000020 -#define ACPI_BTYPE_EVENT 0x00000040 -#define ACPI_BTYPE_METHOD 0x00000080 -#define ACPI_BTYPE_MUTEX 0x00000100 -#define ACPI_BTYPE_REGION 0x00000200 -#define ACPI_BTYPE_POWER 0x00000400 -#define ACPI_BTYPE_PROCESSOR 0x00000800 -#define ACPI_BTYPE_THERMAL 0x00001000 -#define ACPI_BTYPE_BUFFER_FIELD 0x00002000 -#define ACPI_BTYPE_DDB_HANDLE 0x00004000 -#define ACPI_BTYPE_DEBUG_OBJECT 0x00008000 -#define ACPI_BTYPE_REFERENCE 0x00010000 -#define ACPI_BTYPE_RESOURCE 0x00020000 - -#define ACPI_BTYPE_COMPUTE_DATA (ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER) - -#define ACPI_BTYPE_DATA (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_PACKAGE) -#define ACPI_BTYPE_DATA_REFERENCE (ACPI_BTYPE_DATA | ACPI_BTYPE_REFERENCE | ACPI_BTYPE_DDB_HANDLE) -#define ACPI_BTYPE_DEVICE_OBJECTS (ACPI_BTYPE_DEVICE | ACPI_BTYPE_THERMAL | ACPI_BTYPE_PROCESSOR) -#define ACPI_BTYPE_OBJECTS_AND_REFS 0x0001FFFF /* ARG or LOCAL */ -#define ACPI_BTYPE_ALL_OBJECTS 0x0000FFFF - - -/***************************************************************************** - * - * Event typedefs and structs - * - ****************************************************************************/ - -/* Dispatch info for each GPE -- either a method or handler, cannot be both */ - -typedef struct acpi_handler_info -{ - ACPI_EVENT_HANDLER Address; /* Address of handler, if any */ - void *Context; /* Context to be passed to handler */ - ACPI_NAMESPACE_NODE *MethodNode; /* Method node for this GPE level (saved) */ - -} ACPI_HANDLER_INFO; - -typedef union acpi_gpe_dispatch_info -{ - ACPI_NAMESPACE_NODE *MethodNode; /* Method node for this GPE level */ - struct acpi_handler_info *Handler; - -} ACPI_GPE_DISPATCH_INFO; - -/* - * Information about a GPE, one per each GPE in an array. - * NOTE: Important to keep this struct as small as possible. - */ -typedef struct acpi_gpe_event_info -{ - union acpi_gpe_dispatch_info Dispatch; /* Either Method or Handler */ - struct acpi_gpe_register_info *RegisterInfo; /* Backpointer to register info */ - UINT8 Flags; /* Misc info about this GPE */ - UINT8 GpeNumber; /* This GPE */ - -} ACPI_GPE_EVENT_INFO; - -/* Information about a GPE register pair, one per each status/enable pair in an array */ - -typedef struct acpi_gpe_register_info -{ - ACPI_GENERIC_ADDRESS StatusAddress; /* Address of status reg */ - ACPI_GENERIC_ADDRESS EnableAddress; /* Address of enable reg */ - UINT8 EnableForWake; /* GPEs to keep enabled when sleeping */ - UINT8 EnableForRun; /* GPEs to keep enabled when running */ - UINT8 BaseGpeNumber; /* Base GPE number for this register */ - -} ACPI_GPE_REGISTER_INFO; - -/* - * Information about a GPE register block, one per each installed block -- - * GPE0, GPE1, and one per each installed GPE Block Device. - */ -typedef struct acpi_gpe_block_info -{ - ACPI_NAMESPACE_NODE *Node; - struct acpi_gpe_block_info *Previous; - struct acpi_gpe_block_info *Next; - struct acpi_gpe_xrupt_info *XruptBlock; /* Backpointer to interrupt block */ - ACPI_GPE_REGISTER_INFO *RegisterInfo; /* One per GPE register pair */ - ACPI_GPE_EVENT_INFO *EventInfo; /* One for each GPE */ - ACPI_GENERIC_ADDRESS BlockAddress; /* Base address of the block */ - UINT32 RegisterCount; /* Number of register pairs in block */ - UINT8 BlockBaseNumber;/* Base GPE number for this block */ - -} ACPI_GPE_BLOCK_INFO; - -/* Information about GPE interrupt handlers, one per each interrupt level used for GPEs */ - -typedef struct acpi_gpe_xrupt_info -{ - struct acpi_gpe_xrupt_info *Previous; - struct acpi_gpe_xrupt_info *Next; - ACPI_GPE_BLOCK_INFO *GpeBlockListHead; /* List of GPE blocks for this xrupt */ - UINT32 InterruptNumber; /* System interrupt number */ - -} ACPI_GPE_XRUPT_INFO; - - -typedef struct acpi_gpe_walk_info -{ - ACPI_NAMESPACE_NODE *GpeDevice; - ACPI_GPE_BLOCK_INFO *GpeBlock; - -} ACPI_GPE_WALK_INFO; - - -typedef ACPI_STATUS (*ACPI_GPE_CALLBACK) ( - ACPI_GPE_XRUPT_INFO *GpeXruptInfo, - ACPI_GPE_BLOCK_INFO *GpeBlock); - - -/* Information about each particular fixed event */ - -typedef struct acpi_fixed_event_handler -{ - ACPI_EVENT_HANDLER Handler; /* Address of handler. */ - void *Context; /* Context to be passed to handler */ - -} ACPI_FIXED_EVENT_HANDLER; - -typedef struct acpi_fixed_event_info -{ - UINT8 StatusRegisterId; - UINT8 EnableRegisterId; - UINT16 StatusBitMask; - UINT16 EnableBitMask; - -} ACPI_FIXED_EVENT_INFO; - -/* Information used during field processing */ - -typedef struct acpi_field_info -{ - UINT8 SkipField; - UINT8 FieldFlag; - UINT32 PkgLength; - -} ACPI_FIELD_INFO; - - -/***************************************************************************** - * - * Generic "state" object for stacks - * - ****************************************************************************/ - -#define ACPI_CONTROL_NORMAL 0xC0 -#define ACPI_CONTROL_CONDITIONAL_EXECUTING 0xC1 -#define ACPI_CONTROL_PREDICATE_EXECUTING 0xC2 -#define ACPI_CONTROL_PREDICATE_FALSE 0xC3 -#define ACPI_CONTROL_PREDICATE_TRUE 0xC4 - - -#define ACPI_STATE_COMMON \ - void *Next; \ - UINT8 DescriptorType; /* To differentiate various internal objs */\ - UINT8 Flags; \ - UINT16 Value; \ - UINT16 State; - - /* There are 2 bytes available here until the next natural alignment boundary */ - -typedef struct acpi_common_state -{ - ACPI_STATE_COMMON -} ACPI_COMMON_STATE; - - -/* - * Update state - used to traverse complex objects such as packages - */ -typedef struct acpi_update_state -{ - ACPI_STATE_COMMON - union acpi_operand_object *Object; - -} ACPI_UPDATE_STATE; - - -/* - * Pkg state - used to traverse nested package structures - */ -typedef struct acpi_pkg_state -{ - ACPI_STATE_COMMON - UINT16 Index; - union acpi_operand_object *SourceObject; - union acpi_operand_object *DestObject; - struct acpi_walk_state *WalkState; - void *ThisTargetObj; - UINT32 NumPackages; - -} ACPI_PKG_STATE; - - -/* - * Control state - one per if/else and while constructs. - * Allows nesting of these constructs - */ -typedef struct acpi_control_state -{ - ACPI_STATE_COMMON - UINT16 Opcode; - union acpi_parse_object *PredicateOp; - UINT8 *AmlPredicateStart; /* Start of if/while predicate */ - UINT8 *PackageEnd; /* End of if/while block */ - -} ACPI_CONTROL_STATE; - - -/* - * Scope state - current scope during namespace lookups - */ -typedef struct acpi_scope_state -{ - ACPI_STATE_COMMON - ACPI_NAMESPACE_NODE *Node; - -} ACPI_SCOPE_STATE; - - -typedef struct acpi_pscope_state -{ - ACPI_STATE_COMMON - UINT32 ArgCount; /* Number of fixed arguments */ - union acpi_parse_object *Op; /* Current op being parsed */ - UINT8 *ArgEnd; /* Current argument end */ - UINT8 *PkgEnd; /* Current package end */ - UINT32 ArgList; /* Next argument to parse */ - -} ACPI_PSCOPE_STATE; - - -/* - * Thread state - one per thread across multiple walk states. Multiple walk - * states are created when there are nested control methods executing. - */ -typedef struct acpi_thread_state -{ - ACPI_STATE_COMMON - UINT8 CurrentSyncLevel; /* Mutex Sync (nested acquire) level */ - struct acpi_walk_state *WalkStateList; /* Head of list of WalkStates for this thread */ - union acpi_operand_object *AcquiredMutexList; /* List of all currently acquired mutexes */ - ACPI_THREAD_ID ThreadId; /* Running thread ID */ - -} ACPI_THREAD_STATE; - - -/* - * Result values - used to accumulate the results of nested - * AML arguments - */ -typedef struct acpi_result_values -{ - ACPI_STATE_COMMON - UINT8 NumResults; - UINT8 LastInsert; - union acpi_operand_object *ObjDesc [ACPI_OBJ_NUM_OPERANDS]; - -} ACPI_RESULT_VALUES; - - -typedef -ACPI_STATUS (*ACPI_PARSE_DOWNWARDS) ( - struct acpi_walk_state *WalkState, - union acpi_parse_object **OutOp); - -typedef -ACPI_STATUS (*ACPI_PARSE_UPWARDS) ( - struct acpi_walk_state *WalkState); - - -/* - * Notify info - used to pass info to the deferred notify - * handler/dispatcher. - */ -typedef struct acpi_notify_info -{ - ACPI_STATE_COMMON - ACPI_NAMESPACE_NODE *Node; - union acpi_operand_object *HandlerObj; - -} ACPI_NOTIFY_INFO; - - -/* Generic state is union of structs above */ - -typedef union acpi_generic_state -{ - ACPI_COMMON_STATE Common; - ACPI_CONTROL_STATE Control; - ACPI_UPDATE_STATE Update; - ACPI_SCOPE_STATE Scope; - ACPI_PSCOPE_STATE ParseScope; - ACPI_PKG_STATE Pkg; - ACPI_THREAD_STATE Thread; - ACPI_RESULT_VALUES Results; - ACPI_NOTIFY_INFO Notify; - -} ACPI_GENERIC_STATE; - - -/***************************************************************************** - * - * Interpreter typedefs and structs - * - ****************************************************************************/ - -typedef -ACPI_STATUS (*ACPI_EXECUTE_OP) ( - struct acpi_walk_state *WalkState); - - -/***************************************************************************** - * - * Parser typedefs and structs - * - ****************************************************************************/ - -/* - * AML opcode, name, and argument layout - */ -typedef struct acpi_opcode_info -{ -#if defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUG_OUTPUT) - char *Name; /* Opcode name (disassembler/debug only) */ -#endif - UINT32 ParseArgs; /* Grammar/Parse time arguments */ - UINT32 RuntimeArgs; /* Interpret time arguments */ - UINT16 Flags; /* Misc flags */ - UINT8 ObjectType; /* Corresponding internal object type */ - UINT8 Class; /* Opcode class */ - UINT8 Type; /* Opcode type */ - -} ACPI_OPCODE_INFO; - -typedef union acpi_parse_value -{ - ACPI_INTEGER Integer; /* Integer constant (Up to 64 bits) */ - UINT64_STRUCT Integer64; /* Structure overlay for 2 32-bit Dwords */ - UINT32 Size; /* bytelist or field size */ - char *String; /* NULL terminated string */ - UINT8 *Buffer; /* buffer or string */ - char *Name; /* NULL terminated string */ - union acpi_parse_object *Arg; /* arguments and contained ops */ - -} ACPI_PARSE_VALUE; - -#define ACPI_PARSE_COMMON \ - union acpi_parse_object *Parent; /* Parent op */\ - UINT8 DescriptorType; /* To differentiate various internal objs */\ - UINT8 Flags; /* Type of Op */\ - UINT16 AmlOpcode; /* AML opcode */\ - UINT32 AmlOffset; /* Offset of declaration in AML */\ - union acpi_parse_object *Next; /* Next op */\ - ACPI_NAMESPACE_NODE *Node; /* For use by interpreter */\ - ACPI_PARSE_VALUE Value; /* Value or args associated with the opcode */\ - ACPI_DISASM_ONLY_MEMBERS (\ - UINT8 DisasmFlags; /* Used during AML disassembly */\ - UINT8 DisasmOpcode; /* Subtype used for disassembly */\ - char AmlOpName[16]) /* Op name (debug only) */ - - -#define ACPI_DASM_BUFFER 0x00 -#define ACPI_DASM_RESOURCE 0x01 -#define ACPI_DASM_STRING 0x02 -#define ACPI_DASM_UNICODE 0x03 -#define ACPI_DASM_EISAID 0x04 -#define ACPI_DASM_MATCHOP 0x05 -#define ACPI_DASM_LNOT_PREFIX 0x06 -#define ACPI_DASM_LNOT_SUFFIX 0x07 -#define ACPI_DASM_IGNORE 0x08 - -/* - * Generic operation (for example: If, While, Store) - */ -typedef struct acpi_parse_obj_common -{ - ACPI_PARSE_COMMON -} ACPI_PARSE_OBJ_COMMON; - - -/* - * Extended Op for named ops (Scope, Method, etc.), deferred ops (Methods and OpRegions), - * and bytelists. - */ -typedef struct acpi_parse_obj_named -{ - ACPI_PARSE_COMMON - UINT8 *Path; - UINT8 *Data; /* AML body or bytelist data */ - UINT32 Length; /* AML length */ - UINT32 Name; /* 4-byte name or zero if no name */ - -} ACPI_PARSE_OBJ_NAMED; - - -/* This version is used by the iASL compiler only */ - -#define ACPI_MAX_PARSEOP_NAME 20 - -typedef struct acpi_parse_obj_asl -{ - ACPI_PARSE_COMMON - union acpi_parse_object *Child; - union acpi_parse_object *ParentMethod; - char *Filename; - char *ExternalName; - char *Namepath; - char NameSeg[4]; - UINT32 ExtraValue; - UINT32 Column; - UINT32 LineNumber; - UINT32 LogicalLineNumber; - UINT32 LogicalByteOffset; - UINT32 EndLine; - UINT32 EndLogicalLine; - UINT32 AcpiBtype; - UINT32 AmlLength; - UINT32 AmlSubtreeLength; - UINT32 FinalAmlLength; - UINT32 FinalAmlOffset; - UINT32 CompileFlags; - UINT16 ParseOpcode; - UINT8 AmlOpcodeLength; - UINT8 AmlPkgLenBytes; - UINT8 Extra; - char ParseOpName[ACPI_MAX_PARSEOP_NAME]; - -} ACPI_PARSE_OBJ_ASL; - -typedef union acpi_parse_object -{ - ACPI_PARSE_OBJ_COMMON Common; - ACPI_PARSE_OBJ_NAMED Named; - ACPI_PARSE_OBJ_ASL Asl; - -} ACPI_PARSE_OBJECT; - - -/* - * Parse state - one state per parser invocation and each control - * method. - */ -typedef struct acpi_parse_state -{ - UINT8 *AmlStart; /* First AML byte */ - UINT8 *Aml; /* Next AML byte */ - UINT8 *AmlEnd; /* (last + 1) AML byte */ - UINT8 *PkgStart; /* Current package begin */ - UINT8 *PkgEnd; /* Current package end */ - union acpi_parse_object *StartOp; /* Root of parse tree */ - struct acpi_namespace_node *StartNode; - union acpi_generic_state *Scope; /* Current scope */ - union acpi_parse_object *StartScope; - UINT32 AmlSize; - -} ACPI_PARSE_STATE; - - -/* Parse object flags */ - -#define ACPI_PARSEOP_GENERIC 0x01 -#define ACPI_PARSEOP_NAMED 0x02 -#define ACPI_PARSEOP_DEFERRED 0x04 -#define ACPI_PARSEOP_BYTELIST 0x08 -#define ACPI_PARSEOP_IN_CACHE 0x80 - -/* Parse object DisasmFlags */ - -#define ACPI_PARSEOP_IGNORE 0x01 -#define ACPI_PARSEOP_PARAMLIST 0x02 -#define ACPI_PARSEOP_EMPTY_TERMLIST 0x04 -#define ACPI_PARSEOP_SPECIAL 0x10 - - -/***************************************************************************** - * - * Hardware (ACPI registers) and PNP - * - ****************************************************************************/ - -#define PCI_ROOT_HID_STRING "PNP0A03" -#define PCI_EXPRESS_ROOT_HID_STRING "PNP0A08" - -typedef struct acpi_bit_register_info -{ - UINT8 ParentRegister; - UINT8 BitPosition; - UINT16 AccessBitMask; - -} ACPI_BIT_REGISTER_INFO; - - -/* - * Some ACPI registers have bits that must be ignored -- meaning that they - * must be preserved. - */ -#define ACPI_PM1_STATUS_PRESERVED_BITS 0x0800 /* Bit 11 */ -#define ACPI_PM1_CONTROL_PRESERVED_BITS 0x0201 /* Bit 9, Bit 0 (SCI_EN) */ - - -/* - * Register IDs - * These are the full ACPI registers - */ -#define ACPI_REGISTER_PM1_STATUS 0x01 -#define ACPI_REGISTER_PM1_ENABLE 0x02 -#define ACPI_REGISTER_PM1_CONTROL 0x03 -#define ACPI_REGISTER_PM1A_CONTROL 0x04 -#define ACPI_REGISTER_PM1B_CONTROL 0x05 -#define ACPI_REGISTER_PM2_CONTROL 0x06 -#define ACPI_REGISTER_PM_TIMER 0x07 -#define ACPI_REGISTER_PROCESSOR_BLOCK 0x08 -#define ACPI_REGISTER_SMI_COMMAND_BLOCK 0x09 - - -/* Masks used to access the BitRegisters */ - -#define ACPI_BITMASK_TIMER_STATUS 0x0001 -#define ACPI_BITMASK_BUS_MASTER_STATUS 0x0010 -#define ACPI_BITMASK_GLOBAL_LOCK_STATUS 0x0020 -#define ACPI_BITMASK_POWER_BUTTON_STATUS 0x0100 -#define ACPI_BITMASK_SLEEP_BUTTON_STATUS 0x0200 -#define ACPI_BITMASK_RT_CLOCK_STATUS 0x0400 -#define ACPI_BITMASK_PCIEXP_WAKE_STATUS 0x4000 /* ACPI 3.0 */ -#define ACPI_BITMASK_WAKE_STATUS 0x8000 - -#define ACPI_BITMASK_ALL_FIXED_STATUS (\ - ACPI_BITMASK_TIMER_STATUS | \ - ACPI_BITMASK_BUS_MASTER_STATUS | \ - ACPI_BITMASK_GLOBAL_LOCK_STATUS | \ - ACPI_BITMASK_POWER_BUTTON_STATUS | \ - ACPI_BITMASK_SLEEP_BUTTON_STATUS | \ - ACPI_BITMASK_RT_CLOCK_STATUS | \ - ACPI_BITMASK_WAKE_STATUS) - -#define ACPI_BITMASK_TIMER_ENABLE 0x0001 -#define ACPI_BITMASK_GLOBAL_LOCK_ENABLE 0x0020 -#define ACPI_BITMASK_POWER_BUTTON_ENABLE 0x0100 -#define ACPI_BITMASK_SLEEP_BUTTON_ENABLE 0x0200 -#define ACPI_BITMASK_RT_CLOCK_ENABLE 0x0400 -#define ACPI_BITMASK_PCIEXP_WAKE_DISABLE 0x4000 /* ACPI 3.0 */ - -#define ACPI_BITMASK_SCI_ENABLE 0x0001 -#define ACPI_BITMASK_BUS_MASTER_RLD 0x0002 -#define ACPI_BITMASK_GLOBAL_LOCK_RELEASE 0x0004 -#define ACPI_BITMASK_SLEEP_TYPE_X 0x1C00 -#define ACPI_BITMASK_SLEEP_ENABLE 0x2000 - -#define ACPI_BITMASK_ARB_DISABLE 0x0001 - - -/* Raw bit position of each BitRegister */ - -#define ACPI_BITPOSITION_TIMER_STATUS 0x00 -#define ACPI_BITPOSITION_BUS_MASTER_STATUS 0x04 -#define ACPI_BITPOSITION_GLOBAL_LOCK_STATUS 0x05 -#define ACPI_BITPOSITION_POWER_BUTTON_STATUS 0x08 -#define ACPI_BITPOSITION_SLEEP_BUTTON_STATUS 0x09 -#define ACPI_BITPOSITION_RT_CLOCK_STATUS 0x0A -#define ACPI_BITPOSITION_PCIEXP_WAKE_STATUS 0x0E /* ACPI 3.0 */ -#define ACPI_BITPOSITION_WAKE_STATUS 0x0F - -#define ACPI_BITPOSITION_TIMER_ENABLE 0x00 -#define ACPI_BITPOSITION_GLOBAL_LOCK_ENABLE 0x05 -#define ACPI_BITPOSITION_POWER_BUTTON_ENABLE 0x08 -#define ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE 0x09 -#define ACPI_BITPOSITION_RT_CLOCK_ENABLE 0x0A -#define ACPI_BITPOSITION_PCIEXP_WAKE_DISABLE 0x0E /* ACPI 3.0 */ - -#define ACPI_BITPOSITION_SCI_ENABLE 0x00 -#define ACPI_BITPOSITION_BUS_MASTER_RLD 0x01 -#define ACPI_BITPOSITION_GLOBAL_LOCK_RELEASE 0x02 -#define ACPI_BITPOSITION_SLEEP_TYPE_X 0x0A -#define ACPI_BITPOSITION_SLEEP_ENABLE 0x0D - -#define ACPI_BITPOSITION_ARB_DISABLE 0x00 - - -/***************************************************************************** - * - * Resource descriptors - * - ****************************************************************************/ - -/* ResourceType values */ - -#define ACPI_ADDRESS_TYPE_MEMORY_RANGE 0 -#define ACPI_ADDRESS_TYPE_IO_RANGE 1 -#define ACPI_ADDRESS_TYPE_BUS_NUMBER_RANGE 2 - -/* Resource descriptor types and masks */ - -#define ACPI_RESOURCE_NAME_LARGE 0x80 -#define ACPI_RESOURCE_NAME_SMALL 0x00 - -#define ACPI_RESOURCE_NAME_SMALL_MASK 0x78 /* Bits 6:3 contain the type */ -#define ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK 0x07 /* Bits 2:0 contain the length */ -#define ACPI_RESOURCE_NAME_LARGE_MASK 0x7F /* Bits 6:0 contain the type */ - - -/* - * Small resource descriptor "names" as defined by the ACPI specification. - * Note: Bits 2:0 are used for the descriptor length - */ -#define ACPI_RESOURCE_NAME_IRQ 0x20 -#define ACPI_RESOURCE_NAME_DMA 0x28 -#define ACPI_RESOURCE_NAME_START_DEPENDENT 0x30 -#define ACPI_RESOURCE_NAME_END_DEPENDENT 0x38 -#define ACPI_RESOURCE_NAME_IO 0x40 -#define ACPI_RESOURCE_NAME_FIXED_IO 0x48 -#define ACPI_RESOURCE_NAME_RESERVED_S1 0x50 -#define ACPI_RESOURCE_NAME_RESERVED_S2 0x58 -#define ACPI_RESOURCE_NAME_RESERVED_S3 0x60 -#define ACPI_RESOURCE_NAME_RESERVED_S4 0x68 -#define ACPI_RESOURCE_NAME_VENDOR_SMALL 0x70 -#define ACPI_RESOURCE_NAME_END_TAG 0x78 - -/* - * Large resource descriptor "names" as defined by the ACPI specification. - * Note: includes the Large Descriptor bit in bit[7] - */ -#define ACPI_RESOURCE_NAME_MEMORY24 0x81 -#define ACPI_RESOURCE_NAME_GENERIC_REGISTER 0x82 -#define ACPI_RESOURCE_NAME_RESERVED_L1 0x83 -#define ACPI_RESOURCE_NAME_VENDOR_LARGE 0x84 -#define ACPI_RESOURCE_NAME_MEMORY32 0x85 -#define ACPI_RESOURCE_NAME_FIXED_MEMORY32 0x86 -#define ACPI_RESOURCE_NAME_ADDRESS32 0x87 -#define ACPI_RESOURCE_NAME_ADDRESS16 0x88 -#define ACPI_RESOURCE_NAME_EXTENDED_IRQ 0x89 -#define ACPI_RESOURCE_NAME_ADDRESS64 0x8A -#define ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64 0x8B -#define ACPI_RESOURCE_NAME_LARGE_MAX 0x8B - - -/***************************************************************************** - * - * Miscellaneous - * - ****************************************************************************/ - -#define ACPI_ASCII_ZERO 0x30 - - -/***************************************************************************** - * - * Debugger - * - ****************************************************************************/ - -typedef struct acpi_db_method_info -{ - ACPI_HANDLE ThreadGate; - char *Name; - char **Args; - UINT32 Flags; - UINT32 NumLoops; - char Pathname[128]; - -} ACPI_DB_METHOD_INFO; - -typedef struct acpi_integrity_info -{ - UINT32 Nodes; - UINT32 Objects; - -} ACPI_INTEGRITY_INFO; - - -#define ACPI_DB_REDIRECTABLE_OUTPUT 0x01 -#define ACPI_DB_CONSOLE_OUTPUT 0x02 -#define ACPI_DB_DUPLICATE_OUTPUT 0x03 - - -/***************************************************************************** - * - * Debug - * - ****************************************************************************/ - -/* Entry for a memory allocation (debug only) */ - -#define ACPI_MEM_MALLOC 0 -#define ACPI_MEM_CALLOC 1 -#define ACPI_MAX_MODULE_NAME 16 - -#define ACPI_COMMON_DEBUG_MEM_HEADER \ - struct acpi_debug_mem_block *Previous; \ - struct acpi_debug_mem_block *Next; \ - UINT32 Size; \ - UINT32 Component; \ - UINT32 Line; \ - char Module[ACPI_MAX_MODULE_NAME]; \ - UINT8 AllocType; - -typedef struct acpi_debug_mem_header -{ - ACPI_COMMON_DEBUG_MEM_HEADER - -} ACPI_DEBUG_MEM_HEADER; - -typedef struct acpi_debug_mem_block -{ - ACPI_COMMON_DEBUG_MEM_HEADER - UINT64 UserSpace; - -} ACPI_DEBUG_MEM_BLOCK; - - -#define ACPI_MEM_LIST_GLOBAL 0 -#define ACPI_MEM_LIST_NSNODE 1 -#define ACPI_MEM_LIST_MAX 1 -#define ACPI_NUM_MEM_LISTS 2 - - -typedef struct acpi_memory_list -{ - char *ListName; - void *ListHead; - UINT16 ObjectSize; - UINT16 MaxDepth; - UINT16 CurrentDepth; - UINT16 LinkOffset; - -#ifdef ACPI_DBG_TRACK_ALLOCATIONS - - /* Statistics for debug memory tracking only */ - - UINT32 TotalAllocated; - UINT32 TotalFreed; - UINT32 CurrentTotalSize; - UINT32 Requests; - UINT32 Hits; -#endif - -} ACPI_MEMORY_LIST; - - -#endif /* __ACLOCAL_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/acmacros.h b/sys/contrib/dev/acpica-unix-20061109/include/acmacros.h deleted file mode 100644 index 4725a2ab4f..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/acmacros.h +++ /dev/null @@ -1,830 +0,0 @@ -/****************************************************************************** - * - * Name: acmacros.h - C macros for the entire subsystem. - * $Revision: 1.192 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACMACROS_H__ -#define __ACMACROS_H__ - - -/* - * Data manipulation macros - */ -#define ACPI_LOWORD(l) ((UINT16)(UINT32)(l)) -#define ACPI_HIWORD(l) ((UINT16)((((UINT32)(l)) >> 16) & 0xFFFF)) -#define ACPI_LOBYTE(l) ((UINT8)(UINT16)(l)) -#define ACPI_HIBYTE(l) ((UINT8)((((UINT16)(l)) >> 8) & 0xFF)) - -#define ACPI_SET_BIT(target,bit) ((target) |= (bit)) -#define ACPI_CLEAR_BIT(target,bit) ((target) &= ~(bit)) -#define ACPI_MIN(a,b) (((a)<(b))?(a):(b)) -#define ACPI_MAX(a,b) (((a)>(b))?(a):(b)) - -/* Size calculation */ - -#define ACPI_ARRAY_LENGTH(x) (sizeof(x) / sizeof((x)[0])) - - -#if ACPI_MACHINE_WIDTH == 16 - -/* - * For 16-bit addresses, we have to assume that the upper 32 bits - * (out of 64) are zero. - */ -#define ACPI_LODWORD(l) ((UINT32)(l)) -#define ACPI_HIDWORD(l) ((UINT32)(0)) - -#define ACPI_GET_ADDRESS(a) ((a).Lo) -#define ACPI_STORE_ADDRESS(a,b) {(a).Hi=0;(a).Lo=(UINT32)(b);} -#define ACPI_VALID_ADDRESS(a) ((a).Hi | (a).Lo) - -#else -#ifdef ACPI_NO_INTEGER64_SUPPORT -/* - * ACPI_INTEGER is 32-bits, no 64-bit support on this platform - */ -#define ACPI_LODWORD(l) ((UINT32)(l)) -#define ACPI_HIDWORD(l) ((UINT32)(0)) - -#define ACPI_GET_ADDRESS(a) (a) -#define ACPI_STORE_ADDRESS(a,b) ((a)=(b)) -#define ACPI_VALID_ADDRESS(a) (a) - -#else - -/* - * Full 64-bit address/integer on both 32-bit and 64-bit platforms - */ -#define ACPI_LODWORD(l) ((UINT32)(UINT64)(l)) -#define ACPI_HIDWORD(l) ((UINT32)(((*(UINT64_STRUCT *)(void *)(&l))).Hi)) - -#define ACPI_GET_ADDRESS(a) (a) -#define ACPI_STORE_ADDRESS(a,b) ((a)=(ACPI_PHYSICAL_ADDRESS)(b)) -#define ACPI_VALID_ADDRESS(a) (a) -#endif -#endif - -/* - * printf() format helpers - */ - -/* Split 64-bit integer into two 32-bit values. Use with %8.8X%8.8X */ - -#define ACPI_FORMAT_UINT64(i) ACPI_HIDWORD(i),ACPI_LODWORD(i) - -/* - * Extract data using a pointer. Any more than a byte and we - * get into potential aligment issues -- see the STORE macros below. - * Use with care. - */ -#define ACPI_GET8(ptr) *ACPI_CAST_PTR (UINT8, ptr) -#define ACPI_GET16(ptr) *ACPI_CAST_PTR (UINT16, ptr) -#define ACPI_GET32(ptr) *ACPI_CAST_PTR (UINT32, ptr) -#define ACPI_GET64(ptr) *ACPI_CAST_PTR (UINT64, ptr) -#define ACPI_SET8(ptr) *ACPI_CAST_PTR (UINT8, ptr) -#define ACPI_SET16(ptr) *ACPI_CAST_PTR (UINT16, ptr) -#define ACPI_SET32(ptr) *ACPI_CAST_PTR (UINT32, ptr) -#define ACPI_SET64(ptr) *ACPI_CAST_PTR (UINT64, ptr) - -/* - * Pointer manipulation - */ -#define ACPI_CAST_PTR(t, p) ((t *) (ACPI_UINTPTR_T) (p)) -#define ACPI_CAST_INDIRECT_PTR(t, p) ((t **) (ACPI_UINTPTR_T) (p)) -#define ACPI_ADD_PTR(t,a,b) ACPI_CAST_PTR (t, (ACPI_CAST_PTR (UINT8,(a)) + (ACPI_NATIVE_UINT)(b))) -#define ACPI_PTR_DIFF(a,b) (ACPI_NATIVE_UINT) (ACPI_CAST_PTR (UINT8,(a)) - ACPI_CAST_PTR (UINT8,(b))) - -/* Pointer/Integer type conversions */ - -#define ACPI_TO_POINTER(i) ACPI_ADD_PTR (void,(void *) NULL,(ACPI_NATIVE_UINT) i) -#define ACPI_TO_INTEGER(p) ACPI_PTR_DIFF (p,(void *) NULL) -#define ACPI_OFFSET(d,f) (ACPI_SIZE) ACPI_PTR_DIFF (&(((d *)0)->f),(void *) NULL) - -#if ACPI_MACHINE_WIDTH == 16 -#define ACPI_STORE_POINTER(d,s) ACPI_MOVE_32_TO_32(d,s) -#define ACPI_PHYSADDR_TO_PTR(i) (void *)(i) -#define ACPI_PTR_TO_PHYSADDR(i) (UINT32) ACPI_CAST_PTR (UINT8,(i)) -#else -#define ACPI_PHYSADDR_TO_PTR(i) ACPI_TO_POINTER(i) -#define ACPI_PTR_TO_PHYSADDR(i) ACPI_TO_INTEGER(i) -#endif - -#ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED -#define ACPI_COMPARE_NAME(a,b) (*ACPI_CAST_PTR (UINT32,(a)) == *ACPI_CAST_PTR (UINT32,(b))) -#else -#define ACPI_COMPARE_NAME(a,b) (!ACPI_STRNCMP (ACPI_CAST_PTR (char,(a)), ACPI_CAST_PTR (char,(b)), ACPI_NAME_SIZE)) -#endif - -/* - * Macros for moving data around to/from buffers that are possibly unaligned. - * If the hardware supports the transfer of unaligned data, just do the store. - * Otherwise, we have to move one byte at a time. - */ -#ifdef ACPI_BIG_ENDIAN -/* - * Macros for big-endian machines - */ - -/* This macro sets a buffer index, starting from the end of the buffer */ - -#define ACPI_BUFFER_INDEX(BufLen,BufOffset,ByteGran) ((BufLen) - (((BufOffset)+1) * (ByteGran))) - -/* These macros reverse the bytes during the move, converting little-endian to big endian */ - - /* Big Endian <== Little Endian */ - /* Hi...Lo Lo...Hi */ -/* 16-bit source, 16/32/64 destination */ - -#define ACPI_MOVE_16_TO_16(d,s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[1];\ - (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[0];} - -#define ACPI_MOVE_16_TO_32(d,s) {(*(UINT32 *)(void *)(d))=0;\ - ((UINT8 *)(void *)(d))[2] = ((UINT8 *)(void *)(s))[1];\ - ((UINT8 *)(void *)(d))[3] = ((UINT8 *)(void *)(s))[0];} - -#define ACPI_MOVE_16_TO_64(d,s) {(*(UINT64 *)(void *)(d))=0;\ - ((UINT8 *)(void *)(d))[6] = ((UINT8 *)(void *)(s))[1];\ - ((UINT8 *)(void *)(d))[7] = ((UINT8 *)(void *)(s))[0];} - -/* 32-bit source, 16/32/64 destination */ - -#define ACPI_MOVE_32_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */ - -#define ACPI_MOVE_32_TO_32(d,s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[3];\ - (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[2];\ - (( UINT8 *)(void *)(d))[2] = ((UINT8 *)(void *)(s))[1];\ - (( UINT8 *)(void *)(d))[3] = ((UINT8 *)(void *)(s))[0];} - -#define ACPI_MOVE_32_TO_64(d,s) {(*(UINT64 *)(void *)(d))=0;\ - ((UINT8 *)(void *)(d))[4] = ((UINT8 *)(void *)(s))[3];\ - ((UINT8 *)(void *)(d))[5] = ((UINT8 *)(void *)(s))[2];\ - ((UINT8 *)(void *)(d))[6] = ((UINT8 *)(void *)(s))[1];\ - ((UINT8 *)(void *)(d))[7] = ((UINT8 *)(void *)(s))[0];} - -/* 64-bit source, 16/32/64 destination */ - -#define ACPI_MOVE_64_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */ - -#define ACPI_MOVE_64_TO_32(d,s) ACPI_MOVE_32_TO_32(d,s) /* Truncate to 32 */ - -#define ACPI_MOVE_64_TO_64(d,s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[7];\ - (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[6];\ - (( UINT8 *)(void *)(d))[2] = ((UINT8 *)(void *)(s))[5];\ - (( UINT8 *)(void *)(d))[3] = ((UINT8 *)(void *)(s))[4];\ - (( UINT8 *)(void *)(d))[4] = ((UINT8 *)(void *)(s))[3];\ - (( UINT8 *)(void *)(d))[5] = ((UINT8 *)(void *)(s))[2];\ - (( UINT8 *)(void *)(d))[6] = ((UINT8 *)(void *)(s))[1];\ - (( UINT8 *)(void *)(d))[7] = ((UINT8 *)(void *)(s))[0];} -#else -/* - * Macros for little-endian machines - */ - -/* This macro sets a buffer index, starting from the beginning of the buffer */ - -#define ACPI_BUFFER_INDEX(BufLen,BufOffset,ByteGran) (BufOffset) - -#ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED - -/* The hardware supports unaligned transfers, just do the little-endian move */ - -#if ACPI_MACHINE_WIDTH == 16 - -/* No 64-bit integers */ -/* 16-bit source, 16/32/64 destination */ - -#define ACPI_MOVE_16_TO_16(d,s) *(UINT16 *)(void *)(d) = *(UINT16 *)(void *)(s) -#define ACPI_MOVE_16_TO_32(d,s) *(UINT32 *)(void *)(d) = *(UINT16 *)(void *)(s) -#define ACPI_MOVE_16_TO_64(d,s) ACPI_MOVE_16_TO_32(d,s) - -/* 32-bit source, 16/32/64 destination */ - -#define ACPI_MOVE_32_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */ -#define ACPI_MOVE_32_TO_32(d,s) *(UINT32 *)(void *)(d) = *(UINT32 *)(void *)(s) -#define ACPI_MOVE_32_TO_64(d,s) ACPI_MOVE_32_TO_32(d,s) - -/* 64-bit source, 16/32/64 destination */ - -#define ACPI_MOVE_64_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */ -#define ACPI_MOVE_64_TO_32(d,s) ACPI_MOVE_32_TO_32(d,s) /* Truncate to 32 */ -#define ACPI_MOVE_64_TO_64(d,s) ACPI_MOVE_32_TO_32(d,s) - -#else -/* 16-bit source, 16/32/64 destination */ - -#define ACPI_MOVE_16_TO_16(d,s) *(UINT16 *)(void *)(d) = *(UINT16 *)(void *)(s) -#define ACPI_MOVE_16_TO_32(d,s) *(UINT32 *)(void *)(d) = *(UINT16 *)(void *)(s) -#define ACPI_MOVE_16_TO_64(d,s) *(UINT64 *)(void *)(d) = *(UINT16 *)(void *)(s) - -/* 32-bit source, 16/32/64 destination */ - -#define ACPI_MOVE_32_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */ -#define ACPI_MOVE_32_TO_32(d,s) *(UINT32 *)(void *)(d) = *(UINT32 *)(void *)(s) -#define ACPI_MOVE_32_TO_64(d,s) *(UINT64 *)(void *)(d) = *(UINT32 *)(void *)(s) - -/* 64-bit source, 16/32/64 destination */ - -#define ACPI_MOVE_64_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */ -#define ACPI_MOVE_64_TO_32(d,s) ACPI_MOVE_32_TO_32(d,s) /* Truncate to 32 */ -#define ACPI_MOVE_64_TO_64(d,s) *(UINT64 *)(void *)(d) = *(UINT64 *)(void *)(s) -#endif - -#else -/* - * The hardware does not support unaligned transfers. We must move the - * data one byte at a time. These macros work whether the source or - * the destination (or both) is/are unaligned. (Little-endian move) - */ - -/* 16-bit source, 16/32/64 destination */ - -#define ACPI_MOVE_16_TO_16(d,s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[0];\ - (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[1];} - -#define ACPI_MOVE_16_TO_32(d,s) {(*(UINT32 *)(void *)(d)) = 0; ACPI_MOVE_16_TO_16(d,s);} -#define ACPI_MOVE_16_TO_64(d,s) {(*(UINT64 *)(void *)(d)) = 0; ACPI_MOVE_16_TO_16(d,s);} - -/* 32-bit source, 16/32/64 destination */ - -#define ACPI_MOVE_32_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */ - -#define ACPI_MOVE_32_TO_32(d,s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[0];\ - (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[1];\ - (( UINT8 *)(void *)(d))[2] = ((UINT8 *)(void *)(s))[2];\ - (( UINT8 *)(void *)(d))[3] = ((UINT8 *)(void *)(s))[3];} - -#define ACPI_MOVE_32_TO_64(d,s) {(*(UINT64 *)(void *)(d)) = 0; ACPI_MOVE_32_TO_32(d,s);} - -/* 64-bit source, 16/32/64 destination */ - -#define ACPI_MOVE_64_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) /* Truncate to 16 */ -#define ACPI_MOVE_64_TO_32(d,s) ACPI_MOVE_32_TO_32(d,s) /* Truncate to 32 */ -#define ACPI_MOVE_64_TO_64(d,s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[0];\ - (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[1];\ - (( UINT8 *)(void *)(d))[2] = ((UINT8 *)(void *)(s))[2];\ - (( UINT8 *)(void *)(d))[3] = ((UINT8 *)(void *)(s))[3];\ - (( UINT8 *)(void *)(d))[4] = ((UINT8 *)(void *)(s))[4];\ - (( UINT8 *)(void *)(d))[5] = ((UINT8 *)(void *)(s))[5];\ - (( UINT8 *)(void *)(d))[6] = ((UINT8 *)(void *)(s))[6];\ - (( UINT8 *)(void *)(d))[7] = ((UINT8 *)(void *)(s))[7];} -#endif -#endif - -/* Macros based on machine integer width */ - -#if ACPI_MACHINE_WIDTH == 16 -#define ACPI_MOVE_SIZE_TO_16(d,s) ACPI_MOVE_16_TO_16(d,s) - -#elif ACPI_MACHINE_WIDTH == 32 -#define ACPI_MOVE_SIZE_TO_16(d,s) ACPI_MOVE_32_TO_16(d,s) - -#elif ACPI_MACHINE_WIDTH == 64 -#define ACPI_MOVE_SIZE_TO_16(d,s) ACPI_MOVE_64_TO_16(d,s) - -#else -#error unknown ACPI_MACHINE_WIDTH -#endif - - -/* - * Fast power-of-two math macros for non-optimized compilers - */ -#define _ACPI_DIV(value,PowerOf2) ((UINT32) ((value) >> (PowerOf2))) -#define _ACPI_MUL(value,PowerOf2) ((UINT32) ((value) << (PowerOf2))) -#define _ACPI_MOD(value,Divisor) ((UINT32) ((value) & ((Divisor) -1))) - -#define ACPI_DIV_2(a) _ACPI_DIV(a,1) -#define ACPI_MUL_2(a) _ACPI_MUL(a,1) -#define ACPI_MOD_2(a) _ACPI_MOD(a,2) - -#define ACPI_DIV_4(a) _ACPI_DIV(a,2) -#define ACPI_MUL_4(a) _ACPI_MUL(a,2) -#define ACPI_MOD_4(a) _ACPI_MOD(a,4) - -#define ACPI_DIV_8(a) _ACPI_DIV(a,3) -#define ACPI_MUL_8(a) _ACPI_MUL(a,3) -#define ACPI_MOD_8(a) _ACPI_MOD(a,8) - -#define ACPI_DIV_16(a) _ACPI_DIV(a,4) -#define ACPI_MUL_16(a) _ACPI_MUL(a,4) -#define ACPI_MOD_16(a) _ACPI_MOD(a,16) - -#define ACPI_DIV_32(a) _ACPI_DIV(a,5) -#define ACPI_MUL_32(a) _ACPI_MUL(a,5) -#define ACPI_MOD_32(a) _ACPI_MOD(a,32) - -/* - * Rounding macros (Power of two boundaries only) - */ -#define ACPI_ROUND_DOWN(value,boundary) (((ACPI_NATIVE_UINT)(value)) & \ - (~(((ACPI_NATIVE_UINT) boundary)-1))) - -#define ACPI_ROUND_UP(value,boundary) ((((ACPI_NATIVE_UINT)(value)) + \ - (((ACPI_NATIVE_UINT) boundary)-1)) & \ - (~(((ACPI_NATIVE_UINT) boundary)-1))) - -/* Note: sizeof(ACPI_NATIVE_UINT) evaluates to either 2, 4, or 8 */ - -#define ACPI_ROUND_DOWN_TO_32BIT(a) ACPI_ROUND_DOWN(a,4) -#define ACPI_ROUND_DOWN_TO_64BIT(a) ACPI_ROUND_DOWN(a,8) -#define ACPI_ROUND_DOWN_TO_NATIVE_WORD(a) ACPI_ROUND_DOWN(a,sizeof(ACPI_NATIVE_UINT)) - -#define ACPI_ROUND_UP_TO_32BIT(a) ACPI_ROUND_UP(a,4) -#define ACPI_ROUND_UP_TO_64BIT(a) ACPI_ROUND_UP(a,8) -#define ACPI_ROUND_UP_TO_NATIVE_WORD(a) ACPI_ROUND_UP(a,sizeof(ACPI_NATIVE_UINT)) - -#define ACPI_ROUND_BITS_UP_TO_BYTES(a) ACPI_DIV_8((a) + 7) -#define ACPI_ROUND_BITS_DOWN_TO_BYTES(a) ACPI_DIV_8((a)) - -#define ACPI_ROUND_UP_TO_1K(a) (((a) + 1023) >> 10) - -/* Generic (non-power-of-two) rounding */ - -#define ACPI_ROUND_UP_TO(value,boundary) (((value) + ((boundary)-1)) / (boundary)) - -#define ACPI_IS_MISALIGNED(value) (((ACPI_NATIVE_UINT)value) & (sizeof(ACPI_NATIVE_UINT)-1)) - -/* - * Bitmask creation - * Bit positions start at zero. - * MASK_BITS_ABOVE creates a mask starting AT the position and above - * MASK_BITS_BELOW creates a mask starting one bit BELOW the position - */ -#define ACPI_MASK_BITS_ABOVE(position) (~((ACPI_INTEGER_MAX) << ((UINT32) (position)))) -#define ACPI_MASK_BITS_BELOW(position) ((ACPI_INTEGER_MAX) << ((UINT32) (position))) - -#define ACPI_IS_OCTAL_DIGIT(d) (((char)(d) >= '0') && ((char)(d) <= '7')) - - -/* Bitfields within ACPI registers */ - -#define ACPI_REGISTER_PREPARE_BITS(Val, Pos, Mask) ((Val << Pos) & Mask) -#define ACPI_REGISTER_INSERT_VALUE(Reg, Pos, Mask, Val) Reg = (Reg & (~(Mask))) | ACPI_REGISTER_PREPARE_BITS(Val, Pos, Mask) - -#define ACPI_INSERT_BITS(Target, Mask, Source) Target = ((Target & (~(Mask))) | (Source & Mask)) - -/* Generate a UUID */ - -#define ACPI_INIT_UUID(a,b,c,d0,d1,d2,d3,d4,d5,d6,d7) \ - (a) & 0xFF, ((a) >> 8) & 0xFF, ((a) >> 16) & 0xFF, ((a) >> 24) & 0xFF, \ - (b) & 0xFF, ((b) >> 8) & 0xFF, \ - (c) & 0xFF, ((c) >> 8) & 0xFF, \ - (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) - -/* - * An ACPI_NAMESPACE_NODE * can appear in some contexts, - * where a pointer to an ACPI_OPERAND_OBJECT can also - * appear. This macro is used to distinguish them. - * - * The "Descriptor" field is the first field in both structures. - */ -#define ACPI_GET_DESCRIPTOR_TYPE(d) (((ACPI_DESCRIPTOR *)(void *)(d))->Common.DescriptorType) -#define ACPI_SET_DESCRIPTOR_TYPE(d,t) (((ACPI_DESCRIPTOR *)(void *)(d))->Common.DescriptorType = t) - - -/* Macro to test the object type */ - -#define ACPI_GET_OBJECT_TYPE(d) (((ACPI_OPERAND_OBJECT *)(void *)(d))->Common.Type) - -/* Macro to check the table flags for SINGLE or MULTIPLE tables are allowed */ - -#define ACPI_IS_SINGLE_TABLE(x) (((x) & 0x01) == ACPI_TABLE_SINGLE ? 1 : 0) - -/* - * Macros for the master AML opcode table - */ -#if defined(ACPI_DISASSEMBLER) || defined (ACPI_DEBUG_OUTPUT) -#define ACPI_OP(Name,PArgs,IArgs,ObjType,Class,Type,Flags) {Name,(UINT32)(PArgs),(UINT32)(IArgs),(UINT32)(Flags),ObjType,Class,Type} -#else -#define ACPI_OP(Name,PArgs,IArgs,ObjType,Class,Type,Flags) {(UINT32)(PArgs),(UINT32)(IArgs),(UINT32)(Flags),ObjType,Class,Type} -#endif - -#ifdef ACPI_DISASSEMBLER -#define ACPI_DISASM_ONLY_MEMBERS(a) a; -#else -#define ACPI_DISASM_ONLY_MEMBERS(a) -#endif - -#define ARG_TYPE_WIDTH 5 -#define ARG_1(x) ((UINT32)(x)) -#define ARG_2(x) ((UINT32)(x) << (1 * ARG_TYPE_WIDTH)) -#define ARG_3(x) ((UINT32)(x) << (2 * ARG_TYPE_WIDTH)) -#define ARG_4(x) ((UINT32)(x) << (3 * ARG_TYPE_WIDTH)) -#define ARG_5(x) ((UINT32)(x) << (4 * ARG_TYPE_WIDTH)) -#define ARG_6(x) ((UINT32)(x) << (5 * ARG_TYPE_WIDTH)) - -#define ARGI_LIST1(a) (ARG_1(a)) -#define ARGI_LIST2(a,b) (ARG_1(b)|ARG_2(a)) -#define ARGI_LIST3(a,b,c) (ARG_1(c)|ARG_2(b)|ARG_3(a)) -#define ARGI_LIST4(a,b,c,d) (ARG_1(d)|ARG_2(c)|ARG_3(b)|ARG_4(a)) -#define ARGI_LIST5(a,b,c,d,e) (ARG_1(e)|ARG_2(d)|ARG_3(c)|ARG_4(b)|ARG_5(a)) -#define ARGI_LIST6(a,b,c,d,e,f) (ARG_1(f)|ARG_2(e)|ARG_3(d)|ARG_4(c)|ARG_5(b)|ARG_6(a)) - -#define ARGP_LIST1(a) (ARG_1(a)) -#define ARGP_LIST2(a,b) (ARG_1(a)|ARG_2(b)) -#define ARGP_LIST3(a,b,c) (ARG_1(a)|ARG_2(b)|ARG_3(c)) -#define ARGP_LIST4(a,b,c,d) (ARG_1(a)|ARG_2(b)|ARG_3(c)|ARG_4(d)) -#define ARGP_LIST5(a,b,c,d,e) (ARG_1(a)|ARG_2(b)|ARG_3(c)|ARG_4(d)|ARG_5(e)) -#define ARGP_LIST6(a,b,c,d,e,f) (ARG_1(a)|ARG_2(b)|ARG_3(c)|ARG_4(d)|ARG_5(e)|ARG_6(f)) - -#define GET_CURRENT_ARG_TYPE(List) (List & ((UINT32) 0x1F)) -#define INCREMENT_ARG_LIST(List) (List >>= ((UINT32) ARG_TYPE_WIDTH)) - - -#if defined (ACPI_DEBUG_OUTPUT) || !defined (ACPI_NO_ERROR_MESSAGES) -/* - * Module name is include in both debug and non-debug versions primarily for - * error messages. The __FILE__ macro is not very useful for this, because it - * often includes the entire pathname to the module - */ -#define ACPI_MODULE_NAME(Name) static char ACPI_UNUSED_VAR *_AcpiModuleName = Name; -#else -#define ACPI_MODULE_NAME(Name) -#endif - -/* - * Ascii error messages can be configured out - */ -#ifndef ACPI_NO_ERROR_MESSAGES -#define AE_INFO _AcpiModuleName, __LINE__ - -/* - * Error reporting. Callers module and line number are inserted by AE_INFO, - * the plist contains a set of parens to allow variable-length lists. - * These macros are used for both the debug and non-debug versions of the code. - */ -#define ACPI_INFO(plist) AcpiUtInfo plist -#define ACPI_WARNING(plist) AcpiUtWarning plist -#define ACPI_EXCEPTION(plist) AcpiUtException plist -#define ACPI_ERROR(plist) AcpiUtError plist -#define ACPI_ERROR_NAMESPACE(s,e) AcpiNsReportError (AE_INFO, s, e); -#define ACPI_ERROR_METHOD(s,n,p,e) AcpiNsReportMethodError (AE_INFO, s, n, p, e); - -#else - -/* No error messages */ - -#define ACPI_INFO(plist) -#define ACPI_WARNING(plist) -#define ACPI_EXCEPTION(plist) -#define ACPI_ERROR(plist) -#define ACPI_ERROR_NAMESPACE(s,e) -#define ACPI_ERROR_METHOD(s,n,p,e) -#endif - -/* - * Debug macros that are conditionally compiled - */ -#ifdef ACPI_DEBUG_OUTPUT - -/* - * Common parameters used for debug output functions: - * line number, function name, module(file) name, component ID - */ -#define ACPI_DEBUG_PARAMETERS __LINE__, ACPI_GET_FUNCTION_NAME, _AcpiModuleName, _COMPONENT - -/* - * Function entry tracing - */ - -/* - * If ACPI_GET_FUNCTION_NAME was not defined in the compiler-dependent header, - * define it now. This is the case where there the compiler does not support - * a __FUNCTION__ macro or equivalent. We save the function name on the - * local stack. - */ -#ifndef ACPI_GET_FUNCTION_NAME -#define ACPI_GET_FUNCTION_NAME _AcpiFunctionName -/* - * The Name parameter should be the procedure name as a quoted string. - * This is declared as a local string ("MyFunctionName") so that it can - * be also used by the function exit macros below. - * Note: (const char) is used to be compatible with the debug interfaces - * and macros such as __FUNCTION__. - */ -#define ACPI_FUNCTION_NAME(Name) const char *_AcpiFunctionName = #Name; - -#else -/* Compiler supports __FUNCTION__ (or equivalent) -- Ignore this macro */ - -#define ACPI_FUNCTION_NAME(Name) -#endif - -#define ACPI_FUNCTION_TRACE(a) ACPI_FUNCTION_NAME(a) \ - AcpiUtTrace(ACPI_DEBUG_PARAMETERS) -#define ACPI_FUNCTION_TRACE_PTR(a,b) ACPI_FUNCTION_NAME(a) \ - AcpiUtTracePtr(ACPI_DEBUG_PARAMETERS,(void *)b) -#define ACPI_FUNCTION_TRACE_U32(a,b) ACPI_FUNCTION_NAME(a) \ - AcpiUtTraceU32(ACPI_DEBUG_PARAMETERS,(UINT32)b) -#define ACPI_FUNCTION_TRACE_STR(a,b) ACPI_FUNCTION_NAME(a) \ - AcpiUtTraceStr(ACPI_DEBUG_PARAMETERS,(char *)b) - -#define ACPI_FUNCTION_ENTRY() AcpiUtTrackStackPtr() - -/* - * Function exit tracing. - * WARNING: These macros include a return statement. This is usually considered - * bad form, but having a separate exit macro is very ugly and difficult to maintain. - * One of the FUNCTION_TRACE macros above must be used in conjunction with these macros - * so that "_AcpiFunctionName" is defined. - * - * Note: the DO_WHILE0 macro is used to prevent some compilers from complaining - * about these constructs. - */ -#ifdef ACPI_USE_DO_WHILE_0 -#define ACPI_DO_WHILE0(a) do a while(0) -#else -#define ACPI_DO_WHILE0(a) a -#endif - -#define return_VOID ACPI_DO_WHILE0 ({ \ - AcpiUtExit (ACPI_DEBUG_PARAMETERS); \ - return;}) -/* - * There are two versions of most of the return macros. The default version is - * safer, since it avoids side-effects by guaranteeing that the argument will - * not be evaluated twice. - * - * A less-safe version of the macros is provided for optional use if the - * compiler uses excessive CPU stack (for example, this may happen in the - * debug case if code optimzation is disabled.) - */ -#ifndef ACPI_SIMPLE_RETURN_MACROS - -#define return_ACPI_STATUS(s) ACPI_DO_WHILE0 ({ \ - register ACPI_STATUS _s = (s); \ - AcpiUtStatusExit (ACPI_DEBUG_PARAMETERS, _s); \ - return (_s); }) -#define return_PTR(s) ACPI_DO_WHILE0 ({ \ - register void *_s = (void *) (s); \ - AcpiUtPtrExit (ACPI_DEBUG_PARAMETERS, (UINT8 *) _s); \ - return (_s); }) -#define return_VALUE(s) ACPI_DO_WHILE0 ({ \ - register ACPI_INTEGER _s = (s); \ - AcpiUtValueExit (ACPI_DEBUG_PARAMETERS, _s); \ - return (_s); }) -#define return_UINT8(s) ACPI_DO_WHILE0 ({ \ - register UINT8 _s = (UINT8) (s); \ - AcpiUtValueExit (ACPI_DEBUG_PARAMETERS, (ACPI_INTEGER) _s); \ - return (_s); }) -#define return_UINT32(s) ACPI_DO_WHILE0 ({ \ - register UINT32 _s = (UINT32) (s); \ - AcpiUtValueExit (ACPI_DEBUG_PARAMETERS, (ACPI_INTEGER) _s); \ - return (_s); }) -#else /* Use original less-safe macros */ - -#define return_ACPI_STATUS(s) ACPI_DO_WHILE0 ({ \ - AcpiUtStatusExit (ACPI_DEBUG_PARAMETERS, (s)); \ - return((s)); }) -#define return_PTR(s) ACPI_DO_WHILE0 ({ \ - AcpiUtPtrExit (ACPI_DEBUG_PARAMETERS, (UINT8 *) (s)); \ - return((s)); }) -#define return_VALUE(s) ACPI_DO_WHILE0 ({ \ - AcpiUtValueExit (ACPI_DEBUG_PARAMETERS, (ACPI_INTEGER) (s)); \ - return((s)); }) -#define return_UINT8(s) return_VALUE(s) -#define return_UINT32(s) return_VALUE(s) - -#endif /* ACPI_SIMPLE_RETURN_MACROS */ - - -/* Conditional execution */ - -#define ACPI_DEBUG_EXEC(a) a -#define ACPI_NORMAL_EXEC(a) - -#define ACPI_DEBUG_DEFINE(a) a; -#define ACPI_DEBUG_ONLY_MEMBERS(a) a; -#define _VERBOSE_STRUCTURES - - -/* Stack and buffer dumping */ - -#define ACPI_DUMP_STACK_ENTRY(a) AcpiExDumpOperand((a),0) -#define ACPI_DUMP_OPERANDS(a,b,c,d,e) AcpiExDumpOperands(a,b,c,d,e,_AcpiModuleName,__LINE__) - - -#define ACPI_DUMP_ENTRY(a,b) AcpiNsDumpEntry (a,b) -#define ACPI_DUMP_PATHNAME(a,b,c,d) AcpiNsDumpPathname(a,b,c,d) -#define ACPI_DUMP_RESOURCE_LIST(a) AcpiRsDumpResourceList(a) -#define ACPI_DUMP_BUFFER(a,b) AcpiUtDumpBuffer((UINT8 *)a,b,DB_BYTE_DISPLAY,_COMPONENT) - -/* - * Master debug print macros - * Print iff: - * 1) Debug print for the current component is enabled - * 2) Debug error level or trace level for the print statement is enabled - */ -#define ACPI_DEBUG_PRINT(plist) AcpiUtDebugPrint plist -#define ACPI_DEBUG_PRINT_RAW(plist) AcpiUtDebugPrintRaw plist - - -#else -/* - * This is the non-debug case -- make everything go away, - * leaving no executable debug code! - */ -#define ACPI_DEBUG_EXEC(a) -#define ACPI_NORMAL_EXEC(a) a; - -#define ACPI_DEBUG_DEFINE(a) -#define ACPI_DEBUG_ONLY_MEMBERS(a) -#define ACPI_FUNCTION_NAME(a) -#define ACPI_FUNCTION_TRACE(a) -#define ACPI_FUNCTION_TRACE_PTR(a,b) -#define ACPI_FUNCTION_TRACE_U32(a,b) -#define ACPI_FUNCTION_TRACE_STR(a,b) -#define ACPI_FUNCTION_EXIT -#define ACPI_FUNCTION_STATUS_EXIT(s) -#define ACPI_FUNCTION_VALUE_EXIT(s) -#define ACPI_FUNCTION_ENTRY() -#define ACPI_DUMP_STACK_ENTRY(a) -#define ACPI_DUMP_OPERANDS(a,b,c,d,e) -#define ACPI_DUMP_ENTRY(a,b) -#define ACPI_DUMP_TABLES(a,b) -#define ACPI_DUMP_PATHNAME(a,b,c,d) -#define ACPI_DUMP_RESOURCE_LIST(a) -#define ACPI_DUMP_BUFFER(a,b) -#define ACPI_DEBUG_PRINT(pl) -#define ACPI_DEBUG_PRINT_RAW(pl) - -#define return_VOID return -#define return_ACPI_STATUS(s) return(s) -#define return_VALUE(s) return(s) -#define return_UINT8(s) return(s) -#define return_UINT32(s) return(s) -#define return_PTR(s) return(s) - -#endif - -/* - * Some code only gets executed when the debugger is built in. - * Note that this is entirely independent of whether the - * DEBUG_PRINT stuff (set by ACPI_DEBUG_OUTPUT) is on, or not. - */ -#ifdef ACPI_DEBUGGER -#define ACPI_DEBUGGER_EXEC(a) a -#else -#define ACPI_DEBUGGER_EXEC(a) -#endif - - -/* - * For 16-bit code, we want to shrink some things even though - * we are using ACPI_DEBUG_OUTPUT to get the debug output - */ -#if ACPI_MACHINE_WIDTH == 16 -#undef ACPI_DEBUG_ONLY_MEMBERS -#undef _VERBOSE_STRUCTURES -#define ACPI_DEBUG_ONLY_MEMBERS(a) -#endif - - -#ifdef ACPI_DEBUG_OUTPUT -/* - * 1) Set name to blanks - * 2) Copy the object name - */ -#define ACPI_ADD_OBJECT_NAME(a,b) ACPI_MEMSET (a->Common.Name, ' ', sizeof (a->Common.Name));\ - ACPI_STRNCPY (a->Common.Name, AcpiGbl_NsTypeNames[b], sizeof (a->Common.Name)) -#else - -#define ACPI_ADD_OBJECT_NAME(a,b) -#endif - - -/* - * Memory allocation tracking (DEBUG ONLY) - */ -#ifndef ACPI_DBG_TRACK_ALLOCATIONS - -/* Memory allocation */ - -#define ACPI_ALLOCATE(a) AcpiUtAllocate((ACPI_SIZE)(a),_COMPONENT,_AcpiModuleName,__LINE__) -#define ACPI_ALLOCATE_ZEROED(a) AcpiUtAllocateZeroed((ACPI_SIZE)(a), _COMPONENT,_AcpiModuleName,__LINE__) -#define ACPI_FREE(a) AcpiOsFree(a) -#define ACPI_MEM_TRACKING(a) - -#else - -/* Memory allocation */ - -#define ACPI_ALLOCATE(a) AcpiUtAllocateAndTrack((ACPI_SIZE)(a),_COMPONENT,_AcpiModuleName,__LINE__) -#define ACPI_ALLOCATE_ZEROED(a) AcpiUtAllocateZeroedAndTrack((ACPI_SIZE)(a), _COMPONENT,_AcpiModuleName,__LINE__) -#define ACPI_FREE(a) AcpiUtFreeAndTrack(a,_COMPONENT,_AcpiModuleName,__LINE__) -#define ACPI_MEM_TRACKING(a) a - -#endif /* ACPI_DBG_TRACK_ALLOCATIONS */ - -#endif /* ACMACROS_H */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/acnames.h b/sys/contrib/dev/acpica-unix-20061109/include/acnames.h deleted file mode 100644 index 72ad9484ce..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/acnames.h +++ /dev/null @@ -1,158 +0,0 @@ -/****************************************************************************** - * - * Name: acnames.h - Global names and strings - * $Revision: 1.6 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACNAMES_H__ -#define __ACNAMES_H__ - -/* Method names - these methods can appear anywhere in the namespace */ - -#define METHOD_NAME__HID "_HID" -#define METHOD_NAME__CID "_CID" -#define METHOD_NAME__UID "_UID" -#define METHOD_NAME__ADR "_ADR" -#define METHOD_NAME__INI "_INI" -#define METHOD_NAME__STA "_STA" -#define METHOD_NAME__REG "_REG" -#define METHOD_NAME__SEG "_SEG" -#define METHOD_NAME__BBN "_BBN" -#define METHOD_NAME__PRT "_PRT" -#define METHOD_NAME__CRS "_CRS" -#define METHOD_NAME__PRS "_PRS" -#define METHOD_NAME__PRW "_PRW" -#define METHOD_NAME__SRS "_SRS" - -/* Method names - these methods must appear at the namespace root */ - -#define METHOD_NAME__BFS "\\_BFS" -#define METHOD_NAME__GTS "\\_GTS" -#define METHOD_NAME__PTS "\\_PTS" -#define METHOD_NAME__SST "\\_SI._SST" -#define METHOD_NAME__WAK "\\_WAK" - -/* Definitions of the predefined namespace names */ - -#define ACPI_UNKNOWN_NAME (UINT32) 0x3F3F3F3F /* Unknown name is "????" */ -#define ACPI_ROOT_NAME (UINT32) 0x5F5F5F5C /* Root name is "\___" */ - -#define ACPI_PREFIX_MIXED (UINT32) 0x69706341 /* "Acpi" */ -#define ACPI_PREFIX_LOWER (UINT32) 0x69706361 /* "acpi" */ - -#define ACPI_NS_ROOT_PATH "\\" -#define ACPI_NS_SYSTEM_BUS "_SB_" - -#endif /* __ACNAMES_H__ */ - - diff --git a/sys/contrib/dev/acpica-unix-20061109/include/acnamesp.h b/sys/contrib/dev/acpica-unix-20061109/include/acnamesp.h deleted file mode 100644 index 289534866b..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/acnamesp.h +++ /dev/null @@ -1,493 +0,0 @@ -/****************************************************************************** - * - * Name: acnamesp.h - Namespace subcomponent prototypes and defines - * $Revision: 1.151 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACNAMESP_H__ -#define __ACNAMESP_H__ - - -/* To search the entire name space, pass this as SearchBase */ - -#define ACPI_NS_ALL ((ACPI_HANDLE)0) - -/* - * Elements of AcpiNsProperties are bit significant - * and should be one-to-one with values of ACPI_OBJECT_TYPE - */ -#define ACPI_NS_NORMAL 0 -#define ACPI_NS_NEWSCOPE 1 /* a definition of this type opens a name scope */ -#define ACPI_NS_LOCAL 2 /* suppress search of enclosing scopes */ - -/* Flags for AcpiNsLookup, AcpiNsSearchAndEnter */ - -#define ACPI_NS_NO_UPSEARCH 0 -#define ACPI_NS_SEARCH_PARENT 0x01 -#define ACPI_NS_DONT_OPEN_SCOPE 0x02 -#define ACPI_NS_NO_PEER_SEARCH 0x04 -#define ACPI_NS_ERROR_IF_FOUND 0x08 -#define ACPI_NS_PREFIX_IS_SCOPE 0x10 -#define ACPI_NS_EXTERNAL 0x20 -#define ACPI_NS_TEMPORARY 0x40 - -/* Flags for AcpiNsWalkNamespace */ - -#define ACPI_NS_WALK_NO_UNLOCK 0 -#define ACPI_NS_WALK_UNLOCK 0x01 -#define ACPI_NS_WALK_TEMP_NODES 0x02 - - -/* - * nsinit - Namespace initialization - */ -ACPI_STATUS -AcpiNsInitializeObjects ( - void); - -ACPI_STATUS -AcpiNsInitializeDevices ( - void); - - -/* - * nsload - Namespace loading - */ -ACPI_STATUS -AcpiNsLoadNamespace ( - void); - -ACPI_STATUS -AcpiNsLoadTable ( - ACPI_NATIVE_UINT TableIndex, - ACPI_NAMESPACE_NODE *Node); - - -/* - * nswalk - walk the namespace - */ -ACPI_STATUS -AcpiNsWalkNamespace ( - ACPI_OBJECT_TYPE Type, - ACPI_HANDLE StartObject, - UINT32 MaxDepth, - UINT32 Flags, - ACPI_WALK_CALLBACK UserFunction, - void *Context, - void **ReturnValue); - -ACPI_NAMESPACE_NODE * -AcpiNsGetNextNode ( - ACPI_OBJECT_TYPE Type, - ACPI_NAMESPACE_NODE *Parent, - ACPI_NAMESPACE_NODE *Child); - - -/* - * nsparse - table parsing - */ -ACPI_STATUS -AcpiNsParseTable ( - ACPI_NATIVE_UINT TableIndex, - ACPI_NAMESPACE_NODE *StartNode); - -ACPI_STATUS -AcpiNsOneCompleteParse ( - ACPI_NATIVE_UINT PassNumber, - ACPI_NATIVE_UINT TableIndex); - - -/* - * nsaccess - Top-level namespace access - */ -ACPI_STATUS -AcpiNsRootInitialize ( - void); - -ACPI_STATUS -AcpiNsLookup ( - ACPI_GENERIC_STATE *ScopeInfo, - char *Name, - ACPI_OBJECT_TYPE Type, - ACPI_INTERPRETER_MODE InterpreterMode, - UINT32 Flags, - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE **RetNode); - - -/* - * nsalloc - Named object allocation/deallocation - */ -ACPI_NAMESPACE_NODE * -AcpiNsCreateNode ( - UINT32 Name); - -void -AcpiNsDeleteNode ( - ACPI_NAMESPACE_NODE *Node); - -void -AcpiNsDeleteNamespaceSubtree ( - ACPI_NAMESPACE_NODE *ParentHandle); - -void -AcpiNsDeleteNamespaceByOwner ( - ACPI_OWNER_ID OwnerId); - -void -AcpiNsDetachObject ( - ACPI_NAMESPACE_NODE *Node); - -void -AcpiNsDeleteChildren ( - ACPI_NAMESPACE_NODE *Parent); - -int -AcpiNsCompareNames ( - char *Name1, - char *Name2); - - -/* - * nsdump - Namespace dump/print utilities - */ -void -AcpiNsDumpTables ( - ACPI_HANDLE SearchBase, - UINT32 MaxDepth); - -void -AcpiNsDumpEntry ( - ACPI_HANDLE Handle, - UINT32 DebugLevel); - -void -AcpiNsDumpPathname ( - ACPI_HANDLE Handle, - char *Msg, - UINT32 Level, - UINT32 Component); - -void -AcpiNsPrintPathname ( - UINT32 NumSegments, - char *Pathname); - -ACPI_STATUS -AcpiNsDumpOneObject ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue); - -void -AcpiNsDumpObjects ( - ACPI_OBJECT_TYPE Type, - UINT8 DisplayType, - UINT32 MaxDepth, - ACPI_OWNER_ID OwnerId, - ACPI_HANDLE StartHandle); - - -/* - * nseval - Namespace evaluation functions - */ -ACPI_STATUS -AcpiNsEvaluate ( - ACPI_EVALUATE_INFO *Info); - - -/* - * nsnames - Name and Scope manipulation - */ -UINT32 -AcpiNsOpensScope ( - ACPI_OBJECT_TYPE Type); - -void -AcpiNsBuildExternalPath ( - ACPI_NAMESPACE_NODE *Node, - ACPI_SIZE Size, - char *NameBuffer); - -char * -AcpiNsGetExternalPathname ( - ACPI_NAMESPACE_NODE *Node); - -char * -AcpiNsNameOfCurrentScope ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiNsHandleToPathname ( - ACPI_HANDLE TargetHandle, - ACPI_BUFFER *Buffer); - -BOOLEAN -AcpiNsPatternMatch ( - ACPI_NAMESPACE_NODE *ObjNode, - char *SearchFor); - -ACPI_STATUS -AcpiNsGetNode ( - ACPI_NAMESPACE_NODE *PrefixNode, - char *ExternalPathname, - UINT32 Flags, - ACPI_NAMESPACE_NODE **OutNode); - -ACPI_SIZE -AcpiNsGetPathnameLength ( - ACPI_NAMESPACE_NODE *Node); - - -/* - * nsobject - Object management for namespace nodes - */ -ACPI_STATUS -AcpiNsAttachObject ( - ACPI_NAMESPACE_NODE *Node, - ACPI_OPERAND_OBJECT *Object, - ACPI_OBJECT_TYPE Type); - -ACPI_OPERAND_OBJECT * -AcpiNsGetAttachedObject ( - ACPI_NAMESPACE_NODE *Node); - -ACPI_OPERAND_OBJECT * -AcpiNsGetSecondaryObject ( - ACPI_OPERAND_OBJECT *ObjDesc); - -ACPI_STATUS -AcpiNsAttachData ( - ACPI_NAMESPACE_NODE *Node, - ACPI_OBJECT_HANDLER Handler, - void *Data); - -ACPI_STATUS -AcpiNsDetachData ( - ACPI_NAMESPACE_NODE *Node, - ACPI_OBJECT_HANDLER Handler); - -ACPI_STATUS -AcpiNsGetAttachedData ( - ACPI_NAMESPACE_NODE *Node, - ACPI_OBJECT_HANDLER Handler, - void **Data); - - -/* - * nssearch - Namespace searching and entry - */ -ACPI_STATUS -AcpiNsSearchAndEnter ( - UINT32 EntryName, - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE *Node, - ACPI_INTERPRETER_MODE InterpreterMode, - ACPI_OBJECT_TYPE Type, - UINT32 Flags, - ACPI_NAMESPACE_NODE **RetNode); - -ACPI_STATUS -AcpiNsSearchOneScope ( - UINT32 EntryName, - ACPI_NAMESPACE_NODE *Node, - ACPI_OBJECT_TYPE Type, - ACPI_NAMESPACE_NODE **RetNode); - -void -AcpiNsInstallNode ( - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE *ParentNode, - ACPI_NAMESPACE_NODE *Node, - ACPI_OBJECT_TYPE Type); - - -/* - * nsutils - Utility functions - */ -BOOLEAN -AcpiNsValidRootPrefix ( - char Prefix); - -ACPI_OBJECT_TYPE -AcpiNsGetType ( - ACPI_NAMESPACE_NODE *Node); - -UINT32 -AcpiNsLocal ( - ACPI_OBJECT_TYPE Type); - -void -AcpiNsReportError ( - char *ModuleName, - UINT32 LineNumber, - char *InternalName, - ACPI_STATUS LookupStatus); - -void -AcpiNsReportMethodError ( - char *ModuleName, - UINT32 LineNumber, - char *Message, - ACPI_NAMESPACE_NODE *Node, - char *Path, - ACPI_STATUS LookupStatus); - -void -AcpiNsPrintNodePathname ( - ACPI_NAMESPACE_NODE *Node, - char *Msg); - -ACPI_STATUS -AcpiNsBuildInternalName ( - ACPI_NAMESTRING_INFO *Info); - -void -AcpiNsGetInternalNameLength ( - ACPI_NAMESTRING_INFO *Info); - -ACPI_STATUS -AcpiNsInternalizeName ( - char *DottedName, - char **ConvertedName); - -ACPI_STATUS -AcpiNsExternalizeName ( - UINT32 InternalNameLength, - char *InternalName, - UINT32 *ConvertedNameLength, - char **ConvertedName); - -ACPI_NAMESPACE_NODE * -AcpiNsMapHandleToNode ( - ACPI_HANDLE Handle); - -ACPI_HANDLE -AcpiNsConvertEntryToHandle( - ACPI_NAMESPACE_NODE *Node); - -void -AcpiNsTerminate ( - void); - -ACPI_NAMESPACE_NODE * -AcpiNsGetParentNode ( - ACPI_NAMESPACE_NODE *Node); - - -ACPI_NAMESPACE_NODE * -AcpiNsGetNextValidNode ( - ACPI_NAMESPACE_NODE *Node); - -#endif /* __ACNAMESP_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/acobject.h b/sys/contrib/dev/acpica-unix-20061109/include/acobject.h deleted file mode 100644 index 29c0764509..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/acobject.h +++ /dev/null @@ -1,618 +0,0 @@ - -/****************************************************************************** - * - * Name: acobject.h - Definition of ACPI_OPERAND_OBJECT (Internal object only) - * $Revision: 1.141 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef _ACOBJECT_H -#define _ACOBJECT_H - -/* acpisrc:StructDefs -- for acpisrc conversion */ - - -/* - * The ACPI_OPERAND_OBJECT is used to pass AML operands from the dispatcher - * to the interpreter, and to keep track of the various handlers such as - * address space handlers and notify handlers. The object is a constant - * size in order to allow it to be cached and reused. - * - * Note: The object is optimized to be aligned and will not work if it is - * byte-packed. - */ -#if ACPI_MACHINE_WIDTH == 64 -#pragma pack(8) -#else -#pragma pack(4) -#endif - -/******************************************************************************* - * - * Common Descriptors - * - ******************************************************************************/ - -/* - * Common area for all objects. - * - * DescriptorType is used to differentiate between internal descriptors, and - * must be in the same place across all descriptors - * - * Note: The DescriptorType and Type fields must appear in the identical - * position in both the ACPI_NAMESPACE_NODE and ACPI_OPERAND_OBJECT - * structures. - */ -#define ACPI_OBJECT_COMMON_HEADER \ - union acpi_operand_object *NextObject; /* Objects linked to parent NS node */\ - UINT8 DescriptorType; /* To differentiate various internal objs */\ - UINT8 Type; /* ACPI_OBJECT_TYPE */\ - UINT16 ReferenceCount; /* For object deletion management */\ - UINT8 Flags; - /* - * Note: There are 3 bytes available here before the - * next natural alignment boundary (for both 32/64 cases) - */ - -/* Values for Flag byte above */ - -#define AOPOBJ_AML_CONSTANT 0x01 -#define AOPOBJ_STATIC_POINTER 0x02 -#define AOPOBJ_DATA_VALID 0x04 -#define AOPOBJ_OBJECT_INITIALIZED 0x08 -#define AOPOBJ_SETUP_COMPLETE 0x10 -#define AOPOBJ_SINGLE_DATUM 0x20 -#define AOPOBJ_INVALID 0x40 /* Used if host OS won't allow an OpRegion address */ - - -/****************************************************************************** - * - * Basic data types - * - *****************************************************************************/ - -typedef struct acpi_object_common -{ - ACPI_OBJECT_COMMON_HEADER - -} ACPI_OBJECT_COMMON; - - -typedef struct acpi_object_integer -{ - ACPI_OBJECT_COMMON_HEADER - UINT8 Fill[3]; /* Prevent warning on some compilers */ - ACPI_INTEGER Value; - -} ACPI_OBJECT_INTEGER; - - -/* - * Note: The String and Buffer object must be identical through the Pointer - * and length elements. There is code that depends on this. - * - * Fields common to both Strings and Buffers - */ -#define ACPI_COMMON_BUFFER_INFO(_Type) \ - _Type *Pointer; \ - UINT32 Length; - - -typedef struct acpi_object_string /* Null terminated, ASCII characters only */ -{ - ACPI_OBJECT_COMMON_HEADER - ACPI_COMMON_BUFFER_INFO (char) /* String in AML stream or allocated string */ - -} ACPI_OBJECT_STRING; - - -typedef struct acpi_object_buffer -{ - ACPI_OBJECT_COMMON_HEADER - ACPI_COMMON_BUFFER_INFO (UINT8) /* Buffer in AML stream or allocated buffer */ - UINT32 AmlLength; - UINT8 *AmlStart; - ACPI_NAMESPACE_NODE *Node; /* Link back to parent node */ - -} ACPI_OBJECT_BUFFER; - - -typedef struct acpi_object_package -{ - ACPI_OBJECT_COMMON_HEADER - ACPI_NAMESPACE_NODE *Node; /* Link back to parent node */ - union acpi_operand_object **Elements; /* Array of pointers to AcpiObjects */ - UINT8 *AmlStart; - UINT32 AmlLength; - UINT32 Count; /* # of elements in package */ - -} ACPI_OBJECT_PACKAGE; - - -/****************************************************************************** - * - * Complex data types - * - *****************************************************************************/ - -typedef struct acpi_object_event -{ - ACPI_OBJECT_COMMON_HEADER - ACPI_SEMAPHORE OsSemaphore; /* Actual OS synchronization object */ - -} ACPI_OBJECT_EVENT; - - -typedef struct acpi_object_mutex -{ - ACPI_OBJECT_COMMON_HEADER - UINT8 SyncLevel; /* 0-15, specified in Mutex() call */ - UINT16 AcquisitionDepth; /* Allow multiple Acquires, same thread */ - struct acpi_thread_state *OwnerThread; /* Current owner of the mutex */ - ACPI_MUTEX OsMutex; /* Actual OS synchronization object */ - union acpi_operand_object *Prev; /* Link for list of acquired mutexes */ - union acpi_operand_object *Next; /* Link for list of acquired mutexes */ - ACPI_NAMESPACE_NODE *Node; /* Containing namespace node */ - UINT8 OriginalSyncLevel; /* Owner's original sync level (0-15) */ - -} ACPI_OBJECT_MUTEX; - - -typedef struct acpi_object_region -{ - ACPI_OBJECT_COMMON_HEADER - UINT8 SpaceId; - ACPI_NAMESPACE_NODE *Node; /* Containing namespace node */ - union acpi_operand_object *Handler; /* Handler for region access */ - union acpi_operand_object *Next; - ACPI_PHYSICAL_ADDRESS Address; - UINT32 Length; - -} ACPI_OBJECT_REGION; - - -typedef struct acpi_object_method -{ - ACPI_OBJECT_COMMON_HEADER - UINT8 MethodFlags; - UINT8 ParamCount; - UINT8 SyncLevel; - union acpi_operand_object *Mutex; - UINT8 *AmlStart; - ACPI_INTERNAL_METHOD Implementation; - UINT32 AmlLength; - UINT8 ThreadCount; - ACPI_OWNER_ID OwnerId; - -} ACPI_OBJECT_METHOD; - - -/****************************************************************************** - * - * Objects that can be notified. All share a common NotifyInfo area. - * - *****************************************************************************/ - -/* - * Common fields for objects that support ASL notifications - */ -#define ACPI_COMMON_NOTIFY_INFO \ - union acpi_operand_object *SystemNotify; /* Handler for system notifies */\ - union acpi_operand_object *DeviceNotify; /* Handler for driver notifies */\ - union acpi_operand_object *Handler; /* Handler for Address space */ - - -typedef struct acpi_object_notify_common /* COMMON NOTIFY for POWER, PROCESSOR, DEVICE, and THERMAL */ -{ - ACPI_OBJECT_COMMON_HEADER - ACPI_COMMON_NOTIFY_INFO - -} ACPI_OBJECT_NOTIFY_COMMON; - - -typedef struct acpi_object_device -{ - ACPI_OBJECT_COMMON_HEADER - ACPI_COMMON_NOTIFY_INFO - ACPI_GPE_BLOCK_INFO *GpeBlock; - -} ACPI_OBJECT_DEVICE; - - -typedef struct acpi_object_power_resource -{ - ACPI_OBJECT_COMMON_HEADER - ACPI_COMMON_NOTIFY_INFO - UINT32 SystemLevel; - UINT32 ResourceOrder; - -} ACPI_OBJECT_POWER_RESOURCE; - - -typedef struct acpi_object_processor -{ - ACPI_OBJECT_COMMON_HEADER - - /* The next two fields take advantage of the 3-byte space before NOTIFY_INFO */ - - UINT8 ProcId; - UINT8 Length; - ACPI_COMMON_NOTIFY_INFO - ACPI_IO_ADDRESS Address; - -} ACPI_OBJECT_PROCESSOR; - - -typedef struct acpi_object_thermal_zone -{ - ACPI_OBJECT_COMMON_HEADER - ACPI_COMMON_NOTIFY_INFO - -} ACPI_OBJECT_THERMAL_ZONE; - - -/****************************************************************************** - * - * Fields. All share a common header/info field. - * - *****************************************************************************/ - -/* - * Common bitfield for the field objects - * "Field Datum" -- a datum from the actual field object - * "Buffer Datum" -- a datum from a user buffer, read from or to be written to the field - */ -#define ACPI_COMMON_FIELD_INFO \ - UINT8 FieldFlags; /* Access, update, and lock bits */\ - UINT8 Attribute; /* From AccessAs keyword */\ - UINT8 AccessByteWidth; /* Read/Write size in bytes */\ - ACPI_NAMESPACE_NODE *Node; /* Link back to parent node */\ - UINT32 BitLength; /* Length of field in bits */\ - UINT32 BaseByteOffset; /* Byte offset within containing object */\ - UINT32 Value; /* Value to store into the Bank or Index register */\ - UINT8 StartFieldBitOffset;/* Bit offset within first field datum (0-63) */\ - UINT8 AccessBitWidth; /* Read/Write size in bits (8-64) */ - - -typedef struct acpi_object_field_common /* COMMON FIELD (for BUFFER, REGION, BANK, and INDEX fields) */ -{ - ACPI_OBJECT_COMMON_HEADER - ACPI_COMMON_FIELD_INFO - union acpi_operand_object *RegionObj; /* Parent Operation Region object (REGION/BANK fields only) */ - -} ACPI_OBJECT_FIELD_COMMON; - - -typedef struct acpi_object_region_field -{ - ACPI_OBJECT_COMMON_HEADER - ACPI_COMMON_FIELD_INFO - union acpi_operand_object *RegionObj; /* Containing OpRegion object */ - -} ACPI_OBJECT_REGION_FIELD; - - -typedef struct acpi_object_bank_field -{ - ACPI_OBJECT_COMMON_HEADER - ACPI_COMMON_FIELD_INFO - union acpi_operand_object *RegionObj; /* Containing OpRegion object */ - union acpi_operand_object *BankObj; /* BankSelect Register object */ - -} ACPI_OBJECT_BANK_FIELD; - - -typedef struct acpi_object_index_field -{ - ACPI_OBJECT_COMMON_HEADER - ACPI_COMMON_FIELD_INFO - - /* - * No "RegionObj" pointer needed since the Index and Data registers - * are each field definitions unto themselves. - */ - union acpi_operand_object *IndexObj; /* Index register */ - union acpi_operand_object *DataObj; /* Data register */ - -} ACPI_OBJECT_INDEX_FIELD; - - -/* The BufferField is different in that it is part of a Buffer, not an OpRegion */ - -typedef struct acpi_object_buffer_field -{ - ACPI_OBJECT_COMMON_HEADER - ACPI_COMMON_FIELD_INFO - union acpi_operand_object *BufferObj; /* Containing Buffer object */ - -} ACPI_OBJECT_BUFFER_FIELD; - - -/****************************************************************************** - * - * Objects for handlers - * - *****************************************************************************/ - -typedef struct acpi_object_notify_handler -{ - ACPI_OBJECT_COMMON_HEADER - ACPI_NAMESPACE_NODE *Node; /* Parent device */ - ACPI_NOTIFY_HANDLER Handler; - void *Context; - -} ACPI_OBJECT_NOTIFY_HANDLER; - - -typedef struct acpi_object_addr_handler -{ - ACPI_OBJECT_COMMON_HEADER - UINT8 SpaceId; - UINT8 HandlerFlags; - ACPI_ADR_SPACE_HANDLER Handler; - ACPI_NAMESPACE_NODE *Node; /* Parent device */ - void *Context; - ACPI_ADR_SPACE_SETUP Setup; - union acpi_operand_object *RegionList; /* regions using this handler */ - union acpi_operand_object *Next; - -} ACPI_OBJECT_ADDR_HANDLER; - -/* Flags for address handler (HandlerFlags) */ - -#define ACPI_ADDR_HANDLER_DEFAULT_INSTALLED 0x01 - - -/****************************************************************************** - * - * Special internal objects - * - *****************************************************************************/ - -/* - * The Reference object type is used for these opcodes: - * Arg[0-6], Local[0-7], IndexOp, NameOp, ZeroOp, OneOp, OnesOp, DebugOp - */ -typedef struct acpi_object_reference -{ - ACPI_OBJECT_COMMON_HEADER - UINT8 TargetType; /* Used for IndexOp */ - UINT16 Opcode; - void *Object; /* NameOp=>HANDLE to obj, IndexOp=>ACPI_OPERAND_OBJECT */ - ACPI_NAMESPACE_NODE *Node; - union acpi_operand_object **Where; - UINT32 Offset; /* Used for ArgOp, LocalOp, and IndexOp */ - -} ACPI_OBJECT_REFERENCE; - - -/* - * Extra object is used as additional storage for types that - * have AML code in their declarations (TermArgs) that must be - * evaluated at run time. - * - * Currently: Region and FieldUnit types - */ -typedef struct acpi_object_extra -{ - ACPI_OBJECT_COMMON_HEADER - ACPI_NAMESPACE_NODE *Method_REG; /* _REG method for this region (if any) */ - void *RegionContext; /* Region-specific data */ - UINT8 *AmlStart; - UINT32 AmlLength; - -} ACPI_OBJECT_EXTRA; - - -/* Additional data that can be attached to namespace nodes */ - -typedef struct acpi_object_data -{ - ACPI_OBJECT_COMMON_HEADER - ACPI_OBJECT_HANDLER Handler; - void *Pointer; - -} ACPI_OBJECT_DATA; - - -/* Structure used when objects are cached for reuse */ - -typedef struct acpi_object_cache_list -{ - ACPI_OBJECT_COMMON_HEADER - union acpi_operand_object *Next; /* Link for object cache and internal lists*/ - -} ACPI_OBJECT_CACHE_LIST; - - -/****************************************************************************** - * - * ACPI_OPERAND_OBJECT Descriptor - a giant union of all of the above - * - *****************************************************************************/ - -typedef union acpi_operand_object -{ - ACPI_OBJECT_COMMON Common; - ACPI_OBJECT_INTEGER Integer; - ACPI_OBJECT_STRING String; - ACPI_OBJECT_BUFFER Buffer; - ACPI_OBJECT_PACKAGE Package; - ACPI_OBJECT_EVENT Event; - ACPI_OBJECT_METHOD Method; - ACPI_OBJECT_MUTEX Mutex; - ACPI_OBJECT_REGION Region; - ACPI_OBJECT_NOTIFY_COMMON CommonNotify; - ACPI_OBJECT_DEVICE Device; - ACPI_OBJECT_POWER_RESOURCE PowerResource; - ACPI_OBJECT_PROCESSOR Processor; - ACPI_OBJECT_THERMAL_ZONE ThermalZone; - ACPI_OBJECT_FIELD_COMMON CommonField; - ACPI_OBJECT_REGION_FIELD Field; - ACPI_OBJECT_BUFFER_FIELD BufferField; - ACPI_OBJECT_BANK_FIELD BankField; - ACPI_OBJECT_INDEX_FIELD IndexField; - ACPI_OBJECT_NOTIFY_HANDLER Notify; - ACPI_OBJECT_ADDR_HANDLER AddressSpace; - ACPI_OBJECT_REFERENCE Reference; - ACPI_OBJECT_EXTRA Extra; - ACPI_OBJECT_DATA Data; - ACPI_OBJECT_CACHE_LIST Cache; - -} ACPI_OPERAND_OBJECT; - - -/****************************************************************************** - * - * ACPI_DESCRIPTOR - objects that share a common descriptor identifier - * - *****************************************************************************/ - -/* Object descriptor types */ - -#define ACPI_DESC_TYPE_CACHED 0x01 /* Used only when object is cached */ -#define ACPI_DESC_TYPE_STATE 0x02 -#define ACPI_DESC_TYPE_STATE_UPDATE 0x03 -#define ACPI_DESC_TYPE_STATE_PACKAGE 0x04 -#define ACPI_DESC_TYPE_STATE_CONTROL 0x05 -#define ACPI_DESC_TYPE_STATE_RPSCOPE 0x06 -#define ACPI_DESC_TYPE_STATE_PSCOPE 0x07 -#define ACPI_DESC_TYPE_STATE_WSCOPE 0x08 -#define ACPI_DESC_TYPE_STATE_RESULT 0x09 -#define ACPI_DESC_TYPE_STATE_NOTIFY 0x0A -#define ACPI_DESC_TYPE_STATE_THREAD 0x0B -#define ACPI_DESC_TYPE_WALK 0x0C -#define ACPI_DESC_TYPE_PARSER 0x0D -#define ACPI_DESC_TYPE_OPERAND 0x0E -#define ACPI_DESC_TYPE_NAMED 0x0F -#define ACPI_DESC_TYPE_MAX 0x0F - - -typedef struct acpi_common_descriptor -{ - void *CommonPointer; - UINT8 DescriptorType; /* To differentiate various internal objs */ - -} ACPI_COMMON_DESCRIPTOR; - -typedef union acpi_descriptor -{ - ACPI_COMMON_DESCRIPTOR Common; - ACPI_OPERAND_OBJECT Object; - ACPI_NAMESPACE_NODE Node; - ACPI_PARSE_OBJECT Op; - -} ACPI_DESCRIPTOR; - -#pragma pack() - -#endif /* _ACOBJECT_H */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/acopcode.h b/sys/contrib/dev/acpica-unix-20061109/include/acopcode.h deleted file mode 100644 index c102c32b6d..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/acopcode.h +++ /dev/null @@ -1,398 +0,0 @@ -/****************************************************************************** - * - * Name: acopcode.h - AML opcode information for the AML parser and interpreter - * $Revision: 1.6 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACOPCODE_H__ -#define __ACOPCODE_H__ - -#define MAX_EXTENDED_OPCODE 0x88 -#define NUM_EXTENDED_OPCODE (MAX_EXTENDED_OPCODE + 1) -#define MAX_INTERNAL_OPCODE -#define NUM_INTERNAL_OPCODE (MAX_INTERNAL_OPCODE + 1) - -/* Used for non-assigned opcodes */ - -#define _UNK 0x6B - -/* - * Reserved ASCII characters. Do not use any of these for - * internal opcodes, since they are used to differentiate - * name strings from AML opcodes - */ -#define _ASC 0x6C -#define _NAM 0x6C -#define _PFX 0x6D - - -/* - * All AML opcodes and the parse-time arguments for each. Used by the AML - * parser Each list is compressed into a 32-bit number and stored in the - * master opcode table (in psopcode.c). - */ -#define ARGP_ACCESSFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING) -#define ARGP_ACQUIRE_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_WORDDATA) -#define ARGP_ADD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_ALIAS_OP ARGP_LIST2 (ARGP_NAMESTRING, ARGP_NAME) -#define ARGP_ARG0 ARG_NONE -#define ARGP_ARG1 ARG_NONE -#define ARGP_ARG2 ARG_NONE -#define ARGP_ARG3 ARG_NONE -#define ARGP_ARG4 ARG_NONE -#define ARGP_ARG5 ARG_NONE -#define ARGP_ARG6 ARG_NONE -#define ARGP_BANK_FIELD_OP ARGP_LIST6 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_NAMESTRING,ARGP_TERMARG, ARGP_BYTEDATA, ARGP_FIELDLIST) -#define ARGP_BIT_AND_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_BIT_NAND_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_BIT_NOR_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_BIT_NOT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) -#define ARGP_BIT_OR_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_BIT_XOR_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_BREAK_OP ARG_NONE -#define ARGP_BREAK_POINT_OP ARG_NONE -#define ARGP_BUFFER_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_BYTELIST) -#define ARGP_BYTE_OP ARGP_LIST1 (ARGP_BYTEDATA) -#define ARGP_BYTELIST_OP ARGP_LIST1 (ARGP_NAMESTRING) -#define ARGP_CONCAT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_CONCAT_RES_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_COND_REF_OF_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_SUPERNAME) -#define ARGP_CONTINUE_OP ARG_NONE -#define ARGP_COPY_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_SIMPLENAME) -#define ARGP_CREATE_BIT_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) -#define ARGP_CREATE_BYTE_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) -#define ARGP_CREATE_DWORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) -#define ARGP_CREATE_FIELD_OP ARGP_LIST4 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) -#define ARGP_CREATE_QWORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) -#define ARGP_CREATE_WORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) -#define ARGP_DATA_REGION_OP ARGP_LIST4 (ARGP_NAME, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_DEBUG_OP ARG_NONE -#define ARGP_DECREMENT_OP ARGP_LIST1 (ARGP_SUPERNAME) -#define ARGP_DEREF_OF_OP ARGP_LIST1 (ARGP_TERMARG) -#define ARGP_DEVICE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_OBJLIST) -#define ARGP_DIVIDE_OP ARGP_LIST4 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET, ARGP_TARGET) -#define ARGP_DWORD_OP ARGP_LIST1 (ARGP_DWORDDATA) -#define ARGP_ELSE_OP ARGP_LIST2 (ARGP_PKGLENGTH, ARGP_TERMLIST) -#define ARGP_EVENT_OP ARGP_LIST1 (ARGP_NAME) -#define ARGP_FATAL_OP ARGP_LIST3 (ARGP_BYTEDATA, ARGP_DWORDDATA, ARGP_TERMARG) -#define ARGP_FIELD_OP ARGP_LIST4 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_BYTEDATA, ARGP_FIELDLIST) -#define ARGP_FIND_SET_LEFT_BIT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) -#define ARGP_FIND_SET_RIGHT_BIT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) -#define ARGP_FROM_BCD_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) -#define ARGP_IF_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_TERMLIST) -#define ARGP_INCREMENT_OP ARGP_LIST1 (ARGP_SUPERNAME) -#define ARGP_INDEX_FIELD_OP ARGP_LIST5 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_NAMESTRING,ARGP_BYTEDATA, ARGP_FIELDLIST) -#define ARGP_INDEX_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_LAND_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_LEQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_LGREATER_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_LGREATEREQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_LLESS_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_LLESSEQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_LNOT_OP ARGP_LIST1 (ARGP_TERMARG) -#define ARGP_LNOTEQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_LOAD_OP ARGP_LIST2 (ARGP_NAMESTRING, ARGP_SUPERNAME) -#define ARGP_LOAD_TABLE_OP ARGP_LIST6 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_LOCAL0 ARG_NONE -#define ARGP_LOCAL1 ARG_NONE -#define ARGP_LOCAL2 ARG_NONE -#define ARGP_LOCAL3 ARG_NONE -#define ARGP_LOCAL4 ARG_NONE -#define ARGP_LOCAL5 ARG_NONE -#define ARGP_LOCAL6 ARG_NONE -#define ARGP_LOCAL7 ARG_NONE -#define ARGP_LOR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_MATCH_OP ARGP_LIST6 (ARGP_TERMARG, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_METHOD_OP ARGP_LIST4 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_TERMLIST) -#define ARGP_METHODCALL_OP ARGP_LIST1 (ARGP_NAMESTRING) -#define ARGP_MID_OP ARGP_LIST4 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_MOD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_MULTIPLY_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_MUTEX_OP ARGP_LIST2 (ARGP_NAME, ARGP_BYTEDATA) -#define ARGP_NAME_OP ARGP_LIST2 (ARGP_NAME, ARGP_DATAOBJ) -#define ARGP_NAMEDFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING) -#define ARGP_NAMEPATH_OP ARGP_LIST1 (ARGP_NAMESTRING) -#define ARGP_NOOP_OP ARG_NONE -#define ARGP_NOTIFY_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_TERMARG) -#define ARGP_ONE_OP ARG_NONE -#define ARGP_ONES_OP ARG_NONE -#define ARGP_PACKAGE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_BYTEDATA, ARGP_DATAOBJLIST) -#define ARGP_POWER_RES_OP ARGP_LIST5 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_WORDDATA, ARGP_OBJLIST) -#define ARGP_PROCESSOR_OP ARGP_LIST6 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_DWORDDATA, ARGP_BYTEDATA, ARGP_OBJLIST) -#define ARGP_QWORD_OP ARGP_LIST1 (ARGP_QWORDDATA) -#define ARGP_REF_OF_OP ARGP_LIST1 (ARGP_SUPERNAME) -#define ARGP_REGION_OP ARGP_LIST4 (ARGP_NAME, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_TERMARG) -#define ARGP_RELEASE_OP ARGP_LIST1 (ARGP_SUPERNAME) -#define ARGP_RESERVEDFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING) -#define ARGP_RESET_OP ARGP_LIST1 (ARGP_SUPERNAME) -#define ARGP_RETURN_OP ARGP_LIST1 (ARGP_TERMARG) -#define ARGP_REVISION_OP ARG_NONE -#define ARGP_SCOPE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_TERMLIST) -#define ARGP_SHIFT_LEFT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_SHIFT_RIGHT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_SIGNAL_OP ARGP_LIST1 (ARGP_SUPERNAME) -#define ARGP_SIZE_OF_OP ARGP_LIST1 (ARGP_SUPERNAME) -#define ARGP_SLEEP_OP ARGP_LIST1 (ARGP_TERMARG) -#define ARGP_STALL_OP ARGP_LIST1 (ARGP_TERMARG) -#define ARGP_STATICSTRING_OP ARGP_LIST1 (ARGP_NAMESTRING) -#define ARGP_STORE_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_SUPERNAME) -#define ARGP_STRING_OP ARGP_LIST1 (ARGP_CHARLIST) -#define ARGP_SUBTRACT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_THERMAL_ZONE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_OBJLIST) -#define ARGP_TIMER_OP ARG_NONE -#define ARGP_TO_BCD_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) -#define ARGP_TO_BUFFER_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) -#define ARGP_TO_DEC_STR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) -#define ARGP_TO_HEX_STR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) -#define ARGP_TO_INTEGER_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) -#define ARGP_TO_STRING_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_TYPE_OP ARGP_LIST1 (ARGP_SUPERNAME) -#define ARGP_UNLOAD_OP ARGP_LIST1 (ARGP_SUPERNAME) -#define ARGP_VAR_PACKAGE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_DATAOBJLIST) -#define ARGP_WAIT_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_TERMARG) -#define ARGP_WHILE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_TERMLIST) -#define ARGP_WORD_OP ARGP_LIST1 (ARGP_WORDDATA) -#define ARGP_ZERO_OP ARG_NONE - - -/* - * All AML opcodes and the runtime arguments for each. Used by the AML - * interpreter Each list is compressed into a 32-bit number and stored - * in the master opcode table (in psopcode.c). - * - * (Used by PrepOperands procedure and the ASL Compiler) - */ -#define ARGI_ACCESSFIELD_OP ARGI_INVALID_OPCODE -#define ARGI_ACQUIRE_OP ARGI_LIST2 (ARGI_MUTEX, ARGI_INTEGER) -#define ARGI_ADD_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_ALIAS_OP ARGI_INVALID_OPCODE -#define ARGI_ARG0 ARG_NONE -#define ARGI_ARG1 ARG_NONE -#define ARGI_ARG2 ARG_NONE -#define ARGI_ARG3 ARG_NONE -#define ARGI_ARG4 ARG_NONE -#define ARGI_ARG5 ARG_NONE -#define ARGI_ARG6 ARG_NONE -#define ARGI_BANK_FIELD_OP ARGI_INVALID_OPCODE -#define ARGI_BIT_AND_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_BIT_NAND_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_BIT_NOR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_BIT_NOT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_BIT_OR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_BIT_XOR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_BREAK_OP ARG_NONE -#define ARGI_BREAK_POINT_OP ARG_NONE -#define ARGI_BUFFER_OP ARGI_LIST1 (ARGI_INTEGER) -#define ARGI_BYTE_OP ARGI_INVALID_OPCODE -#define ARGI_BYTELIST_OP ARGI_INVALID_OPCODE -#define ARGI_CONCAT_OP ARGI_LIST3 (ARGI_COMPUTEDATA,ARGI_COMPUTEDATA, ARGI_TARGETREF) -#define ARGI_CONCAT_RES_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_BUFFER, ARGI_TARGETREF) -#define ARGI_COND_REF_OF_OP ARGI_LIST2 (ARGI_OBJECT_REF, ARGI_TARGETREF) -#define ARGI_CONTINUE_OP ARGI_INVALID_OPCODE -#define ARGI_COPY_OP ARGI_LIST2 (ARGI_ANYTYPE, ARGI_SIMPLE_TARGET) -#define ARGI_CREATE_BIT_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE) -#define ARGI_CREATE_BYTE_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE) -#define ARGI_CREATE_DWORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE) -#define ARGI_CREATE_FIELD_OP ARGI_LIST4 (ARGI_BUFFER, ARGI_INTEGER, ARGI_INTEGER, ARGI_REFERENCE) -#define ARGI_CREATE_QWORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE) -#define ARGI_CREATE_WORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE) -#define ARGI_DATA_REGION_OP ARGI_LIST3 (ARGI_STRING, ARGI_STRING, ARGI_STRING) -#define ARGI_DEBUG_OP ARG_NONE -#define ARGI_DECREMENT_OP ARGI_LIST1 (ARGI_INTEGER_REF) -#define ARGI_DEREF_OF_OP ARGI_LIST1 (ARGI_REF_OR_STRING) -#define ARGI_DEVICE_OP ARGI_INVALID_OPCODE -#define ARGI_DIVIDE_OP ARGI_LIST4 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF, ARGI_TARGETREF) -#define ARGI_DWORD_OP ARGI_INVALID_OPCODE -#define ARGI_ELSE_OP ARGI_INVALID_OPCODE -#define ARGI_EVENT_OP ARGI_INVALID_OPCODE -#define ARGI_FATAL_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER) -#define ARGI_FIELD_OP ARGI_INVALID_OPCODE -#define ARGI_FIND_SET_LEFT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_FIND_SET_RIGHT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_FROM_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_FIXED_TARGET) -#define ARGI_IF_OP ARGI_INVALID_OPCODE -#define ARGI_INCREMENT_OP ARGI_LIST1 (ARGI_INTEGER_REF) -#define ARGI_INDEX_FIELD_OP ARGI_INVALID_OPCODE -#define ARGI_INDEX_OP ARGI_LIST3 (ARGI_COMPLEXOBJ, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_LAND_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER) -#define ARGI_LEQUAL_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_COMPUTEDATA) -#define ARGI_LGREATER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_COMPUTEDATA) -#define ARGI_LGREATEREQUAL_OP ARGI_INVALID_OPCODE -#define ARGI_LLESS_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_COMPUTEDATA) -#define ARGI_LLESSEQUAL_OP ARGI_INVALID_OPCODE -#define ARGI_LNOT_OP ARGI_LIST1 (ARGI_INTEGER) -#define ARGI_LNOTEQUAL_OP ARGI_INVALID_OPCODE -#define ARGI_LOAD_OP ARGI_LIST2 (ARGI_REGION_OR_BUFFER,ARGI_TARGETREF) -#define ARGI_LOAD_TABLE_OP ARGI_LIST6 (ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_ANYTYPE) -#define ARGI_LOCAL0 ARG_NONE -#define ARGI_LOCAL1 ARG_NONE -#define ARGI_LOCAL2 ARG_NONE -#define ARGI_LOCAL3 ARG_NONE -#define ARGI_LOCAL4 ARG_NONE -#define ARGI_LOCAL5 ARG_NONE -#define ARGI_LOCAL6 ARG_NONE -#define ARGI_LOCAL7 ARG_NONE -#define ARGI_LOR_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER) -#define ARGI_MATCH_OP ARGI_LIST6 (ARGI_PACKAGE, ARGI_INTEGER, ARGI_COMPUTEDATA, ARGI_INTEGER,ARGI_COMPUTEDATA,ARGI_INTEGER) -#define ARGI_METHOD_OP ARGI_INVALID_OPCODE -#define ARGI_METHODCALL_OP ARGI_INVALID_OPCODE -#define ARGI_MID_OP ARGI_LIST4 (ARGI_BUFFER_OR_STRING,ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_MOD_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_MULTIPLY_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_MUTEX_OP ARGI_INVALID_OPCODE -#define ARGI_NAME_OP ARGI_INVALID_OPCODE -#define ARGI_NAMEDFIELD_OP ARGI_INVALID_OPCODE -#define ARGI_NAMEPATH_OP ARGI_INVALID_OPCODE -#define ARGI_NOOP_OP ARG_NONE -#define ARGI_NOTIFY_OP ARGI_LIST2 (ARGI_DEVICE_REF, ARGI_INTEGER) -#define ARGI_ONE_OP ARG_NONE -#define ARGI_ONES_OP ARG_NONE -#define ARGI_PACKAGE_OP ARGI_LIST1 (ARGI_INTEGER) -#define ARGI_POWER_RES_OP ARGI_INVALID_OPCODE -#define ARGI_PROCESSOR_OP ARGI_INVALID_OPCODE -#define ARGI_QWORD_OP ARGI_INVALID_OPCODE -#define ARGI_REF_OF_OP ARGI_LIST1 (ARGI_OBJECT_REF) -#define ARGI_REGION_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER) -#define ARGI_RELEASE_OP ARGI_LIST1 (ARGI_MUTEX) -#define ARGI_RESERVEDFIELD_OP ARGI_INVALID_OPCODE -#define ARGI_RESET_OP ARGI_LIST1 (ARGI_EVENT) -#define ARGI_RETURN_OP ARGI_INVALID_OPCODE -#define ARGI_REVISION_OP ARG_NONE -#define ARGI_SCOPE_OP ARGI_INVALID_OPCODE -#define ARGI_SHIFT_LEFT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_SHIFT_RIGHT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_SIGNAL_OP ARGI_LIST1 (ARGI_EVENT) -#define ARGI_SIZE_OF_OP ARGI_LIST1 (ARGI_DATAOBJECT) -#define ARGI_SLEEP_OP ARGI_LIST1 (ARGI_INTEGER) -#define ARGI_STALL_OP ARGI_LIST1 (ARGI_INTEGER) -#define ARGI_STATICSTRING_OP ARGI_INVALID_OPCODE -#define ARGI_STORE_OP ARGI_LIST2 (ARGI_DATAREFOBJ, ARGI_TARGETREF) -#define ARGI_STRING_OP ARGI_INVALID_OPCODE -#define ARGI_SUBTRACT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_THERMAL_ZONE_OP ARGI_INVALID_OPCODE -#define ARGI_TIMER_OP ARG_NONE -#define ARGI_TO_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_FIXED_TARGET) -#define ARGI_TO_BUFFER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET) -#define ARGI_TO_DEC_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET) -#define ARGI_TO_HEX_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET) -#define ARGI_TO_INTEGER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET) -#define ARGI_TO_STRING_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_FIXED_TARGET) -#define ARGI_TYPE_OP ARGI_LIST1 (ARGI_ANYTYPE) -#define ARGI_UNLOAD_OP ARGI_LIST1 (ARGI_DDBHANDLE) -#define ARGI_VAR_PACKAGE_OP ARGI_LIST1 (ARGI_INTEGER) -#define ARGI_WAIT_OP ARGI_LIST2 (ARGI_EVENT, ARGI_INTEGER) -#define ARGI_WHILE_OP ARGI_INVALID_OPCODE -#define ARGI_WORD_OP ARGI_INVALID_OPCODE -#define ARGI_ZERO_OP ARG_NONE - -#endif /* __ACOPCODE_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/acoutput.h b/sys/contrib/dev/acpica-unix-20061109/include/acoutput.h deleted file mode 100644 index 590d05299a..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/acoutput.h +++ /dev/null @@ -1,263 +0,0 @@ -/****************************************************************************** - * - * Name: acoutput.h -- debug output - * $Revision: 1.100 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACOUTPUT_H__ -#define __ACOUTPUT_H__ - -/* - * Debug levels and component IDs. These are used to control the - * granularity of the output of the DEBUG_PRINT macro -- on a per- - * component basis and a per-exception-type basis. - */ - -/* Component IDs are used in the global "DebugLayer" */ - -#define ACPI_UTILITIES 0x00000001 -#define ACPI_HARDWARE 0x00000002 -#define ACPI_EVENTS 0x00000004 -#define ACPI_TABLES 0x00000008 -#define ACPI_NAMESPACE 0x00000010 -#define ACPI_PARSER 0x00000020 -#define ACPI_DISPATCHER 0x00000040 -#define ACPI_EXECUTER 0x00000080 -#define ACPI_RESOURCES 0x00000100 -#define ACPI_CA_DEBUGGER 0x00000200 -#define ACPI_OS_SERVICES 0x00000400 -#define ACPI_CA_DISASSEMBLER 0x00000800 - -/* Component IDs for ACPI tools and utilities */ - -#define ACPI_COMPILER 0x00001000 -#define ACPI_TOOLS 0x00002000 - -#define ACPI_ALL_COMPONENTS 0x00003FFF -#define ACPI_COMPONENT_DEFAULT (ACPI_ALL_COMPONENTS) - - -/* Component IDs reserved for ACPI drivers */ - -#define ACPI_ALL_DRIVERS 0xFFFF0000 - - -/* - * Raw debug output levels, do not use these in the DEBUG_PRINT macros - */ -#define ACPI_LV_ERROR 0x00000001 -#define ACPI_LV_WARN 0x00000002 -#define ACPI_LV_INIT 0x00000004 -#define ACPI_LV_DEBUG_OBJECT 0x00000008 -#define ACPI_LV_INFO 0x00000010 -#define ACPI_LV_ALL_EXCEPTIONS 0x0000001F - -/* Trace verbosity level 1 [Standard Trace Level] */ - -#define ACPI_LV_INIT_NAMES 0x00000020 -#define ACPI_LV_PARSE 0x00000040 -#define ACPI_LV_LOAD 0x00000080 -#define ACPI_LV_DISPATCH 0x00000100 -#define ACPI_LV_EXEC 0x00000200 -#define ACPI_LV_NAMES 0x00000400 -#define ACPI_LV_OPREGION 0x00000800 -#define ACPI_LV_BFIELD 0x00001000 -#define ACPI_LV_TABLES 0x00002000 -#define ACPI_LV_VALUES 0x00004000 -#define ACPI_LV_OBJECTS 0x00008000 -#define ACPI_LV_RESOURCES 0x00010000 -#define ACPI_LV_USER_REQUESTS 0x00020000 -#define ACPI_LV_PACKAGE 0x00040000 -#define ACPI_LV_VERBOSITY1 0x0007FF40 | ACPI_LV_ALL_EXCEPTIONS - -/* Trace verbosity level 2 [Function tracing and memory allocation] */ - -#define ACPI_LV_ALLOCATIONS 0x00100000 -#define ACPI_LV_FUNCTIONS 0x00200000 -#define ACPI_LV_OPTIMIZATIONS 0x00400000 -#define ACPI_LV_VERBOSITY2 0x00700000 | ACPI_LV_VERBOSITY1 -#define ACPI_LV_ALL ACPI_LV_VERBOSITY2 - -/* Trace verbosity level 3 [Threading, I/O, and Interrupts] */ - -#define ACPI_LV_MUTEX 0x01000000 -#define ACPI_LV_THREADS 0x02000000 -#define ACPI_LV_IO 0x04000000 -#define ACPI_LV_INTERRUPTS 0x08000000 -#define ACPI_LV_VERBOSITY3 0x0F000000 | ACPI_LV_VERBOSITY2 - -/* Exceptionally verbose output -- also used in the global "DebugLevel" */ - -#define ACPI_LV_AML_DISASSEMBLE 0x10000000 -#define ACPI_LV_VERBOSE_INFO 0x20000000 -#define ACPI_LV_FULL_TABLES 0x40000000 -#define ACPI_LV_EVENTS 0x80000000 - -#define ACPI_LV_VERBOSE 0xF0000000 - - -/* - * Debug level macros that are used in the DEBUG_PRINT macros - */ -#define ACPI_DEBUG_LEVEL(dl) (UINT32) dl,ACPI_DEBUG_PARAMETERS - -/* Exception level -- used in the global "DebugLevel" */ - -#define ACPI_DB_INIT ACPI_DEBUG_LEVEL (ACPI_LV_INIT) -#define ACPI_DB_DEBUG_OBJECT ACPI_DEBUG_LEVEL (ACPI_LV_DEBUG_OBJECT) -#define ACPI_DB_INFO ACPI_DEBUG_LEVEL (ACPI_LV_INFO) -#define ACPI_DB_ALL_EXCEPTIONS ACPI_DEBUG_LEVEL (ACPI_LV_ALL_EXCEPTIONS) - -/* - * These two levels are essentially obsolete, all instances in the - * ACPICA core code have been replaced by ACPI_ERROR and ACPI_WARNING - * (Kept here because some drivers may still use them) - */ -#define ACPI_DB_ERROR ACPI_DEBUG_LEVEL (ACPI_LV_ERROR) -#define ACPI_DB_WARN ACPI_DEBUG_LEVEL (ACPI_LV_WARN) - -/* Trace level -- also used in the global "DebugLevel" */ - -#define ACPI_DB_INIT_NAMES ACPI_DEBUG_LEVEL (ACPI_LV_INIT_NAMES) -#define ACPI_DB_THREADS ACPI_DEBUG_LEVEL (ACPI_LV_THREADS) -#define ACPI_DB_PARSE ACPI_DEBUG_LEVEL (ACPI_LV_PARSE) -#define ACPI_DB_DISPATCH ACPI_DEBUG_LEVEL (ACPI_LV_DISPATCH) -#define ACPI_DB_LOAD ACPI_DEBUG_LEVEL (ACPI_LV_LOAD) -#define ACPI_DB_EXEC ACPI_DEBUG_LEVEL (ACPI_LV_EXEC) -#define ACPI_DB_NAMES ACPI_DEBUG_LEVEL (ACPI_LV_NAMES) -#define ACPI_DB_OPREGION ACPI_DEBUG_LEVEL (ACPI_LV_OPREGION) -#define ACPI_DB_BFIELD ACPI_DEBUG_LEVEL (ACPI_LV_BFIELD) -#define ACPI_DB_TABLES ACPI_DEBUG_LEVEL (ACPI_LV_TABLES) -#define ACPI_DB_FUNCTIONS ACPI_DEBUG_LEVEL (ACPI_LV_FUNCTIONS) -#define ACPI_DB_OPTIMIZATIONS ACPI_DEBUG_LEVEL (ACPI_LV_OPTIMIZATIONS) -#define ACPI_DB_VALUES ACPI_DEBUG_LEVEL (ACPI_LV_VALUES) -#define ACPI_DB_OBJECTS ACPI_DEBUG_LEVEL (ACPI_LV_OBJECTS) -#define ACPI_DB_ALLOCATIONS ACPI_DEBUG_LEVEL (ACPI_LV_ALLOCATIONS) -#define ACPI_DB_RESOURCES ACPI_DEBUG_LEVEL (ACPI_LV_RESOURCES) -#define ACPI_DB_IO ACPI_DEBUG_LEVEL (ACPI_LV_IO) -#define ACPI_DB_INTERRUPTS ACPI_DEBUG_LEVEL (ACPI_LV_INTERRUPTS) -#define ACPI_DB_USER_REQUESTS ACPI_DEBUG_LEVEL (ACPI_LV_USER_REQUESTS) -#define ACPI_DB_PACKAGE ACPI_DEBUG_LEVEL (ACPI_LV_PACKAGE) -#define ACPI_DB_MUTEX ACPI_DEBUG_LEVEL (ACPI_LV_MUTEX) - -#define ACPI_DB_ALL ACPI_DEBUG_LEVEL (ACPI_LV_ALL) - - -/* Defaults for DebugLevel, debug and normal */ - -#define ACPI_DEBUG_DEFAULT (ACPI_LV_INIT | ACPI_LV_WARN | ACPI_LV_ERROR | ACPI_LV_DEBUG_OBJECT) -#define ACPI_NORMAL_DEFAULT (ACPI_LV_INIT | ACPI_LV_WARN | ACPI_LV_ERROR | ACPI_LV_DEBUG_OBJECT) -#define ACPI_DEBUG_ALL (ACPI_LV_AML_DISASSEMBLE | ACPI_LV_ALL_EXCEPTIONS | ACPI_LV_ALL) - - -#endif /* __ACOUTPUT_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/acparser.h b/sys/contrib/dev/acpica-unix-20061109/include/acparser.h deleted file mode 100644 index 91cc58cef0..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/acparser.h +++ /dev/null @@ -1,399 +0,0 @@ -/****************************************************************************** - * - * Module Name: acparser.h - AML Parser subcomponent prototypes and defines - * $Revision: 1.81 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#ifndef __ACPARSER_H__ -#define __ACPARSER_H__ - - -#define OP_HAS_RETURN_VALUE 1 - -/* Variable number of arguments. This field must be 32 bits */ - -#define ACPI_VAR_ARGS ACPI_UINT32_MAX - - -#define ACPI_PARSE_DELETE_TREE 0x0001 -#define ACPI_PARSE_NO_TREE_DELETE 0x0000 -#define ACPI_PARSE_TREE_MASK 0x0001 - -#define ACPI_PARSE_LOAD_PASS1 0x0010 -#define ACPI_PARSE_LOAD_PASS2 0x0020 -#define ACPI_PARSE_EXECUTE 0x0030 -#define ACPI_PARSE_MODE_MASK 0x0030 - -#define ACPI_PARSE_DEFERRED_OP 0x0100 -#define ACPI_PARSE_DISASSEMBLE 0x0200 - - -/****************************************************************************** - * - * Parser interfaces - * - *****************************************************************************/ - - -/* - * psxface - Parser external interfaces - */ -ACPI_STATUS -AcpiPsExecuteMethod ( - ACPI_EVALUATE_INFO *Info); - - -/* - * psargs - Parse AML opcode arguments - */ -UINT8 * -AcpiPsGetNextPackageEnd ( - ACPI_PARSE_STATE *ParserState); - -char * -AcpiPsGetNextNamestring ( - ACPI_PARSE_STATE *ParserState); - -void -AcpiPsGetNextSimpleArg ( - ACPI_PARSE_STATE *ParserState, - UINT32 ArgType, - ACPI_PARSE_OBJECT *Arg); - -ACPI_STATUS -AcpiPsGetNextNamepath ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_STATE *ParserState, - ACPI_PARSE_OBJECT *Arg, - BOOLEAN MethodCall); - -ACPI_STATUS -AcpiPsGetNextArg ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_STATE *ParserState, - UINT32 ArgType, - ACPI_PARSE_OBJECT **ReturnArg); - - -/* - * psfind - */ -ACPI_PARSE_OBJECT * -AcpiPsFindName ( - ACPI_PARSE_OBJECT *Scope, - UINT32 Name, - UINT32 Opcode); - -ACPI_PARSE_OBJECT* -AcpiPsGetParent ( - ACPI_PARSE_OBJECT *Op); - - -/* - * psopcode - AML Opcode information - */ -const ACPI_OPCODE_INFO * -AcpiPsGetOpcodeInfo ( - UINT16 Opcode); - -char * -AcpiPsGetOpcodeName ( - UINT16 Opcode); - - -/* - * psparse - top level parsing routines - */ -ACPI_STATUS -AcpiPsParseAml ( - ACPI_WALK_STATE *WalkState); - -UINT32 -AcpiPsGetOpcodeSize ( - UINT32 Opcode); - -UINT16 -AcpiPsPeekOpcode ( - ACPI_PARSE_STATE *state); - -ACPI_STATUS -AcpiPsCompleteThisOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op); - -ACPI_STATUS -AcpiPsNextParseState ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - ACPI_STATUS CallbackStatus); - - -/* - * psloop - main parse loop - */ -ACPI_STATUS -AcpiPsParseLoop ( - ACPI_WALK_STATE *WalkState); - - -/* - * psscope - Scope stack management routines - */ -ACPI_STATUS -AcpiPsInitScope ( - ACPI_PARSE_STATE *ParserState, - ACPI_PARSE_OBJECT *Root); - -ACPI_PARSE_OBJECT * -AcpiPsGetParentScope ( - ACPI_PARSE_STATE *state); - -BOOLEAN -AcpiPsHasCompletedScope ( - ACPI_PARSE_STATE *ParserState); - -void -AcpiPsPopScope ( - ACPI_PARSE_STATE *ParserState, - ACPI_PARSE_OBJECT **Op, - UINT32 *ArgList, - UINT32 *ArgCount); - -ACPI_STATUS -AcpiPsPushScope ( - ACPI_PARSE_STATE *ParserState, - ACPI_PARSE_OBJECT *Op, - UINT32 RemainingArgs, - UINT32 ArgCount); - -void -AcpiPsCleanupScope ( - ACPI_PARSE_STATE *state); - - -/* - * pstree - parse tree manipulation routines - */ -void -AcpiPsAppendArg( - ACPI_PARSE_OBJECT *op, - ACPI_PARSE_OBJECT *arg); - -ACPI_PARSE_OBJECT* -AcpiPsFind ( - ACPI_PARSE_OBJECT *Scope, - char *Path, - UINT16 Opcode, - UINT32 Create); - -ACPI_PARSE_OBJECT * -AcpiPsGetArg( - ACPI_PARSE_OBJECT *op, - UINT32 argn); - -ACPI_PARSE_OBJECT * -AcpiPsGetDepthNext ( - ACPI_PARSE_OBJECT *Origin, - ACPI_PARSE_OBJECT *Op); - - -/* - * pswalk - parse tree walk routines - */ -ACPI_STATUS -AcpiPsWalkParsedAml ( - ACPI_PARSE_OBJECT *StartOp, - ACPI_PARSE_OBJECT *EndOp, - ACPI_OPERAND_OBJECT *MthDesc, - ACPI_NAMESPACE_NODE *StartNode, - ACPI_OPERAND_OBJECT **Params, - ACPI_OPERAND_OBJECT **CallerReturnDesc, - ACPI_OWNER_ID OwnerId, - ACPI_PARSE_DOWNWARDS DescendingCallback, - ACPI_PARSE_UPWARDS AscendingCallback); - -ACPI_STATUS -AcpiPsGetNextWalkOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - ACPI_PARSE_UPWARDS AscendingCallback); - -ACPI_STATUS -AcpiPsDeleteCompletedOp ( - ACPI_WALK_STATE *WalkState); - -void -AcpiPsDeleteParseTree ( - ACPI_PARSE_OBJECT *root); - - -/* - * psutils - parser utilities - */ -ACPI_PARSE_OBJECT * -AcpiPsCreateScopeOp ( - void); - -void -AcpiPsInitOp ( - ACPI_PARSE_OBJECT *op, - UINT16 opcode); - -ACPI_PARSE_OBJECT * -AcpiPsAllocOp ( - UINT16 opcode); - -void -AcpiPsFreeOp ( - ACPI_PARSE_OBJECT *Op); - -BOOLEAN -AcpiPsIsLeadingChar ( - UINT32 c); - -BOOLEAN -AcpiPsIsPrefixChar ( - UINT32 c); - -UINT32 -AcpiPsGetName( - ACPI_PARSE_OBJECT *op); - -void -AcpiPsSetName( - ACPI_PARSE_OBJECT *op, - UINT32 name); - - -/* - * psdump - display parser tree - */ -UINT32 -AcpiPsSprintPath ( - char *BufferStart, - UINT32 BufferSize, - ACPI_PARSE_OBJECT *Op); - -UINT32 -AcpiPsSprintOp ( - char *BufferStart, - UINT32 BufferSize, - ACPI_PARSE_OBJECT *Op); - -void -AcpiPsShow ( - ACPI_PARSE_OBJECT *op); - - -#endif /* __ACPARSER_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/acpi.h b/sys/contrib/dev/acpica-unix-20061109/include/acpi.h deleted file mode 100644 index ddaeec42d0..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/acpi.h +++ /dev/null @@ -1,143 +0,0 @@ -/****************************************************************************** - * - * Name: acpi.h - Master include file, Publics and external data. - * $Revision: 1.60 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACPI_H__ -#define __ACPI_H__ - -/* - * Common includes for all ACPI driver files - * We put them here because we don't want to duplicate them - * in the rest of the source code again and again. - */ -#include "acnames.h" /* Global ACPI names and strings */ -#include "acconfig.h" /* Configuration constants */ -#include "platform/acenv.h" /* Target environment specific items */ -#include "actypes.h" /* Fundamental common data types */ -#include "acexcep.h" /* ACPI exception codes */ -#include "acmacros.h" /* C macros */ -#include "actbl.h" /* ACPI table definitions */ -#include "aclocal.h" /* Internal data types */ -#include "acoutput.h" /* Error output and Debug macros */ -#include "acpiosxf.h" /* Interfaces to the ACPI-to-OS layer*/ -#include "acpixf.h" /* ACPI core subsystem external interfaces */ -#include "acobject.h" /* ACPI internal object */ -#include "acstruct.h" /* Common structures */ -#include "acglobal.h" /* All global variables */ -#include "achware.h" /* Hardware defines and interfaces */ -#include "acutils.h" /* Utility interfaces */ - - -#endif /* __ACPI_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/acpiosxf.h b/sys/contrib/dev/acpica-unix-20061109/include/acpiosxf.h deleted file mode 100644 index fafce3cd9e..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/acpiosxf.h +++ /dev/null @@ -1,504 +0,0 @@ - -/****************************************************************************** - * - * Name: acpiosxf.h - All interfaces to the OS Services Layer (OSL). These - * interfaces must be implemented by OSL to interface the - * ACPI components to the host operating system. - * - *****************************************************************************/ - - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exer - se the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACPIOSXF_H__ -#define __ACPIOSXF_H__ - -#include "platform/acenv.h" -#include "actypes.h" - - -/* Types for AcpiOsExecute */ - -typedef enum -{ - OSL_GLOBAL_LOCK_HANDLER, - OSL_NOTIFY_HANDLER, - OSL_GPE_HANDLER, - OSL_DEBUGGER_THREAD, - OSL_EC_POLL_HANDLER, - OSL_EC_BURST_HANDLER - -} ACPI_EXECUTE_TYPE; - -#define ACPI_NO_UNIT_LIMIT ((UINT32) -1) -#define ACPI_MUTEX_SEM 1 - - -/* Functions for AcpiOsSignal */ - -#define ACPI_SIGNAL_FATAL 0 -#define ACPI_SIGNAL_BREAKPOINT 1 - -typedef struct acpi_signal_fatal_info -{ - UINT32 Type; - UINT32 Code; - UINT32 Argument; - -} ACPI_SIGNAL_FATAL_INFO; - - -/* - * OSL Initialization and shutdown primitives - */ -ACPI_STATUS -AcpiOsInitialize ( - void); - -ACPI_STATUS -AcpiOsTerminate ( - void); - - -/* - * ACPI Table interfaces - */ -ACPI_PHYSICAL_ADDRESS -AcpiOsGetRootPointer ( - void); - -ACPI_STATUS -AcpiOsPredefinedOverride ( - const ACPI_PREDEFINED_NAMES *InitVal, - ACPI_STRING *NewVal); - -ACPI_STATUS -AcpiOsTableOverride ( - ACPI_TABLE_HEADER *ExistingTable, - ACPI_TABLE_HEADER **NewTable); - - -/* - * Spinlock primitives - */ -ACPI_STATUS -AcpiOsCreateLock ( - ACPI_SPINLOCK *OutHandle); - -void -AcpiOsDeleteLock ( - ACPI_SPINLOCK Handle); - -ACPI_CPU_FLAGS -AcpiOsAcquireLock ( - ACPI_SPINLOCK Handle); - -void -AcpiOsReleaseLock ( - ACPI_SPINLOCK Handle, - ACPI_CPU_FLAGS Flags); - - -/* - * Semaphore primitives - */ -ACPI_STATUS -AcpiOsCreateSemaphore ( - UINT32 MaxUnits, - UINT32 InitialUnits, - ACPI_SEMAPHORE *OutHandle); - -ACPI_STATUS -AcpiOsDeleteSemaphore ( - ACPI_SEMAPHORE Handle); - -ACPI_STATUS -AcpiOsWaitSemaphore ( - ACPI_SEMAPHORE Handle, - UINT32 Units, - UINT16 Timeout); - -ACPI_STATUS -AcpiOsSignalSemaphore ( - ACPI_SEMAPHORE Handle, - UINT32 Units); - - -/* - * Mutex primitives - */ -ACPI_STATUS -AcpiOsCreateMutex ( - ACPI_MUTEX *OutHandle); - -void -AcpiOsDeleteMutex ( - ACPI_MUTEX Handle); - -ACPI_STATUS -AcpiOsAcquireMutex ( - ACPI_MUTEX Handle, - UINT16 Timeout); - -void -AcpiOsReleaseMutex ( - ACPI_MUTEX Handle); - -/* Temporary macros for Mutex* interfaces, map to existing semaphore xfaces */ - -#define AcpiOsCreateMutex(OutHandle) AcpiOsCreateSemaphore (1, 1, OutHandle) -#define AcpiOsDeleteMutex(Handle) (void) AcpiOsDeleteSemaphore (Handle) -#define AcpiOsAcquireMutex(Handle,Time) AcpiOsWaitSemaphore (Handle, 1, Time) -#define AcpiOsReleaseMutex(Handle) (void) AcpiOsSignalSemaphore (Handle, 1) - - -/* - * Memory allocation and mapping - */ -void * -AcpiOsAllocate ( - ACPI_SIZE Size); - -void -AcpiOsFree ( - void * Memory); - -void * -AcpiOsMapMemory ( - ACPI_PHYSICAL_ADDRESS Where, - ACPI_NATIVE_UINT Length); - -void -AcpiOsUnmapMemory ( - void *LogicalAddress, - ACPI_SIZE Size); - -ACPI_STATUS -AcpiOsGetPhysicalAddress ( - void *LogicalAddress, - ACPI_PHYSICAL_ADDRESS *PhysicalAddress); - - -/* - * Memory/Object Cache - */ -ACPI_STATUS -AcpiOsCreateCache ( - char *CacheName, - UINT16 ObjectSize, - UINT16 MaxDepth, - ACPI_CACHE_T **ReturnCache); - -ACPI_STATUS -AcpiOsDeleteCache ( - ACPI_CACHE_T *Cache); - -ACPI_STATUS -AcpiOsPurgeCache ( - ACPI_CACHE_T *Cache); - -void * -AcpiOsAcquireObject ( - ACPI_CACHE_T *Cache); - -ACPI_STATUS -AcpiOsReleaseObject ( - ACPI_CACHE_T *Cache, - void *Object); - - -/* - * Interrupt handlers - */ -ACPI_STATUS -AcpiOsInstallInterruptHandler ( - UINT32 InterruptNumber, - ACPI_OSD_HANDLER ServiceRoutine, - void *Context); - -ACPI_STATUS -AcpiOsRemoveInterruptHandler ( - UINT32 InterruptNumber, - ACPI_OSD_HANDLER ServiceRoutine); - - -/* - * Threads and Scheduling - */ -ACPI_THREAD_ID -AcpiOsGetThreadId ( - void); - -ACPI_STATUS -AcpiOsExecute ( - ACPI_EXECUTE_TYPE Type, - ACPI_OSD_EXEC_CALLBACK Function, - void *Context); - -void -AcpiOsWaitEventsComplete ( - void *Context); - -void -AcpiOsSleep ( - ACPI_INTEGER Milliseconds); - -void -AcpiOsStall ( - UINT32 Microseconds); - - -/* - * Platform and hardware-independent I/O interfaces - */ -ACPI_STATUS -AcpiOsReadPort ( - ACPI_IO_ADDRESS Address, - UINT32 *Value, - UINT32 Width); - -ACPI_STATUS -AcpiOsWritePort ( - ACPI_IO_ADDRESS Address, - UINT32 Value, - UINT32 Width); - - -/* - * Platform and hardware-independent physical memory interfaces - */ -ACPI_STATUS -AcpiOsReadMemory ( - ACPI_PHYSICAL_ADDRESS Address, - UINT32 *Value, - UINT32 Width); - -ACPI_STATUS -AcpiOsWriteMemory ( - ACPI_PHYSICAL_ADDRESS Address, - UINT32 Value, - UINT32 Width); - - -/* - * Platform and hardware-independent PCI configuration space access - * Note: Can't use "Register" as a parameter, changed to "Reg" -- - * certain compilers complain. - */ -ACPI_STATUS -AcpiOsReadPciConfiguration ( - ACPI_PCI_ID *PciId, - UINT32 Reg, - void *Value, - UINT32 Width); - -ACPI_STATUS -AcpiOsWritePciConfiguration ( - ACPI_PCI_ID *PciId, - UINT32 Reg, - ACPI_INTEGER Value, - UINT32 Width); - - -/* - * Interim function needed for PCI IRQ routing - */ -void -AcpiOsDerivePciId( - ACPI_HANDLE Rhandle, - ACPI_HANDLE Chandle, - ACPI_PCI_ID **PciId); - - -/* - * Miscellaneous - */ -ACPI_STATUS -AcpiOsValidateInterface ( - char *Interface); - -ACPI_STATUS -AcpiOsValidateAddress ( - UINT8 SpaceId, - ACPI_PHYSICAL_ADDRESS Address, - ACPI_SIZE Length); - -BOOLEAN -AcpiOsReadable ( - void *Pointer, - ACPI_SIZE Length); - -BOOLEAN -AcpiOsWritable ( - void *Pointer, - ACPI_SIZE Length); - -UINT64 -AcpiOsGetTimer ( - void); - -ACPI_STATUS -AcpiOsSignal ( - UINT32 Function, - void *Info); - - -/* - * Debug print routines - */ -void ACPI_INTERNAL_VAR_XFACE -AcpiOsPrintf ( - const char *Format, - ...); - -void -AcpiOsVprintf ( - const char *Format, - va_list Args); - -void -AcpiOsRedirectOutput ( - void *Destination); - - -/* - * Debug input - */ -UINT32 -AcpiOsGetLine ( - char *Buffer); - - -/* - * Directory manipulation - */ -void * -AcpiOsOpenDirectory ( - char *Pathname, - char *WildcardSpec, - char RequestedFileType); - -/* RequesteFileType values */ - -#define REQUEST_FILE_ONLY 0 -#define REQUEST_DIR_ONLY 1 - - -char * -AcpiOsGetNextFilename ( - void *DirHandle); - -void -AcpiOsCloseDirectory ( - void *DirHandle); - - -#endif /* __ACPIOSXF_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/acpixf.h b/sys/contrib/dev/acpica-unix-20061109/include/acpixf.h deleted file mode 100644 index f29fbfb960..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/acpixf.h +++ /dev/null @@ -1,550 +0,0 @@ - -/****************************************************************************** - * - * Name: acpixf.h - External interfaces to the ACPI subsystem - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#ifndef __ACXFACE_H__ -#define __ACXFACE_H__ - -#include "actypes.h" -#include "actbl.h" - - -/* - * Global interfaces - */ -ACPI_STATUS -AcpiInitializeTables ( - ACPI_TABLE_DESC *InitialStorage, - UINT32 InitialTableCount, - BOOLEAN AllowResize); - -ACPI_STATUS -AcpiInitializeSubsystem ( - void); - -ACPI_STATUS -AcpiEnableSubsystem ( - UINT32 Flags); - -ACPI_STATUS -AcpiInitializeObjects ( - UINT32 Flags); - -ACPI_STATUS -AcpiTerminate ( - void); - -ACPI_STATUS -AcpiSubsystemStatus ( - void); - -ACPI_STATUS -AcpiEnable ( - void); - -ACPI_STATUS -AcpiDisable ( - void); - -ACPI_STATUS -AcpiGetSystemInfo ( - ACPI_BUFFER *RetBuffer); - -const char * -AcpiFormatException ( - ACPI_STATUS Exception); - -ACPI_STATUS -AcpiPurgeCachedObjects ( - void); - -ACPI_STATUS -AcpiInstallInitializationHandler ( - ACPI_INIT_HANDLER Handler, - UINT32 Function); - -/* - * ACPI Memory managment - */ -void * -AcpiAllocate ( - UINT32 Size); - -void * -AcpiCallocate ( - UINT32 Size); - -void -AcpiFree ( - void *Address); - - -/* - * ACPI table manipulation interfaces - */ -ACPI_STATUS -AcpiReallocateRootTable ( - void); - -ACPI_STATUS -AcpiFindRootPointer ( - ACPI_NATIVE_UINT *RsdpAddress); - -ACPI_STATUS -AcpiLoadTables ( - void); - -ACPI_STATUS -AcpiGetTableHeader ( - ACPI_STRING Signature, - ACPI_NATIVE_UINT Instance, - ACPI_TABLE_HEADER *OutTableHeader); - -ACPI_STATUS -AcpiGetTable ( - ACPI_STRING Signature, - ACPI_NATIVE_UINT Instance, - ACPI_TABLE_HEADER **OutTable); - -ACPI_STATUS -AcpiGetTableByIndex ( - ACPI_NATIVE_UINT TableIndex, - ACPI_TABLE_HEADER **OutTable); - - -/* - * Namespace and name interfaces - */ -ACPI_STATUS -AcpiWalkNamespace ( - ACPI_OBJECT_TYPE Type, - ACPI_HANDLE StartObject, - UINT32 MaxDepth, - ACPI_WALK_CALLBACK UserFunction, - void *Context, - void **ReturnValue); - -ACPI_STATUS -AcpiGetDevices ( - char *HID, - ACPI_WALK_CALLBACK UserFunction, - void *Context, - void **ReturnValue); - -ACPI_STATUS -AcpiGetName ( - ACPI_HANDLE Handle, - UINT32 NameType, - ACPI_BUFFER *RetPathPtr); - -ACPI_STATUS -AcpiGetHandle ( - ACPI_HANDLE Parent, - ACPI_STRING Pathname, - ACPI_HANDLE *RetHandle); - -ACPI_STATUS -AcpiAttachData ( - ACPI_HANDLE ObjHandle, - ACPI_OBJECT_HANDLER Handler, - void *Data); - -ACPI_STATUS -AcpiDetachData ( - ACPI_HANDLE ObjHandle, - ACPI_OBJECT_HANDLER Handler); - -ACPI_STATUS -AcpiGetData ( - ACPI_HANDLE ObjHandle, - ACPI_OBJECT_HANDLER Handler, - void **Data); - -ACPI_STATUS -AcpiDebugTrace ( - char *Name, - UINT32 DebugLevel, - UINT32 DebugLayer, - UINT32 Flags); - - -/* - * Object manipulation and enumeration - */ -ACPI_STATUS -AcpiEvaluateObject ( - ACPI_HANDLE Object, - ACPI_STRING Pathname, - ACPI_OBJECT_LIST *ParameterObjects, - ACPI_BUFFER *ReturnObjectBuffer); - -ACPI_STATUS -AcpiEvaluateObjectTyped ( - ACPI_HANDLE Object, - ACPI_STRING Pathname, - ACPI_OBJECT_LIST *ExternalParams, - ACPI_BUFFER *ReturnBuffer, - ACPI_OBJECT_TYPE ReturnType); - -ACPI_STATUS -AcpiGetObjectInfo ( - ACPI_HANDLE Handle, - ACPI_BUFFER *ReturnBuffer); - -ACPI_STATUS -AcpiGetNextObject ( - ACPI_OBJECT_TYPE Type, - ACPI_HANDLE Parent, - ACPI_HANDLE Child, - ACPI_HANDLE *OutHandle); - -ACPI_STATUS -AcpiGetType ( - ACPI_HANDLE Object, - ACPI_OBJECT_TYPE *OutType); - -ACPI_STATUS -AcpiGetParent ( - ACPI_HANDLE Object, - ACPI_HANDLE *OutHandle); - - -/* - * Event handler interfaces - */ -ACPI_STATUS -AcpiInstallFixedEventHandler ( - UINT32 AcpiEvent, - ACPI_EVENT_HANDLER Handler, - void *Context); - -ACPI_STATUS -AcpiRemoveFixedEventHandler ( - UINT32 AcpiEvent, - ACPI_EVENT_HANDLER Handler); - -ACPI_STATUS -AcpiInstallNotifyHandler ( - ACPI_HANDLE Device, - UINT32 HandlerType, - ACPI_NOTIFY_HANDLER Handler, - void *Context); - -ACPI_STATUS -AcpiRemoveNotifyHandler ( - ACPI_HANDLE Device, - UINT32 HandlerType, - ACPI_NOTIFY_HANDLER Handler); - -ACPI_STATUS -AcpiInstallAddressSpaceHandler ( - ACPI_HANDLE Device, - ACPI_ADR_SPACE_TYPE SpaceId, - ACPI_ADR_SPACE_HANDLER Handler, - ACPI_ADR_SPACE_SETUP Setup, - void *Context); - -ACPI_STATUS -AcpiRemoveAddressSpaceHandler ( - ACPI_HANDLE Device, - ACPI_ADR_SPACE_TYPE SpaceId, - ACPI_ADR_SPACE_HANDLER Handler); - -ACPI_STATUS -AcpiInstallGpeHandler ( - ACPI_HANDLE GpeDevice, - UINT32 GpeNumber, - UINT32 Type, - ACPI_EVENT_HANDLER Address, - void *Context); - -ACPI_STATUS -AcpiInstallExceptionHandler ( - ACPI_EXCEPTION_HANDLER Handler); - - -/* - * Event interfaces - */ -ACPI_STATUS -AcpiAcquireGlobalLock ( - UINT16 Timeout, - UINT32 *Handle); - -ACPI_STATUS -AcpiReleaseGlobalLock ( - UINT32 Handle); - -ACPI_STATUS -AcpiRemoveGpeHandler ( - ACPI_HANDLE GpeDevice, - UINT32 GpeNumber, - ACPI_EVENT_HANDLER Address); - -ACPI_STATUS -AcpiEnableEvent ( - UINT32 Event, - UINT32 Flags); - -ACPI_STATUS -AcpiDisableEvent ( - UINT32 Event, - UINT32 Flags); - -ACPI_STATUS -AcpiClearEvent ( - UINT32 Event); - -ACPI_STATUS -AcpiGetEventStatus ( - UINT32 Event, - ACPI_EVENT_STATUS *EventStatus); - -ACPI_STATUS -AcpiSetGpeType ( - ACPI_HANDLE GpeDevice, - UINT32 GpeNumber, - UINT8 Type); - -ACPI_STATUS -AcpiEnableGpe ( - ACPI_HANDLE GpeDevice, - UINT32 GpeNumber, - UINT32 Flags); - -ACPI_STATUS -AcpiDisableGpe ( - ACPI_HANDLE GpeDevice, - UINT32 GpeNumber, - UINT32 Flags); - -ACPI_STATUS -AcpiClearGpe ( - ACPI_HANDLE GpeDevice, - UINT32 GpeNumber, - UINT32 Flags); - -ACPI_STATUS -AcpiGetGpeStatus ( - ACPI_HANDLE GpeDevice, - UINT32 GpeNumber, - UINT32 Flags, - ACPI_EVENT_STATUS *EventStatus); - -ACPI_STATUS -AcpiInstallGpeBlock ( - ACPI_HANDLE GpeDevice, - ACPI_GENERIC_ADDRESS *GpeBlockAddress, - UINT32 RegisterCount, - UINT32 InterruptNumber); - -ACPI_STATUS -AcpiRemoveGpeBlock ( - ACPI_HANDLE GpeDevice); - - -/* - * Resource interfaces - */ -typedef -ACPI_STATUS (*ACPI_WALK_RESOURCE_CALLBACK) ( - ACPI_RESOURCE *Resource, - void *Context); - -ACPI_STATUS -AcpiGetVendorResource ( - ACPI_HANDLE DeviceHandle, - char *Name, - ACPI_VENDOR_UUID *Uuid, - ACPI_BUFFER *RetBuffer); - -ACPI_STATUS -AcpiGetCurrentResources( - ACPI_HANDLE DeviceHandle, - ACPI_BUFFER *RetBuffer); - -ACPI_STATUS -AcpiGetPossibleResources( - ACPI_HANDLE DeviceHandle, - ACPI_BUFFER *RetBuffer); - -ACPI_STATUS -AcpiWalkResources ( - ACPI_HANDLE DeviceHandle, - char *Name, - ACPI_WALK_RESOURCE_CALLBACK UserFunction, - void *Context); - -ACPI_STATUS -AcpiSetCurrentResources ( - ACPI_HANDLE DeviceHandle, - ACPI_BUFFER *InBuffer); - -ACPI_STATUS -AcpiGetIrqRoutingTable ( - ACPI_HANDLE BusDeviceHandle, - ACPI_BUFFER *RetBuffer); - -ACPI_STATUS -AcpiResourceToAddress64 ( - ACPI_RESOURCE *Resource, - ACPI_RESOURCE_ADDRESS64 *Out); - -/* - * Hardware (ACPI device) interfaces - */ -ACPI_STATUS -AcpiGetRegister ( - UINT32 RegisterId, - UINT32 *ReturnValue); - -ACPI_STATUS -AcpiSetRegister ( - UINT32 RegisterId, - UINT32 Value); - -ACPI_STATUS -AcpiSetFirmwareWakingVector ( - ACPI_PHYSICAL_ADDRESS PhysicalAddress); - -ACPI_STATUS -AcpiGetFirmwareWakingVector ( - ACPI_PHYSICAL_ADDRESS *PhysicalAddress); - -ACPI_STATUS -AcpiGetSleepTypeData ( - UINT8 SleepState, - UINT8 *Slp_TypA, - UINT8 *Slp_TypB); - -ACPI_STATUS -AcpiEnterSleepStatePrep ( - UINT8 SleepState); - -ACPI_STATUS -AcpiEnterSleepState ( - UINT8 SleepState); - -ACPI_STATUS -AcpiEnterSleepStateS4bios ( - void); - -ACPI_STATUS -AcpiLeaveSleepState ( - UINT8 SleepState); - - -#endif /* __ACXFACE_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/acresrc.h b/sys/contrib/dev/acpica-unix-20061109/include/acresrc.h deleted file mode 100644 index 9c0cd3c080..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/acresrc.h +++ /dev/null @@ -1,465 +0,0 @@ -/****************************************************************************** - * - * Name: acresrc.h - Resource Manager function prototypes - * $Revision: 1.59 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACRESRC_H__ -#define __ACRESRC_H__ - -/* Need the AML resource descriptor structs */ - -#include "amlresrc.h" - - -/* - * If possible, pack the following structures to byte alignment, since we - * don't care about performance for debug output. Two cases where we cannot - * pack the structures: - * - * 1) Hardware does not support misaligned memory transfers - * 2) Compiler does not support pointers within packed structures - */ -#if (!defined(ACPI_MISALIGNMENT_NOT_SUPPORTED) && !defined(ACPI_PACKED_POINTERS_NOT_SUPPORTED)) -#pragma pack(1) -#endif - -/* - * Individual entry for the resource conversion tables - */ -typedef const struct acpi_rsconvert_info -{ - UINT8 Opcode; - UINT8 ResourceOffset; - UINT8 AmlOffset; - UINT8 Value; - -} ACPI_RSCONVERT_INFO; - -/* Resource conversion opcodes */ - -#define ACPI_RSC_INITGET 0 -#define ACPI_RSC_INITSET 1 -#define ACPI_RSC_FLAGINIT 2 -#define ACPI_RSC_1BITFLAG 3 -#define ACPI_RSC_2BITFLAG 4 -#define ACPI_RSC_COUNT 5 -#define ACPI_RSC_COUNT16 6 -#define ACPI_RSC_LENGTH 7 -#define ACPI_RSC_MOVE8 8 -#define ACPI_RSC_MOVE16 9 -#define ACPI_RSC_MOVE32 10 -#define ACPI_RSC_MOVE64 11 -#define ACPI_RSC_SET8 12 -#define ACPI_RSC_DATA8 13 -#define ACPI_RSC_ADDRESS 14 -#define ACPI_RSC_SOURCE 15 -#define ACPI_RSC_SOURCEX 16 -#define ACPI_RSC_BITMASK 17 -#define ACPI_RSC_BITMASK16 18 -#define ACPI_RSC_EXIT_NE 19 -#define ACPI_RSC_EXIT_LE 20 - -/* Resource Conversion sub-opcodes */ - -#define ACPI_RSC_COMPARE_AML_LENGTH 0 -#define ACPI_RSC_COMPARE_VALUE 1 - -#define ACPI_RSC_TABLE_SIZE(d) (sizeof (d) / sizeof (ACPI_RSCONVERT_INFO)) - -#define ACPI_RS_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_RESOURCE,f) -#define AML_OFFSET(f) (UINT8) ACPI_OFFSET (AML_RESOURCE,f) - - -typedef const struct acpi_rsdump_info -{ - UINT8 Opcode; - UINT8 Offset; - char *Name; - const char **Pointer; - -} ACPI_RSDUMP_INFO; - -/* Values for the Opcode field above */ - -#define ACPI_RSD_TITLE 0 -#define ACPI_RSD_LITERAL 1 -#define ACPI_RSD_STRING 2 -#define ACPI_RSD_UINT8 3 -#define ACPI_RSD_UINT16 4 -#define ACPI_RSD_UINT32 5 -#define ACPI_RSD_UINT64 6 -#define ACPI_RSD_1BITFLAG 7 -#define ACPI_RSD_2BITFLAG 8 -#define ACPI_RSD_SHORTLIST 9 -#define ACPI_RSD_LONGLIST 10 -#define ACPI_RSD_DWORDLIST 11 -#define ACPI_RSD_ADDRESS 12 -#define ACPI_RSD_SOURCE 13 - -/* restore default alignment */ - -#pragma pack() - - -/* Resource tables indexed by internal resource type */ - -extern const UINT8 AcpiGbl_AmlResourceSizes[]; -extern ACPI_RSCONVERT_INFO *AcpiGbl_SetResourceDispatch[]; - -/* Resource tables indexed by raw AML resource descriptor type */ - -extern const UINT8 AcpiGbl_ResourceStructSizes[]; -extern ACPI_RSCONVERT_INFO *AcpiGbl_GetResourceDispatch[]; - - -typedef struct acpi_vendor_walk_info -{ - ACPI_VENDOR_UUID *Uuid; - ACPI_BUFFER *Buffer; - ACPI_STATUS Status; - -} ACPI_VENDOR_WALK_INFO; - - -/* - * rscreate - */ -ACPI_STATUS -AcpiRsCreateResourceList ( - ACPI_OPERAND_OBJECT *AmlBuffer, - ACPI_BUFFER *OutputBuffer); - -ACPI_STATUS -AcpiRsCreateAmlResources ( - ACPI_RESOURCE *LinkedListBuffer, - ACPI_BUFFER *OutputBuffer); - -ACPI_STATUS -AcpiRsCreatePciRoutingTable ( - ACPI_OPERAND_OBJECT *PackageObject, - ACPI_BUFFER *OutputBuffer); - - -/* - * rsutils - */ -ACPI_STATUS -AcpiRsGetPrtMethodData ( - ACPI_NAMESPACE_NODE *Node, - ACPI_BUFFER *RetBuffer); - -ACPI_STATUS -AcpiRsGetCrsMethodData ( - ACPI_NAMESPACE_NODE *Node, - ACPI_BUFFER *RetBuffer); - -ACPI_STATUS -AcpiRsGetPrsMethodData ( - ACPI_NAMESPACE_NODE *Node, - ACPI_BUFFER *RetBuffer); - -ACPI_STATUS -AcpiRsGetMethodData ( - ACPI_HANDLE Handle, - char *Path, - ACPI_BUFFER *RetBuffer); - -ACPI_STATUS -AcpiRsSetSrsMethodData ( - ACPI_NAMESPACE_NODE *Node, - ACPI_BUFFER *RetBuffer); - - -/* - * rscalc - */ -ACPI_STATUS -AcpiRsGetListLength ( - UINT8 *AmlBuffer, - UINT32 AmlBufferLength, - ACPI_SIZE *SizeNeeded); - -ACPI_STATUS -AcpiRsGetAmlLength ( - ACPI_RESOURCE *LinkedListBuffer, - ACPI_SIZE *SizeNeeded); - -ACPI_STATUS -AcpiRsGetPciRoutingTableLength ( - ACPI_OPERAND_OBJECT *PackageObject, - ACPI_SIZE *BufferSizeNeeded); - -ACPI_STATUS -AcpiRsConvertAmlToResources ( - UINT8 *Aml, - UINT32 Length, - UINT32 Offset, - UINT8 ResourceIndex, - void *Context); - -ACPI_STATUS -AcpiRsConvertResourcesToAml ( - ACPI_RESOURCE *Resource, - ACPI_SIZE AmlSizeNeeded, - UINT8 *OutputBuffer); - - -/* - * rsaddr - */ -void -AcpiRsSetAddressCommon ( - AML_RESOURCE *Aml, - ACPI_RESOURCE *Resource); - -BOOLEAN -AcpiRsGetAddressCommon ( - ACPI_RESOURCE *Resource, - AML_RESOURCE *Aml); - - -/* - * rsmisc - */ -ACPI_STATUS -AcpiRsConvertAmlToResource ( - ACPI_RESOURCE *Resource, - AML_RESOURCE *Aml, - ACPI_RSCONVERT_INFO *Info); - -ACPI_STATUS -AcpiRsConvertResourceToAml ( - ACPI_RESOURCE *Resource, - AML_RESOURCE *Aml, - ACPI_RSCONVERT_INFO *Info); - - -/* - * rsutils - */ -void -AcpiRsMoveData ( - void *Destination, - void *Source, - UINT16 ItemCount, - UINT8 MoveType); - -UINT8 -AcpiRsDecodeBitmask ( - UINT16 Mask, - UINT8 *List); - -UINT16 -AcpiRsEncodeBitmask ( - UINT8 *List, - UINT8 Count); - -ACPI_RS_LENGTH -AcpiRsGetResourceSource ( - ACPI_RS_LENGTH ResourceLength, - ACPI_RS_LENGTH MinimumLength, - ACPI_RESOURCE_SOURCE *ResourceSource, - AML_RESOURCE *Aml, - char *StringPtr); - -ACPI_RSDESC_SIZE -AcpiRsSetResourceSource ( - AML_RESOURCE *Aml, - ACPI_RS_LENGTH MinimumLength, - ACPI_RESOURCE_SOURCE *ResourceSource); - -void -AcpiRsSetResourceHeader ( - UINT8 DescriptorType, - ACPI_RSDESC_SIZE TotalLength, - AML_RESOURCE *Aml); - -void -AcpiRsSetResourceLength ( - ACPI_RSDESC_SIZE TotalLength, - AML_RESOURCE *Aml); - - -/* - * rsdump - */ -void -AcpiRsDumpResourceList ( - ACPI_RESOURCE *Resource); - -void -AcpiRsDumpIrqList ( - UINT8 *RouteTable); - - -/* - * Resource conversion tables - */ -extern ACPI_RSCONVERT_INFO AcpiRsConvertDma[]; -extern ACPI_RSCONVERT_INFO AcpiRsConvertEndDpf[]; -extern ACPI_RSCONVERT_INFO AcpiRsConvertIo[]; -extern ACPI_RSCONVERT_INFO AcpiRsConvertFixedIo[]; -extern ACPI_RSCONVERT_INFO AcpiRsConvertEndTag[]; -extern ACPI_RSCONVERT_INFO AcpiRsConvertMemory24[]; -extern ACPI_RSCONVERT_INFO AcpiRsConvertGenericReg[]; -extern ACPI_RSCONVERT_INFO AcpiRsConvertMemory32[]; -extern ACPI_RSCONVERT_INFO AcpiRsConvertFixedMemory32[]; -extern ACPI_RSCONVERT_INFO AcpiRsConvertAddress32[]; -extern ACPI_RSCONVERT_INFO AcpiRsConvertAddress16[]; -extern ACPI_RSCONVERT_INFO AcpiRsConvertExtIrq[]; -extern ACPI_RSCONVERT_INFO AcpiRsConvertAddress64[]; -extern ACPI_RSCONVERT_INFO AcpiRsConvertExtAddress64[]; - -/* These resources require separate get/set tables */ - -extern ACPI_RSCONVERT_INFO AcpiRsGetIrq[]; -extern ACPI_RSCONVERT_INFO AcpiRsGetStartDpf[]; -extern ACPI_RSCONVERT_INFO AcpiRsGetVendorSmall[]; -extern ACPI_RSCONVERT_INFO AcpiRsGetVendorLarge[]; - -extern ACPI_RSCONVERT_INFO AcpiRsSetIrq[]; -extern ACPI_RSCONVERT_INFO AcpiRsSetStartDpf[]; -extern ACPI_RSCONVERT_INFO AcpiRsSetVendor[]; - - -#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) -/* - * rsinfo - */ -extern ACPI_RSDUMP_INFO *AcpiGbl_DumpResourceDispatch[]; - -/* - * rsdump - */ -extern ACPI_RSDUMP_INFO AcpiRsDumpIrq[]; -extern ACPI_RSDUMP_INFO AcpiRsDumpDma[]; -extern ACPI_RSDUMP_INFO AcpiRsDumpStartDpf[]; -extern ACPI_RSDUMP_INFO AcpiRsDumpEndDpf[]; -extern ACPI_RSDUMP_INFO AcpiRsDumpIo[]; -extern ACPI_RSDUMP_INFO AcpiRsDumpFixedIo[]; -extern ACPI_RSDUMP_INFO AcpiRsDumpVendor[]; -extern ACPI_RSDUMP_INFO AcpiRsDumpEndTag[]; -extern ACPI_RSDUMP_INFO AcpiRsDumpMemory24[]; -extern ACPI_RSDUMP_INFO AcpiRsDumpMemory32[]; -extern ACPI_RSDUMP_INFO AcpiRsDumpFixedMemory32[]; -extern ACPI_RSDUMP_INFO AcpiRsDumpAddress16[]; -extern ACPI_RSDUMP_INFO AcpiRsDumpAddress32[]; -extern ACPI_RSDUMP_INFO AcpiRsDumpAddress64[]; -extern ACPI_RSDUMP_INFO AcpiRsDumpExtAddress64[]; -extern ACPI_RSDUMP_INFO AcpiRsDumpExtIrq[]; -extern ACPI_RSDUMP_INFO AcpiRsDumpGenericReg[]; -#endif - -#endif /* __ACRESRC_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/acstruct.h b/sys/contrib/dev/acpica-unix-20061109/include/acstruct.h deleted file mode 100644 index f6ed79a1ac..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/acstruct.h +++ /dev/null @@ -1,330 +0,0 @@ -/****************************************************************************** - * - * Name: acstruct.h - Internal structs - * $Revision: 1.45 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACSTRUCT_H__ -#define __ACSTRUCT_H__ - -/* acpisrc:StructDefs -- for acpisrc conversion */ - -/***************************************************************************** - * - * Tree walking typedefs and structs - * - ****************************************************************************/ - - -/* - * Walk state - current state of a parse tree walk. Used for both a leisurely - * stroll through the tree (for whatever reason), and for control method - * execution. - */ -#define ACPI_NEXT_OP_DOWNWARD 1 -#define ACPI_NEXT_OP_UPWARD 2 - -/* - * Groups of definitions for WalkType used for different implementations of - * walkers (never simultaneously) - flags for interpreter: - */ -#define ACPI_WALK_NON_METHOD 0 -#define ACPI_WALK_METHOD 0x01 -#define ACPI_WALK_METHOD_RESTART 0x02 - -/* Flags for iASL compiler only */ - -#define ACPI_WALK_CONST_REQUIRED 0x10 -#define ACPI_WALK_CONST_OPTIONAL 0x20 - - -typedef struct acpi_walk_state -{ - struct acpi_walk_state *Next; /* Next WalkState in list */ - UINT8 DescriptorType; /* To differentiate various internal objs */ - UINT8 WalkType; - UINT16 Opcode; /* Current AML opcode */ - UINT8 NextOpInfo; /* Info about NextOp */ - UINT8 NumOperands; /* Stack pointer for Operands[] array */ - ACPI_OWNER_ID OwnerId; /* Owner of objects created during the walk */ - BOOLEAN LastPredicate; /* Result of last predicate */ - UINT8 CurrentResult; - UINT8 ReturnUsed; - UINT8 ScopeDepth; - UINT8 PassNumber; /* Parse pass during table load */ - UINT32 AmlOffset; - UINT32 ArgTypes; - UINT32 MethodBreakpoint; /* For single stepping */ - UINT32 UserBreakpoint; /* User AML breakpoint */ - UINT32 ParseFlags; - - ACPI_PARSE_STATE ParserState; /* Current state of parser */ - UINT32 PrevArgTypes; - UINT32 ArgCount; /* push for fixed or var args */ - - struct acpi_namespace_node Arguments[ACPI_METHOD_NUM_ARGS]; /* Control method arguments */ - struct acpi_namespace_node LocalVariables[ACPI_METHOD_NUM_LOCALS]; /* Control method locals */ - union acpi_operand_object *Operands[ACPI_OBJ_NUM_OPERANDS + 1]; /* Operands passed to the interpreter (+1 for NULL terminator) */ - union acpi_operand_object **Params; - - UINT8 *AmlLastWhile; - union acpi_operand_object **CallerReturnDesc; - ACPI_GENERIC_STATE *ControlState; /* List of control states (nested IFs) */ - struct acpi_namespace_node *DeferredNode; /* Used when executing deferred opcodes */ - struct acpi_gpe_event_info *GpeEventInfo; /* Info for GPE (_Lxx/_Exx methods only */ - union acpi_operand_object *ImplicitReturnObj; - struct acpi_namespace_node *MethodCallNode; /* Called method Node*/ - ACPI_PARSE_OBJECT *MethodCallOp; /* MethodCall Op if running a method */ - union acpi_operand_object *MethodDesc; /* Method descriptor if running a method */ - struct acpi_namespace_node *MethodNode; /* Method node if running a method. */ - ACPI_PARSE_OBJECT *Op; /* Current parser op */ - const ACPI_OPCODE_INFO *OpInfo; /* Info on current opcode */ - ACPI_PARSE_OBJECT *Origin; /* Start of walk [Obsolete] */ - union acpi_operand_object *ResultObj; - ACPI_GENERIC_STATE *Results; /* Stack of accumulated results */ - union acpi_operand_object *ReturnDesc; /* Return object, if any */ - ACPI_GENERIC_STATE *ScopeInfo; /* Stack of nested scopes */ - ACPI_PARSE_OBJECT *PrevOp; /* Last op that was processed */ - ACPI_PARSE_OBJECT *NextOp; /* next op to be processed */ - ACPI_THREAD_STATE *Thread; - ACPI_PARSE_DOWNWARDS DescendingCallback; - ACPI_PARSE_UPWARDS AscendingCallback; - -} ACPI_WALK_STATE; - - -/* Info used by AcpiPsInitObjects */ - -typedef struct acpi_init_walk_info -{ - UINT16 MethodCount; - UINT16 DeviceCount; - UINT16 OpRegionCount; - UINT16 FieldCount; - UINT16 BufferCount; - UINT16 PackageCount; - UINT16 OpRegionInit; - UINT16 FieldInit; - UINT16 BufferInit; - UINT16 PackageInit; - UINT16 ObjectCount; - ACPI_OWNER_ID OwnerId; - ACPI_NATIVE_UINT TableIndex; - -} ACPI_INIT_WALK_INFO; - - -typedef struct acpi_get_devices_info -{ - ACPI_WALK_CALLBACK UserFunction; - void *Context; - char *Hid; - -} ACPI_GET_DEVICES_INFO; - - -typedef union acpi_aml_operands -{ - ACPI_OPERAND_OBJECT *Operands[7]; - - struct - { - ACPI_OBJECT_INTEGER *Type; - ACPI_OBJECT_INTEGER *Code; - ACPI_OBJECT_INTEGER *Argument; - - } Fatal; - - struct - { - ACPI_OPERAND_OBJECT *Source; - ACPI_OBJECT_INTEGER *Index; - ACPI_OPERAND_OBJECT *Target; - - } Index; - - struct - { - ACPI_OPERAND_OBJECT *Source; - ACPI_OBJECT_INTEGER *Index; - ACPI_OBJECT_INTEGER *Length; - ACPI_OPERAND_OBJECT *Target; - - } Mid; - -} ACPI_AML_OPERANDS; - - -/* - * Structure used to pass object evaluation parameters. - * Purpose is to reduce CPU stack use. - */ -typedef struct acpi_evaluate_info -{ - ACPI_NAMESPACE_NODE *PrefixNode; - char *Pathname; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT **Parameters; - ACPI_NAMESPACE_NODE *ResolvedNode; - ACPI_OPERAND_OBJECT *ReturnObject; - UINT8 PassNumber; - UINT8 ParameterType; - UINT8 ReturnObjectType; - UINT8 Flags; - -} ACPI_EVALUATE_INFO; - -/* Types for ParameterType above */ - -#define ACPI_PARAM_ARGS 0 -#define ACPI_PARAM_GPE 1 - -/* Values for Flags above */ - -#define ACPI_IGNORE_RETURN_VALUE 1 - - -/* Info used by AcpiNsInitializeDevices */ - -typedef struct acpi_device_walk_info -{ - UINT16 DeviceCount; - UINT16 Num_STA; - UINT16 Num_INI; - ACPI_TABLE_DESC *TableDesc; - ACPI_EVALUATE_INFO *EvaluateInfo; - -} ACPI_DEVICE_WALK_INFO; - - -/* TBD: [Restructure] Merge with struct above */ - -typedef struct acpi_walk_info -{ - UINT32 DebugLevel; - UINT32 Count; - ACPI_OWNER_ID OwnerId; - UINT8 DisplayType; - -} ACPI_WALK_INFO; - -/* Display Types */ - -#define ACPI_DISPLAY_SUMMARY (UINT8) 0 -#define ACPI_DISPLAY_OBJECTS (UINT8) 1 -#define ACPI_DISPLAY_MASK (UINT8) 1 - -#define ACPI_DISPLAY_SHORT (UINT8) 2 - - -#endif diff --git a/sys/contrib/dev/acpica-unix-20061109/include/actables.h b/sys/contrib/dev/acpica-unix-20061109/include/actables.h deleted file mode 100644 index bfb418aa55..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/actables.h +++ /dev/null @@ -1,243 +0,0 @@ -/****************************************************************************** - * - * Name: actables.h - ACPI table management - * $Revision: 1.63 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACTABLES_H__ -#define __ACTABLES_H__ - - -ACPI_STATUS -AcpiAllocateRootTable ( - UINT32 InitialTableCount); - -/* - * tbfadt - FADT parse/convert/validate - */ -void -AcpiTbParseFadt ( - ACPI_NATIVE_UINT TableIndex, - UINT8 Flags); - -void -AcpiTbCreateLocalFadt ( - ACPI_TABLE_HEADER *Table, - UINT32 Length); - - -/* - * tbfind - find ACPI table - */ -ACPI_STATUS -AcpiTbFindTable ( - char *Signature, - char *OemId, - char *OemTableId, - ACPI_NATIVE_UINT *TableIndex); - - -/* - * tbinstal - Table removal and deletion - */ -ACPI_STATUS -AcpiTbResizeRootTableList ( - void); - -ACPI_STATUS -AcpiTbVerifyTable ( - ACPI_TABLE_DESC *TableDesc); - -ACPI_STATUS -AcpiTbAddTable ( - ACPI_TABLE_DESC *TableDesc, - ACPI_NATIVE_UINT *TableIndex); - -ACPI_STATUS -AcpiTbStoreTable ( - ACPI_PHYSICAL_ADDRESS Address, - ACPI_TABLE_HEADER *Table, - UINT32 Length, - UINT8 Flags, - ACPI_NATIVE_UINT *TableIndex); - -void -AcpiTbDeleteTable ( - ACPI_TABLE_DESC *TableDesc); - -void -AcpiTbTerminate ( - void); - -void -AcpiTbDeleteNamespaceByOwner ( - ACPI_NATIVE_UINT TableIndex); - -ACPI_STATUS -AcpiTbAllocateOwnerId ( - ACPI_NATIVE_UINT TableIndex); - -ACPI_STATUS -AcpiTbReleaseOwnerId ( - ACPI_NATIVE_UINT TableIndex); - -ACPI_STATUS -AcpiTbGetOwnerId ( - ACPI_NATIVE_UINT TableIndex, - ACPI_OWNER_ID *OwnerId); - -BOOLEAN -AcpiTbIsTableLoaded ( - ACPI_NATIVE_UINT TableIndex); - -void -AcpiTbSetTableLoadedFlag ( - ACPI_NATIVE_UINT TableIndex, - BOOLEAN IsLoaded); - - -/* - * tbutils - table manager utilities - */ -BOOLEAN -AcpiTbTablesLoaded ( - void); - -void -AcpiTbPrintTableHeader( - ACPI_PHYSICAL_ADDRESS Address, - ACPI_TABLE_HEADER *Header); - -UINT8 -AcpiTbChecksum ( - UINT8 *Buffer, - ACPI_NATIVE_UINT Length); - -ACPI_STATUS -AcpiTbVerifyChecksum ( - ACPI_TABLE_HEADER *Table, - UINT32 Length); - -void -AcpiTbInstallTable ( - ACPI_PHYSICAL_ADDRESS Address, - UINT8 Flags, - char *Signature, - ACPI_NATIVE_UINT TableIndex); - -ACPI_STATUS -AcpiTbParseRootTable ( - ACPI_PHYSICAL_ADDRESS RsdpAddress, - UINT8 Flags); - -#endif /* __ACTABLES_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/actbl.h b/sys/contrib/dev/acpica-unix-20061109/include/actbl.h deleted file mode 100644 index 9590f29489..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/actbl.h +++ /dev/null @@ -1,395 +0,0 @@ -/****************************************************************************** - * - * Name: actbl.h - Basic ACPI Table Definitions - * $Revision: 1.83 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACTBL_H__ -#define __ACTBL_H__ - -/* - * Values for description table header signatures. Useful because they make - * it more difficult to inadvertently type in the wrong signature. - */ -#define ACPI_SIG_DSDT "DSDT" /* Differentiated System Description Table */ -#define ACPI_SIG_FADT "FACP" /* Fixed ACPI Description Table */ -#define ACPI_SIG_FACS "FACS" /* Firmware ACPI Control Structure */ -#define ACPI_SIG_PSDT "PSDT" /* Persistent System Description Table */ -#define ACPI_SIG_RSDP "RSD PTR " /* Root System Description Pointer */ -#define ACPI_SIG_RSDT "RSDT" /* Root System Description Table */ -#define ACPI_SIG_XSDT "XSDT" /* Extended System Description Table */ -#define ACPI_SIG_SSDT "SSDT" /* Secondary System Description Table */ -#define ACPI_RSDP_NAME "RSDP" /* Short name for RSDP, not signature */ - - -/* - * All tables and structures must be byte-packed to match the ACPI - * specification, since the tables are provided by the system BIOS - */ -#pragma pack(1) - - -/* - * These are the ACPI tables that are directly consumed by the subsystem. - * - * The RSDP and FACS do not use the common ACPI table header. All other ACPI - * tables use the header. - * - * Note about bitfields: The UINT8 type is used for bitfields in ACPI tables. - * This is the only type that is even remotely portable. Anything else is not - * portable, so do not use any other bitfield types. - */ - -/******************************************************************************* - * - * ACPI Table Header. This common header is used by all tables except the - * RSDP and FACS. The define is used for direct inclusion of header into - * other ACPI tables - * - ******************************************************************************/ - -typedef struct acpi_table_header -{ - char Signature[ACPI_NAME_SIZE]; /* ASCII table signature */ - UINT32 Length; /* Length of table in bytes, including this header */ - UINT8 Revision; /* ACPI Specification minor version # */ - UINT8 Checksum; /* To make sum of entire table == 0 */ - char OemId[ACPI_OEM_ID_SIZE]; /* ASCII OEM identification */ - char OemTableId[ACPI_OEM_TABLE_ID_SIZE]; /* ASCII OEM table identification */ - UINT32 OemRevision; /* OEM revision number */ - char AslCompilerId[ACPI_NAME_SIZE]; /* ASCII ASL compiler vendor ID */ - UINT32 AslCompilerRevision; /* ASL compiler version */ - -} ACPI_TABLE_HEADER; - - -/* - * GAS - Generic Address Structure (ACPI 2.0+) - * - * Note: Since this structure is used in the ACPI tables, it is byte aligned. - * If misalignment is not supported, access to the Address field must be - * performed with care. - */ -typedef struct acpi_generic_address -{ - UINT8 SpaceId; /* Address space where struct or register exists */ - UINT8 BitWidth; /* Size in bits of given register */ - UINT8 BitOffset; /* Bit offset within the register */ - UINT8 AccessWidth; /* Minimum Access size (ACPI 3.0) */ - UINT64 Address; /* 64-bit address of struct or register */ - -} ACPI_GENERIC_ADDRESS; - - -/******************************************************************************* - * - * RSDP - Root System Description Pointer (Signature is "RSD PTR ") - * - ******************************************************************************/ - -typedef struct acpi_table_rsdp -{ - char Signature[8]; /* ACPI signature, contains "RSD PTR " */ - UINT8 Checksum; /* ACPI 1.0 checksum */ - char OemId[ACPI_OEM_ID_SIZE]; /* OEM identification */ - UINT8 Revision; /* Must be (0) for ACPI 1.0 or (2) for ACPI 2.0+ */ - UINT32 RsdtPhysicalAddress; /* 32-bit physical address of the RSDT */ - UINT32 Length; /* Table length in bytes, including header (ACPI 2.0+) */ - UINT64 XsdtPhysicalAddress; /* 64-bit physical address of the XSDT (ACPI 2.0+) */ - UINT8 ExtendedChecksum; /* Checksum of entire table (ACPI 2.0+) */ - UINT8 Reserved[3]; /* Reserved, must be zero */ - -} ACPI_TABLE_RSDP; - -#define ACPI_RSDP_REV0_SIZE 20 /* Size of original ACPI 1.0 RSDP */ - - -/******************************************************************************* - * - * RSDT/XSDT - Root System Description Tables - * - ******************************************************************************/ - -typedef struct acpi_table_rsdt -{ - ACPI_TABLE_HEADER Header; /* Common ACPI table header */ - UINT32 TableOffsetEntry[1]; /* Array of pointers to ACPI tables */ - -} ACPI_TABLE_RSDT; - -typedef struct acpi_table_xsdt -{ - ACPI_TABLE_HEADER Header; /* Common ACPI table header */ - UINT64 TableOffsetEntry[1]; /* Array of pointers to ACPI tables */ - -} ACPI_TABLE_XSDT; - - -/******************************************************************************* - * - * FACS - Firmware ACPI Control Structure (FACS) - * - ******************************************************************************/ - -typedef struct acpi_table_facs -{ - char Signature[4]; /* ASCII table signature */ - UINT32 Length; /* Length of structure, in bytes */ - UINT32 HardwareSignature; /* Hardware configuration signature */ - UINT32 FirmwareWakingVector; /* 32-bit physical address of the Firmware Waking Vector */ - UINT32 GlobalLock; /* Global Lock for shared hardware resources */ - UINT32 Flags; - UINT64 XFirmwareWakingVector; /* 64-bit version of the Firmware Waking Vector (ACPI 2.0+) */ - UINT8 Version; /* Version of this table (ACPI 2.0+) */ - UINT8 Reserved[31]; /* Reserved, must be zero */ - -} ACPI_TABLE_FACS; - -/* Flag macros */ - -#define ACPI_FACS_S4_BIOS_PRESENT (1) /* 00: S4BIOS support is present */ - -/* Global lock flags */ - -#define ACPI_GLOCK_PENDING 0x01 /* 00: Pending global lock ownership */ -#define ACPI_GLOCK_OWNED 0x02 /* 01: Global lock is owned */ - - -/******************************************************************************* - * - * FADT - Fixed ACPI Description Table (Signature "FACP") - * - ******************************************************************************/ - -/* Fields common to all versions of the FADT */ - -typedef struct acpi_table_fadt -{ - ACPI_TABLE_HEADER Header; /* Common ACPI table header */ - UINT32 Facs; /* 32-bit physical address of FACS */ - UINT32 Dsdt; /* 32-bit physical address of DSDT */ - UINT8 Model; /* System Interrupt Model (ACPI 1.0) - not used in ACPI 2.0+ */ - UINT8 PreferredProfile; /* Conveys preferred power management profile to OSPM. */ - UINT16 SciInterrupt; /* System vector of SCI interrupt */ - UINT32 SmiCommand; /* 32-bit Port address of SMI command port */ - UINT8 AcpiEnable; /* Value to write to smi_cmd to enable ACPI */ - UINT8 AcpiDisable; /* Value to write to smi_cmd to disable ACPI */ - UINT8 S4BiosRequest; /* Value to write to SMI CMD to enter S4BIOS state */ - UINT8 PstateControl; /* Processor performance state control*/ - UINT32 Pm1aEventBlock; /* 32-bit Port address of Power Mgt 1a Event Reg Blk */ - UINT32 Pm1bEventBlock; /* 32-bit Port address of Power Mgt 1b Event Reg Blk */ - UINT32 Pm1aControlBlock; /* 32-bit Port address of Power Mgt 1a Control Reg Blk */ - UINT32 Pm1bControlBlock; /* 32-bit Port address of Power Mgt 1b Control Reg Blk */ - UINT32 Pm2ControlBlock; /* 32-bit Port address of Power Mgt 2 Control Reg Blk */ - UINT32 PmTimerBlock; /* 32-bit Port address of Power Mgt Timer Ctrl Reg Blk */ - UINT32 Gpe0Block; /* 32-bit Port address of General Purpose Event 0 Reg Blk */ - UINT32 Gpe1Block; /* 32-bit Port address of General Purpose Event 1 Reg Blk */ - UINT8 Pm1EventLength; /* Byte Length of ports at Pm1xEventBlock */ - UINT8 Pm1ControlLength; /* Byte Length of ports at Pm1xControlBlock */ - UINT8 Pm2ControlLength; /* Byte Length of ports at Pm2ControlBlock */ - UINT8 PmTimerLength; /* Byte Length of ports at PmTimerBlock */ - UINT8 Gpe0BlockLength; /* Byte Length of ports at Gpe0Block */ - UINT8 Gpe1BlockLength; /* Byte Length of ports at Gpe1Block */ - UINT8 Gpe1Base; /* Offset in GPE number space where GPE1 events start */ - UINT8 CstControl; /* Support for the _CST object and C States change notification */ - UINT16 C2Latency; /* Worst case HW latency to enter/exit C2 state */ - UINT16 C3Latency; /* Worst case HW latency to enter/exit C3 state */ - UINT16 FlushSize; /* Processor's memory cache line width, in bytes */ - UINT16 FlushStride; /* Number of flush strides that need to be read */ - UINT8 DutyOffset; /* Processor duty cycle index in processor's P_CNT reg*/ - UINT8 DutyWidth; /* Processor duty cycle value bit width in P_CNT register.*/ - UINT8 DayAlarm; /* Index to day-of-month alarm in RTC CMOS RAM */ - UINT8 MonthAlarm; /* Index to month-of-year alarm in RTC CMOS RAM */ - UINT8 Century; /* Index to century in RTC CMOS RAM */ - UINT16 BootFlags; /* IA-PC Boot Architecture Flags. See Table 5-10 for description */ - UINT8 Reserved; /* Reserved, must be zero */ - UINT32 Flags; /* Miscellaneous flag bits (see below for individual flags) */ - ACPI_GENERIC_ADDRESS ResetRegister; /* 64-bit address of the Reset register */ - UINT8 ResetValue; /* Value to write to the ResetRegister port to reset the system */ - UINT8 Reserved4[3]; /* Reserved, must be zero */ - UINT64 XFacs; /* 64-bit physical address of FACS */ - UINT64 XDsdt; /* 64-bit physical address of DSDT */ - ACPI_GENERIC_ADDRESS XPm1aEventBlock; /* 64-bit Extended Power Mgt 1a Event Reg Blk address */ - ACPI_GENERIC_ADDRESS XPm1bEventBlock; /* 64-bit Extended Power Mgt 1b Event Reg Blk address */ - ACPI_GENERIC_ADDRESS XPm1aControlBlock; /* 64-bit Extended Power Mgt 1a Control Reg Blk address */ - ACPI_GENERIC_ADDRESS XPm1bControlBlock; /* 64-bit Extended Power Mgt 1b Control Reg Blk address */ - ACPI_GENERIC_ADDRESS XPm2ControlBlock; /* 64-bit Extended Power Mgt 2 Control Reg Blk address */ - ACPI_GENERIC_ADDRESS XPmTimerBlock; /* 64-bit Extended Power Mgt Timer Ctrl Reg Blk address */ - ACPI_GENERIC_ADDRESS XGpe0Block; /* 64-bit Extended General Purpose Event 0 Reg Blk address */ - ACPI_GENERIC_ADDRESS XGpe1Block; /* 64-bit Extended General Purpose Event 1 Reg Blk address */ - -} ACPI_TABLE_FADT; - - -/* FADT flags */ - -#define ACPI_FADT_WBINVD (1) /* 00: The wbinvd instruction works properly */ -#define ACPI_FADT_WBINVD_FLUSH (1<<1) /* 01: The wbinvd flushes but does not invalidate */ -#define ACPI_FADT_C1_SUPPORTED (1<<2) /* 02: All processors support C1 state */ -#define ACPI_FADT_C2_MP_SUPPORTED (1<<3) /* 03: C2 state works on MP system */ -#define ACPI_FADT_POWER_BUTTON (1<<4) /* 04: Power button is handled as a generic feature */ -#define ACPI_FADT_SLEEP_BUTTON (1<<5) /* 05: Sleep button is handled as a generic feature, or not present */ -#define ACPI_FADT_FIXED_RTC (1<<6) /* 06: RTC wakeup stat not in fixed register space */ -#define ACPI_FADT_S4_RTC_WAKE (1<<7) /* 07: RTC wakeup stat not possible from S4 */ -#define ACPI_FADT_32BIT_TIMER (1<<8) /* 08: tmr_val is 32 bits 0=24-bits */ -#define ACPI_FADT_DOCKING_SUPPORTED (1<<9) /* 09: Docking supported */ -#define ACPI_FADT_RESET_REGISTER (1<<10) /* 10: System reset via the FADT RESET_REG supported */ -#define ACPI_FADT_SEALED_CASE (1<<11) /* 11: No internal expansion capabilities and case is sealed */ -#define ACPI_FADT_HEADLESS (1<<12) /* 12: No local video capabilities or local input devices */ -#define ACPI_FADT_SLEEP_TYPE (1<<13) /* 13: Must execute native instruction after writing SLP_TYPx register */ -#define ACPI_FADT_PCI_EXPRESS_WAKE (1<<14) /* 14: System supports PCIEXP_WAKE (STS/EN) bits (ACPI 3.0) */ -#define ACPI_FADT_PLATFORM_CLOCK (1<<15) /* 15: OSPM should use platform-provided timer (ACPI 3.0) */ -#define ACPI_FADT_S4_RTC_VALID (1<<16) /* 16: Contents of RTC_STS valid after S4 wake (ACPI 3.0) */ -#define ACPI_FADT_REMOTE_POWER_ON (1<<17) /* 17: System is compatible with remote power on (ACPI 3.0) */ -#define ACPI_FADT_APIC_CLUSTER (1<<18) /* 18: All local APICs must use cluster model (ACPI 3.0) */ -#define ACPI_FADT_APIC_PHYSICAL (1<<19) /* 19: All local xAPICs must use physical dest mode (ACPI 3.0) */ - - -/* - * FADT Prefered Power Management Profiles - */ -enum AcpiPreferedPmProfiles -{ - PM_UNSPECIFIED = 0, - PM_DESKTOP = 1, - PM_MOBILE = 2, - PM_WORKSTATION = 3, - PM_ENTERPRISE_SERVER = 4, - PM_SOHO_SERVER = 5, - PM_APPLIANCE_PC = 6 -}; - - -/* FADT Boot Arch Flags */ - -#define BAF_LEGACY_DEVICES 0x0001 -#define BAF_8042_KEYBOARD_CONTROLLER 0x0002 - -#define FADT2_REVISION_ID 3 -#define FADT2_MINUS_REVISION_ID 2 - - -/* Reset to default packing */ - -#pragma pack() - -/* - * Get the remaining ACPI tables - */ -#include "actbl1.h" - -/* Macros used to generate offsets to specific table fields */ - -#define ACPI_FADT_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_TABLE_FADT, f) - -#endif /* __ACTBL_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/actbl1.h b/sys/contrib/dev/acpica-unix-20061109/include/actbl1.h deleted file mode 100644 index 2ccef8fe78..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/actbl1.h +++ /dev/null @@ -1,917 +0,0 @@ -/****************************************************************************** - * - * Name: actbl1.h - Additional ACPI table definitions - * $Revision: 1.46 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACTBL1_H__ -#define __ACTBL1_H__ - - -/******************************************************************************* - * - * Additional ACPI Tables - * - * These tables are not consumed directly by the ACPICA subsystem, but are - * included here to support device drivers and the AML disassembler. - * - ******************************************************************************/ - - -/* - * Values for description table header signatures. Useful because they make - * it more difficult to inadvertently type in the wrong signature. - */ -#define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */ -#define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ -#define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */ -#define ACPI_SIG_DBGP "DBGP" /* Debug Port table */ -#define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */ -#define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */ -#define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ -#define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */ -#define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ -#define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ -#define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */ -#define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ -#define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ -#define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */ -#define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ -#define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ - - -/* - * All tables must be byte-packed to match the ACPI specification, since - * the tables are provided by the system BIOS. - */ -#pragma pack(1) - -/* - * Note about bitfields: The UINT8 type is used for bitfields in ACPI tables. - * This is the only type that is even remotely portable. Anything else is not - * portable, so do not use any other bitfield types. - */ - - -/* Common Sub-table header (used in MADT, SRAT, etc.) */ - -typedef struct acpi_subtable_header -{ - UINT8 Type; - UINT8 Length; - -} ACPI_SUBTABLE_HEADER; - - -/******************************************************************************* - * - * ASF - Alert Standard Format table (Signature "ASF!") - * - * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 - * - ******************************************************************************/ - -typedef struct acpi_table_asf -{ - ACPI_TABLE_HEADER Header; /* Common ACPI table header */ - -} ACPI_TABLE_ASF; - - -/* ASF subtable header */ - -typedef struct acpi_asf_header -{ - UINT8 Type; - UINT8 Reserved; - UINT16 Length; - -} ACPI_ASF_HEADER; - - -/* Values for Type field above */ - -enum AcpiAsfType -{ - ACPI_ASF_TYPE_INFO = 0, - ACPI_ASF_TYPE_ALERT = 1, - ACPI_ASF_TYPE_CONTROL = 2, - ACPI_ASF_TYPE_BOOT = 3, - ACPI_ASF_TYPE_ADDRESS = 4, - ACPI_ASF_TYPE_RESERVED = 5 -}; - -/* - * ASF subtables - */ - -/* 0: ASF Information */ - -typedef struct acpi_asf_info -{ - ACPI_ASF_HEADER Header; - UINT8 MinResetValue; - UINT8 MinPollInterval; - UINT16 SystemId; - UINT32 MfgId; - UINT8 Flags; - UINT8 Reserved2[3]; - -} ACPI_ASF_INFO; - -/* 1: ASF Alerts */ - -typedef struct acpi_asf_alert -{ - ACPI_ASF_HEADER Header; - UINT8 AssertMask; - UINT8 DeassertMask; - UINT8 Alerts; - UINT8 DataLength; - -} ACPI_ASF_ALERT; - -typedef struct acpi_asf_alert_data -{ - UINT8 Address; - UINT8 Command; - UINT8 Mask; - UINT8 Value; - UINT8 SensorType; - UINT8 Type; - UINT8 Offset; - UINT8 SourceType; - UINT8 Severity; - UINT8 SensorNumber; - UINT8 Entity; - UINT8 Instance; - -} ACPI_ASF_ALERT_DATA; - -/* 2: ASF Remote Control */ - -typedef struct acpi_asf_remote -{ - ACPI_ASF_HEADER Header; - UINT8 Controls; - UINT8 DataLength; - UINT16 Reserved2; - -} ACPI_ASF_REMOTE; - -typedef struct acpi_asf_control_data -{ - UINT8 Function; - UINT8 Address; - UINT8 Command; - UINT8 Value; - -} ACPI_ASF_CONTROL_DATA; - -/* 3: ASF RMCP Boot Options */ - -typedef struct acpi_asf_rmcp -{ - ACPI_ASF_HEADER Header; - UINT8 Capabilities[7]; - UINT8 CompletionCode; - UINT32 EnterpriseId; - UINT8 Command; - UINT16 Parameter; - UINT16 BootOptions; - UINT16 OemParameters; - -} ACPI_ASF_RMCP; - -/* 4: ASF Address */ - -typedef struct acpi_asf_address -{ - ACPI_ASF_HEADER Header; - UINT8 EpromAddress; - UINT8 Devices; - -} ACPI_ASF_ADDRESS; - - -/******************************************************************************* - * - * BOOT - Simple Boot Flag Table - * - ******************************************************************************/ - -typedef struct acpi_table_boot -{ - ACPI_TABLE_HEADER Header; /* Common ACPI table header */ - UINT8 CmosIndex; /* Index in CMOS RAM for the boot register */ - UINT8 Reserved[3]; - -} ACPI_TABLE_BOOT; - - -/******************************************************************************* - * - * CPEP - Corrected Platform Error Polling table - * - ******************************************************************************/ - -typedef struct acpi_table_cpep -{ - ACPI_TABLE_HEADER Header; /* Common ACPI table header */ - UINT64 Reserved; - -} ACPI_TABLE_CPEP; - - -/* Subtable */ - -typedef struct acpi_cpep_polling -{ - UINT8 Type; - UINT8 Length; - UINT8 Id; /* Processor ID */ - UINT8 Eid; /* Processor EID */ - UINT32 Interval; /* Polling interval (msec) */ - -} ACPI_CPEP_POLLING; - - -/******************************************************************************* - * - * DBGP - Debug Port table - * - ******************************************************************************/ - -typedef struct acpi_table_dbgp -{ - ACPI_TABLE_HEADER Header; /* Common ACPI table header */ - UINT8 Type; /* 0=full 16550, 1=subset of 16550 */ - UINT8 Reserved[3]; - ACPI_GENERIC_ADDRESS DebugPort; - -} ACPI_TABLE_DBGP; - - -/******************************************************************************* - * - * DMAR - DMA Remapping table - * - ******************************************************************************/ - -typedef struct acpi_table_dmar -{ - ACPI_TABLE_HEADER Header; /* Common ACPI table header */ - UINT8 Width; /* Host Address Width */ - UINT8 Reserved[11]; - -} ACPI_TABLE_DMAR; - -/* DMAR subtable header */ - -typedef struct acpi_dmar_header -{ - UINT16 Type; - UINT16 Length; - UINT8 Flags; - UINT8 Reserved[3]; - -} ACPI_DMAR_HEADER; - -/* Values for subtable type in ACPI_DMAR_HEADER */ - -enum AcpiDmarType -{ - ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, - ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, - ACPI_DMAR_TYPE_RESERVED = 2 /* 2 and greater are reserved */ -}; - -typedef struct acpi_dmar_device_scope -{ - UINT8 EntryType; - UINT8 Length; - UINT8 Segment; - UINT8 Bus; - -} ACPI_DMAR_DEVICE_SCOPE; - -/* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE */ - -enum AcpiDmarScopeType -{ - ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, - ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, - ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, - ACPI_DMAR_SCOPE_TYPE_RESERVED = 3 /* 3 and greater are reserved */ -}; - - -/* - * DMAR Sub-tables, correspond to Type in ACPI_DMAR_HEADER - */ - -/* 0: Hardware Unit Definition */ - -typedef struct acpi_dmar_hardware_unit -{ - ACPI_DMAR_HEADER Header; - UINT64 Address; /* Register Base Address */ - -} ACPI_DMAR_HARDWARE_UNIT; - -/* Flags */ - -#define ACPI_DMAR_INCLUDE_ALL (1) - -/* 1: Reserved Memory Defininition */ - -typedef struct acpi_dmar_reserved_memory -{ - ACPI_DMAR_HEADER Header; - UINT64 Address; /* 4K aligned base address */ - UINT64 EndAddress; /* 4K aligned limit address */ - -} ACPI_DMAR_RESERVED_MEMORY; - -/* Flags */ - -#define ACPI_DMAR_ALLOW_ALL (1) - - -/******************************************************************************* - * - * ECDT - Embedded Controller Boot Resources Table - * - ******************************************************************************/ - -typedef struct acpi_table_ecdt -{ - ACPI_TABLE_HEADER Header; /* Common ACPI table header */ - ACPI_GENERIC_ADDRESS Control; /* Address of EC command/status register */ - ACPI_GENERIC_ADDRESS Data; /* Address of EC data register */ - UINT32 Uid; /* Unique ID - must be same as the EC _UID method */ - UINT8 Gpe; /* The GPE for the EC */ - UINT8 Id[1]; /* Full namepath of the EC in the ACPI namespace */ - -} ACPI_TABLE_ECDT; - - -/******************************************************************************* - * - * HPET - High Precision Event Timer table - * - ******************************************************************************/ - -typedef struct acpi_table_hpet -{ - ACPI_TABLE_HEADER Header; /* Common ACPI table header */ - UINT32 Id; /* Hardware ID of event timer block */ - ACPI_GENERIC_ADDRESS Address; /* Address of event timer block */ - UINT8 Sequence; /* HPET sequence number */ - UINT16 MinimumTick; /* Main counter min tick, periodic mode */ - UINT8 Flags; - -} ACPI_TABLE_HPET; - -/*! Flags */ - -#define ACPI_HPET_PAGE_PROTECT (1) /* 00: No page protection */ -#define ACPI_HPET_PAGE_PROTECT_4 (1<<1) /* 01: 4KB page protected */ -#define ACPI_HPET_PAGE_PROTECT_64 (1<<2) /* 02: 64KB page protected */ - -/*! [End] no source code translation !*/ - - -/******************************************************************************* - * - * MADT - Multiple APIC Description Table - * - ******************************************************************************/ - -typedef struct acpi_table_madt -{ - ACPI_TABLE_HEADER Header; /* Common ACPI table header */ - UINT32 Address; /* Physical address of local APIC */ - UINT32 Flags; - -} ACPI_TABLE_MADT; - -/* Flags */ - -#define ACPI_MADT_PCAT_COMPAT (1) /* 00: System also has dual 8259s */ - -/* Values for PCATCompat flag */ - -#define ACPI_MADT_DUAL_PIC 0 -#define ACPI_MADT_MULTIPLE_APIC 1 - - -/* Values for subtable type in ACPI_SUBTABLE_HEADER */ - -enum AcpiMadtType -{ - ACPI_MADT_TYPE_LOCAL_APIC = 0, - ACPI_MADT_TYPE_IO_APIC = 1, - ACPI_MADT_TYPE_INTERRUPT_OVERRIDE = 2, - ACPI_MADT_TYPE_NMI_SOURCE = 3, - ACPI_MADT_TYPE_LOCAL_APIC_NMI = 4, - ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE = 5, - ACPI_MADT_TYPE_IO_SAPIC = 6, - ACPI_MADT_TYPE_LOCAL_SAPIC = 7, - ACPI_MADT_TYPE_INTERRUPT_SOURCE = 8, - ACPI_MADT_TYPE_RESERVED = 9 /* 9 and greater are reserved */ -}; - - -/* - * MADT Sub-tables, correspond to Type in ACPI_SUBTABLE_HEADER - */ - -/* 0: Processor Local APIC */ - -typedef struct acpi_madt_local_apic -{ - ACPI_SUBTABLE_HEADER Header; - UINT8 ProcessorId; /* ACPI processor id */ - UINT8 Id; /* Processor's local APIC id */ - UINT32 LapicFlags; - -} ACPI_MADT_LOCAL_APIC; - -/* 1: IO APIC */ - -typedef struct acpi_madt_io_apic -{ - ACPI_SUBTABLE_HEADER Header; - UINT8 Id; /* I/O APIC ID */ - UINT8 Reserved; /* Reserved - must be zero */ - UINT32 Address; /* APIC physical address */ - UINT32 GlobalIrqBase; /* Global system interrupt where INTI lines start */ - -} ACPI_MADT_IO_APIC; - -/* 2: Interrupt Override */ - -typedef struct acpi_madt_interrupt_override -{ - ACPI_SUBTABLE_HEADER Header; - UINT8 Bus; /* 0 - ISA */ - UINT8 SourceIrq; /* Interrupt source (IRQ) */ - UINT32 GlobalIrq; /* Global system interrupt */ - UINT16 IntiFlags; - -} ACPI_MADT_INTERRUPT_OVERRIDE; - -/* 3: NMI Source */ - -typedef struct acpi_madt_nmi_source -{ - ACPI_SUBTABLE_HEADER Header; - UINT16 IntiFlags; - UINT32 GlobalIrq; /* Global system interrupt */ - -} ACPI_MADT_NMI_SOURCE; - -/* 4: Local APIC NMI */ - -typedef struct acpi_madt_local_apic_nmi -{ - ACPI_SUBTABLE_HEADER Header; - UINT8 ProcessorId; /* ACPI processor id */ - UINT16 IntiFlags; - UINT8 Lint; /* LINTn to which NMI is connected */ - -} ACPI_MADT_LOCAL_APIC_NMI; - -/* 5: Address Override */ - -typedef struct acpi_madt_local_apic_override -{ - ACPI_SUBTABLE_HEADER Header; - UINT16 Reserved; /* Reserved, must be zero */ - UINT64 Address; /* APIC physical address */ - -} ACPI_MADT_LOCAL_APIC_OVERRIDE; - -/* 6: I/O Sapic */ - -typedef struct acpi_madt_io_sapic -{ - ACPI_SUBTABLE_HEADER Header; - UINT8 Id; /* I/O SAPIC ID */ - UINT8 Reserved; /* Reserved, must be zero */ - UINT32 GlobalIrqBase; /* Global interrupt for SAPIC start */ - UINT64 Address; /* SAPIC physical address */ - -} ACPI_MADT_IO_SAPIC; - -/* 7: Local Sapic */ - -typedef struct acpi_madt_local_sapic -{ - ACPI_SUBTABLE_HEADER Header; - UINT8 ProcessorId; /* ACPI processor id */ - UINT8 Id; /* SAPIC ID */ - UINT8 Eid; /* SAPIC EID */ - UINT8 Reserved[3]; /* Reserved, must be zero */ - UINT32 LapicFlags; - UINT32 Uid; /* Numeric UID - ACPI 3.0 */ - char UidString[1]; /* String UID - ACPI 3.0 */ - -} ACPI_MADT_LOCAL_SAPIC; - -/* 8: Platform Interrupt Source */ - -typedef struct acpi_madt_interrupt_source -{ - ACPI_SUBTABLE_HEADER Header; - UINT16 IntiFlags; - UINT8 Type; /* 1=PMI, 2=INIT, 3=corrected */ - UINT8 Id; /* Processor ID */ - UINT8 Eid; /* Processor EID */ - UINT8 IoSapicVector; /* Vector value for PMI interrupts */ - UINT32 GlobalIrq; /* Global system interrupt */ - UINT32 Flags; /* Interrupt Source Flags */ - -} ACPI_MADT_INTERRUPT_SOURCE; - -/* Flags field above */ - -#define ACPI_MADT_CPEI_OVERRIDE (1) - - -/* - * Common flags fields for MADT subtables - */ - -/* MADT Local APIC flags (LapicFlags) */ - -#define ACPI_MADT_ENABLED (1) /* 00: Processor is usable if set */ - -/* MADT MPS INTI flags (IntiFlags) */ - -#define ACPI_MADT_POLARITY_MASK (3) /* 00-01: Polarity of APIC I/O input signals */ -#define ACPI_MADT_TRIGGER_MASK (3<<2) /* 02-03: Trigger mode of APIC input signals */ - -/* Values for MPS INTI flags */ - -#define ACPI_MADT_POLARITY_CONFORMS 0 -#define ACPI_MADT_POLARITY_ACTIVE_HIGH 1 -#define ACPI_MADT_POLARITY_RESERVED 2 -#define ACPI_MADT_POLARITY_ACTIVE_LOW 3 - -#define ACPI_MADT_TRIGGER_CONFORMS (0) -#define ACPI_MADT_TRIGGER_EDGE (1<<2) -#define ACPI_MADT_TRIGGER_RESERVED (2<<2) -#define ACPI_MADT_TRIGGER_LEVEL (3<<2) - - -/******************************************************************************* - * - * MCFG - PCI Memory Mapped Configuration table and sub-table - * - ******************************************************************************/ - -typedef struct acpi_table_mcfg -{ - ACPI_TABLE_HEADER Header; /* Common ACPI table header */ - UINT8 Reserved[8]; - -} ACPI_TABLE_MCFG; - - -/* Subtable */ - -typedef struct acpi_mcfg_allocation -{ - UINT64 Address; /* Base address, processor-relative */ - UINT16 PciSegment; /* PCI segment group number */ - UINT8 StartBusNumber; /* Starting PCI Bus number */ - UINT8 EndBusNumber; /* Final PCI Bus number */ - UINT32 Reserved; - -} ACPI_MCFG_ALLOCATION; - - -/******************************************************************************* - * - * SBST - Smart Battery Specification Table - * - ******************************************************************************/ - -typedef struct acpi_table_sbst -{ - ACPI_TABLE_HEADER Header; /* Common ACPI table header */ - UINT32 WarningLevel; - UINT32 LowLevel; - UINT32 CriticalLevel; - -} ACPI_TABLE_SBST; - - -/******************************************************************************* - * - * SLIT - System Locality Distance Information Table - * - ******************************************************************************/ - -typedef struct acpi_table_slit -{ - ACPI_TABLE_HEADER Header; /* Common ACPI table header */ - UINT64 LocalityCount; - UINT8 Entry[1]; /* Real size = localities^2 */ - -} ACPI_TABLE_SLIT; - - -/******************************************************************************* - * - * SPCR - Serial Port Console Redirection table - * - ******************************************************************************/ - -typedef struct acpi_table_spcr -{ - ACPI_TABLE_HEADER Header; /* Common ACPI table header */ - UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */ - UINT8 Reserved[3]; - ACPI_GENERIC_ADDRESS SerialPort; - UINT8 InterruptType; - UINT8 PcInterrupt; - UINT32 Interrupt; - UINT8 BaudRate; - UINT8 Parity; - UINT8 StopBits; - UINT8 FlowControl; - UINT8 TerminalType; - UINT8 Reserved1; - UINT16 PciDeviceId; - UINT16 PciVendorId; - UINT8 PciBus; - UINT8 PciDevice; - UINT8 PciFunction; - UINT32 PciFlags; - UINT8 PciSegment; - UINT32 Reserved2; - -} ACPI_TABLE_SPCR; - - -/******************************************************************************* - * - * SPMI - Server Platform Management Interface table - * - ******************************************************************************/ - -typedef struct acpi_table_spmi -{ - ACPI_TABLE_HEADER Header; /* Common ACPI table header */ - UINT8 Reserved; - UINT8 InterfaceType; - UINT16 SpecRevision; /* Version of IPMI */ - UINT8 InterruptType; - UINT8 GpeNumber; /* GPE assigned */ - UINT8 Reserved1; - UINT8 PciDeviceFlag; - UINT32 Interrupt; - ACPI_GENERIC_ADDRESS IpmiRegister; - UINT8 PciSegment; - UINT8 PciBus; - UINT8 PciDevice; - UINT8 PciFunction; - -} ACPI_TABLE_SPMI; - - -/******************************************************************************* - * - * SRAT - System Resource Affinity Table - * - ******************************************************************************/ - -typedef struct acpi_table_srat -{ - ACPI_TABLE_HEADER Header; /* Common ACPI table header */ - UINT32 TableRevision; /* Must be value '1' */ - UINT64 Reserved; /* Reserved, must be zero */ - -} ACPI_TABLE_SRAT; - -/* Values for subtable type in ACPI_SUBTABLE_HEADER */ - -enum AcpiSratType -{ - ACPI_SRAT_TYPE_CPU_AFFINITY = 0, - ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1, - ACPI_SRAT_TYPE_RESERVED = 2 -}; - -/* SRAT sub-tables */ - -typedef struct acpi_srat_cpu_affinity -{ - ACPI_SUBTABLE_HEADER Header; - UINT8 ProximityDomainLo; - UINT8 ApicId; - UINT32 Flags; - UINT8 LocalSapicEid; - UINT8 ProximityDomainHi[3]; - UINT32 Reserved; /* Reserved, must be zero */ - -} ACPI_SRAT_CPU_AFFINITY; - -/* Flags */ - -#define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */ - - -typedef struct acpi_srat_mem_affinity -{ - ACPI_SUBTABLE_HEADER Header; - UINT32 ProximityDomain; - UINT16 Reserved; /* Reserved, must be zero */ - UINT64 BaseAddress; - UINT64 Length; - UINT32 MemoryType; /* See acpi_address_range_id */ - UINT32 Flags; - UINT64 Reserved1; /* Reserved, must be zero */ - -} ACPI_SRAT_MEM_AFFINITY; - -/* Flags */ - -#define ACPI_SRAT_MEM_ENABLED (1) /* 00: Use affinity structure */ -#define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */ -#define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */ - -/* Memory types */ - -enum acpi_address_range_id -{ - ACPI_ADDRESS_RANGE_MEMORY = 1, - ACPI_ADDRESS_RANGE_RESERVED = 2, - ACPI_ADDRESS_RANGE_ACPI = 3, - ACPI_ADDRESS_RANGE_NVS = 4, - ACPI_ADDRESS_RANGE_COUNT = 5 -}; - - -/******************************************************************************* - * - * TCPA - Trusted Computing Platform Alliance table - * - ******************************************************************************/ - -typedef struct acpi_table_tcpa -{ - ACPI_TABLE_HEADER Header; /* Common ACPI table header */ - UINT16 Reserved; - UINT32 MaxLogLength; /* Maximum length for the event log area */ - UINT64 LogAddress; /* Address of the event log area */ - -} ACPI_TABLE_TCPA; - - -/******************************************************************************* - * - * WDRT - Watchdog Resource Table - * - ******************************************************************************/ - -typedef struct acpi_table_wdrt -{ - ACPI_TABLE_HEADER Header; /* Common ACPI table header */ - UINT32 HeaderLength; /* Watchdog Header Length */ - UINT8 PciSegment; /* PCI Segment number */ - UINT8 PciBus; /* PCI Bus number */ - UINT8 PciDevice; /* PCI Device number */ - UINT8 PciFunction; /* PCI Function number */ - UINT32 TimerPeriod; /* Period of one timer count (msec) */ - UINT32 MaxCount; /* Maximum counter value supported */ - UINT32 MinCount; /* Minimum counter value */ - UINT8 Flags; - UINT8 Reserved[3]; - UINT32 Entries; /* Number of watchdog entries that follow */ - -} ACPI_TABLE_WDRT; - -/* Flags */ - -#define ACPI_WDRT_TIMER_ENABLED (1) /* 00: Timer enabled */ - - -/* Reset to default packing */ - -#pragma pack() - -#endif /* __ACTBL1_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/actbl2.h b/sys/contrib/dev/acpica-unix-20061109/include/actbl2.h deleted file mode 100644 index e1d6b3cbc1..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/actbl2.h +++ /dev/null @@ -1,123 +0,0 @@ -/****************************************************************************** - * - * Name: actbl2.h - ACPI Specification Revision 2.0 Tables - * $Revision: 1.50 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACTBL2_H__ -#define __ACTBL2_H__ - -/* Code moved to both actbl.h and actbl1.h */ - -#endif /* __ACTBL2_H__ */ - diff --git a/sys/contrib/dev/acpica-unix-20061109/include/actypes.h b/sys/contrib/dev/acpica-unix-20061109/include/actypes.h deleted file mode 100644 index b9f8444efd..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/actypes.h +++ /dev/null @@ -1,1511 +0,0 @@ -/****************************************************************************** - * - * Name: actypes.h - Common data types for the entire ACPI subsystem - * $Revision: 1.312 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACTYPES_H__ -#define __ACTYPES_H__ - -/* acpisrc:StructDefs -- for acpisrc conversion */ - -/* - * ACPI_MACHINE_WIDTH must be specified in an OS- or compiler-dependent header - * and must be either 16, 32, or 64 - */ -#ifndef ACPI_MACHINE_WIDTH -#error ACPI_MACHINE_WIDTH not defined -#endif - -/*! [Begin] no source code translation */ - -/* - * Data type ranges - * Note: These macros are designed to be compiler independent as well as - * working around problems that some 32-bit compilers have with 64-bit - * constants. - */ -#define ACPI_UINT8_MAX (UINT8) (~((UINT8) 0)) /* 0xFF */ -#define ACPI_UINT16_MAX (UINT16)(~((UINT16) 0)) /* 0xFFFF */ -#define ACPI_UINT32_MAX (UINT32)(~((UINT32) 0)) /* 0xFFFFFFFF */ -#define ACPI_UINT64_MAX (UINT64)(~((UINT64) 0)) /* 0xFFFFFFFFFFFFFFFF */ -#define ACPI_ASCII_MAX 0x7F - - -/* - * Architecture-specific ACPICA Subsystem Data Types - * - * The goal of these types is to provide source code portability across - * 16-bit, 32-bit, and 64-bit targets. - * - * 1) The following types are of fixed size for all targets (16/32/64): - * - * BOOLEAN Logical boolean - * - * UINT8 8-bit (1 byte) unsigned value - * UINT16 16-bit (2 byte) unsigned value - * UINT32 32-bit (4 byte) unsigned value - * UINT64 64-bit (8 byte) unsigned value - * - * INT16 16-bit (2 byte) signed value - * INT32 32-bit (4 byte) signed value - * INT64 64-bit (8 byte) signed value - * - * COMPILER_DEPENDENT_UINT64/INT64 - These types are defined in the - * compiler-dependent header(s) and were introduced because there is no common - * 64-bit integer type across the various compilation models, as shown in - * the table below. - * - * Datatype LP64 ILP64 LLP64 ILP32 LP32 16bit - * char 8 8 8 8 8 8 - * short 16 16 16 16 16 16 - * _int32 32 - * int 32 64 32 32 16 16 - * long 64 64 32 32 32 32 - * long long 64 64 - * pointer 64 64 64 32 32 32 - * - * Note: ILP64 and LP32 are currently not supported. - * - * - * 2) These types represent the native word size of the target mode of the - * processor, and may be 16-bit, 32-bit, or 64-bit as required. They are - * usually used for memory allocation, efficient loop counters, and array - * indexes. The types are similar to the size_t type in the C library and are - * required because there is no C type that consistently represents the native - * data width. - * - * ACPI_SIZE 16/32/64-bit unsigned value - * ACPI_NATIVE_UINT 16/32/64-bit unsigned value - * ACPI_NATIVE_INT 16/32/64-bit signed value - * - */ - -/******************************************************************************* - * - * Common types for all compilers, all targets - * - ******************************************************************************/ - -typedef unsigned char BOOLEAN; -typedef unsigned char UINT8; -typedef unsigned short UINT16; -typedef COMPILER_DEPENDENT_UINT64 UINT64; -typedef COMPILER_DEPENDENT_INT64 INT64; - -/*! [End] no source code translation !*/ - - -/******************************************************************************* - * - * Types specific to 64-bit targets - * - ******************************************************************************/ - -#if ACPI_MACHINE_WIDTH == 64 - -/*! [Begin] no source code translation (keep the typedefs as-is) */ - -typedef unsigned int UINT32; -typedef int INT32; - -/*! [End] no source code translation !*/ - - -typedef UINT64 ACPI_NATIVE_UINT; -typedef INT64 ACPI_NATIVE_INT; - -typedef UINT64 ACPI_TABLE_PTR; -typedef UINT64 ACPI_IO_ADDRESS; -typedef UINT64 ACPI_PHYSICAL_ADDRESS; - -#define ACPI_MAX_PTR ACPI_UINT64_MAX -#define ACPI_SIZE_MAX ACPI_UINT64_MAX - -#define ACPI_NATIVE_BOUNDARY 8 -#define ACPI_USE_NATIVE_DIVIDE /* Has native 64-bit integer support */ - -/* - * In the case of the Itanium Processor Family (IPF), the hardware does not - * support misaligned memory transfers. Set the MISALIGNMENT_NOT_SUPPORTED flag - * to indicate that special precautions must be taken to avoid alignment faults. - * (IA64 or ia64 is currently used by existing compilers to indicate IPF.) - * - * Note: EM64T and other X86-64 processors support misaligned transfers, - * so there is no need to define this flag. - */ -#if defined (__IA64__) || defined (__ia64__) -#define ACPI_MISALIGNMENT_NOT_SUPPORTED -#endif - - -/******************************************************************************* - * - * Types specific to 32-bit targets - * - ******************************************************************************/ - -#elif ACPI_MACHINE_WIDTH == 32 - -/*! [Begin] no source code translation (keep the typedefs as-is) */ - -typedef unsigned int UINT32; -typedef int INT32; - -/*! [End] no source code translation !*/ - - -typedef UINT32 ACPI_NATIVE_UINT; -typedef INT32 ACPI_NATIVE_INT; - -typedef UINT64 ACPI_TABLE_PTR; -typedef UINT32 ACPI_IO_ADDRESS; -typedef UINT32 ACPI_PHYSICAL_ADDRESS; - -#define ACPI_MAX_PTR ACPI_UINT32_MAX -#define ACPI_SIZE_MAX ACPI_UINT32_MAX - -#define ACPI_NATIVE_BOUNDARY 4 - - -/******************************************************************************* - * - * Types specific to 16-bit targets - * - ******************************************************************************/ - -#elif ACPI_MACHINE_WIDTH == 16 - -/*! [Begin] no source code translation (keep the typedefs as-is) */ - -typedef unsigned long UINT32; -typedef short INT16; -typedef long INT32; - -/*! [End] no source code translation !*/ - - -typedef UINT16 ACPI_NATIVE_UINT; -typedef INT16 ACPI_NATIVE_INT; - -typedef UINT32 ACPI_TABLE_PTR; -typedef UINT32 ACPI_IO_ADDRESS; -typedef char *ACPI_PHYSICAL_ADDRESS; - -#define ACPI_MAX_PTR ACPI_UINT16_MAX -#define ACPI_SIZE_MAX ACPI_UINT16_MAX - -#define ACPI_NATIVE_BOUNDARY 2 -#define ACPI_USE_NATIVE_DIVIDE /* No 64-bit integers, ok to use native divide */ - -/* 64-bit integers cannot be supported */ - -#define ACPI_NO_INTEGER64_SUPPORT - - -#else - -/* ACPI_MACHINE_WIDTH must be either 64, 32, or 16 */ - -#error unknown ACPI_MACHINE_WIDTH -#endif - - -/* Variable-width type, used instead of clib size_t */ - -typedef ACPI_NATIVE_UINT ACPI_SIZE; - - -/******************************************************************************* - * - * OS-dependent and compiler-dependent types - * - * If the defaults below are not appropriate for the host system, they can - * be defined in the compiler-specific or OS-specific header, and this will - * take precedence. - * - ******************************************************************************/ - - -/* Value returned by AcpiOsGetThreadId */ - -#ifndef ACPI_THREAD_ID -#define ACPI_THREAD_ID ACPI_NATIVE_UINT -#endif - -/* Object returned from AcpiOsCreateLock */ - -#ifndef ACPI_SPINLOCK -#define ACPI_SPINLOCK void * -#endif - -/* Flags for AcpiOsAcquireLock/AcpiOsReleaseLock */ - -#ifndef ACPI_CPU_FLAGS -#define ACPI_CPU_FLAGS ACPI_NATIVE_UINT -#endif - -/* Object returned from AcpiOsCreateCache */ - -#ifndef ACPI_CACHE_T -#define ACPI_CACHE_T ACPI_MEMORY_LIST -#endif - -/* Use C99 uintptr_t for pointer casting if available, "void *" otherwise */ - -#ifndef ACPI_UINTPTR_T -#define ACPI_UINTPTR_T void * -#endif - -/* - * ACPI_PRINTF_LIKE is used to tag functions as "printf-like" because - * some compilers can catch printf format string problems - */ -#ifndef ACPI_PRINTF_LIKE -#define ACPI_PRINTF_LIKE(c) -#endif - -/* - * Some compilers complain about unused variables. Sometimes we don't want to - * use all the variables (for example, _AcpiModuleName). This allows us - * to to tell the compiler in a per-variable manner that a variable - * is unused - */ -#ifndef ACPI_UNUSED_VAR -#define ACPI_UNUSED_VAR -#endif - -/* - * All ACPICA functions that are available to the rest of the kernel are - * tagged with this macro which can be defined as appropriate for the host. - */ -#ifndef ACPI_EXPORT_SYMBOL -#define ACPI_EXPORT_SYMBOL(Symbol) -#endif - - -/******************************************************************************* - * - * Independent types - * - ******************************************************************************/ - -/* Logical defines and NULL */ - -#ifdef FALSE -#undef FALSE -#endif -#define FALSE (1 == 0) - -#ifdef TRUE -#undef TRUE -#endif -#define TRUE (1 == 1) - -#ifndef NULL -#define NULL (void *) 0 -#endif - - -/* - * Mescellaneous types - */ -typedef UINT32 ACPI_STATUS; /* All ACPI Exceptions */ -typedef UINT32 ACPI_NAME; /* 4-byte ACPI name */ -typedef char * ACPI_STRING; /* Null terminated ASCII string */ -typedef void * ACPI_HANDLE; /* Actually a ptr to a NS Node */ - -typedef struct uint64_struct -{ - UINT32 Lo; - UINT32 Hi; - -} UINT64_STRUCT; - -typedef union uint64_overlay -{ - UINT64 Full; - UINT64_STRUCT Part; - -} UINT64_OVERLAY; - -typedef struct uint32_struct -{ - UINT32 Lo; - UINT32 Hi; - -} UINT32_STRUCT; - - -/* Synchronization objects */ - -#define ACPI_MUTEX void * -#define ACPI_SEMAPHORE void * - - -/* - * Acpi integer width. In ACPI version 1, integers are - * 32 bits. In ACPI version 2, integers are 64 bits. - * Note that this pertains to the ACPI integer type only, not - * other integers used in the implementation of the ACPI CA - * subsystem. - */ -#ifdef ACPI_NO_INTEGER64_SUPPORT - -/* 32-bit integers only, no 64-bit support */ - -typedef UINT32 ACPI_INTEGER; -#define ACPI_INTEGER_MAX ACPI_UINT32_MAX -#define ACPI_INTEGER_BIT_SIZE 32 -#define ACPI_MAX_DECIMAL_DIGITS 10 /* 2^32 = 4,294,967,296 */ - -#define ACPI_USE_NATIVE_DIVIDE /* Use compiler native 32-bit divide */ - - -#else - -/* 64-bit integers */ - -typedef UINT64 ACPI_INTEGER; -#define ACPI_INTEGER_MAX ACPI_UINT64_MAX -#define ACPI_INTEGER_BIT_SIZE 64 -#define ACPI_MAX_DECIMAL_DIGITS 20 /* 2^64 = 18,446,744,073,709,551,616 */ - - -#if ACPI_MACHINE_WIDTH == 64 -#define ACPI_USE_NATIVE_DIVIDE /* Use compiler native 64-bit divide */ -#endif -#endif - -#define ACPI_MAX64_DECIMAL_DIGITS 20 -#define ACPI_MAX32_DECIMAL_DIGITS 10 -#define ACPI_MAX16_DECIMAL_DIGITS 5 -#define ACPI_MAX8_DECIMAL_DIGITS 3 - -/* - * Constants with special meanings - */ -#define ACPI_ROOT_OBJECT ACPI_ADD_PTR (ACPI_HANDLE, NULL, ACPI_MAX_PTR) - - -/* - * Initialization sequence - */ -#define ACPI_FULL_INITIALIZATION 0x00 -#define ACPI_NO_ADDRESS_SPACE_INIT 0x01 -#define ACPI_NO_HARDWARE_INIT 0x02 -#define ACPI_NO_EVENT_INIT 0x04 -#define ACPI_NO_HANDLER_INIT 0x08 -#define ACPI_NO_ACPI_ENABLE 0x10 -#define ACPI_NO_DEVICE_INIT 0x20 -#define ACPI_NO_OBJECT_INIT 0x40 - -/* - * Initialization state - */ -#define ACPI_SUBSYSTEM_INITIALIZE 0x01 -#define ACPI_INITIALIZED_OK 0x02 - -/* - * Power state values - */ -#define ACPI_STATE_UNKNOWN (UINT8) 0xFF - -#define ACPI_STATE_S0 (UINT8) 0 -#define ACPI_STATE_S1 (UINT8) 1 -#define ACPI_STATE_S2 (UINT8) 2 -#define ACPI_STATE_S3 (UINT8) 3 -#define ACPI_STATE_S4 (UINT8) 4 -#define ACPI_STATE_S5 (UINT8) 5 -#define ACPI_S_STATES_MAX ACPI_STATE_S5 -#define ACPI_S_STATE_COUNT 6 - -#define ACPI_STATE_D0 (UINT8) 0 -#define ACPI_STATE_D1 (UINT8) 1 -#define ACPI_STATE_D2 (UINT8) 2 -#define ACPI_STATE_D3 (UINT8) 3 -#define ACPI_D_STATES_MAX ACPI_STATE_D3 -#define ACPI_D_STATE_COUNT 4 - -#define ACPI_STATE_C0 (UINT8) 0 -#define ACPI_STATE_C1 (UINT8) 1 -#define ACPI_STATE_C2 (UINT8) 2 -#define ACPI_STATE_C3 (UINT8) 3 -#define ACPI_C_STATES_MAX ACPI_STATE_C3 -#define ACPI_C_STATE_COUNT 4 - -/* - * Sleep type invalid value - */ -#define ACPI_SLEEP_TYPE_MAX 0x7 -#define ACPI_SLEEP_TYPE_INVALID 0xFF - -/* - * Standard notify values - */ -#define ACPI_NOTIFY_BUS_CHECK (UINT8) 0 -#define ACPI_NOTIFY_DEVICE_CHECK (UINT8) 1 -#define ACPI_NOTIFY_DEVICE_WAKE (UINT8) 2 -#define ACPI_NOTIFY_EJECT_REQUEST (UINT8) 3 -#define ACPI_NOTIFY_DEVICE_CHECK_LIGHT (UINT8) 4 -#define ACPI_NOTIFY_FREQUENCY_MISMATCH (UINT8) 5 -#define ACPI_NOTIFY_BUS_MODE_MISMATCH (UINT8) 6 -#define ACPI_NOTIFY_POWER_FAULT (UINT8) 7 - -/* - * Types associated with ACPI names and objects. The first group of - * values (up to ACPI_TYPE_EXTERNAL_MAX) correspond to the definition - * of the ACPI ObjectType() operator (See the ACPI Spec). Therefore, - * only add to the first group if the spec changes. - * - * NOTE: Types must be kept in sync with the global AcpiNsProperties - * and AcpiNsTypeNames arrays. - */ -typedef UINT32 ACPI_OBJECT_TYPE; - -#define ACPI_TYPE_ANY 0x00 -#define ACPI_TYPE_INTEGER 0x01 /* Byte/Word/Dword/Zero/One/Ones */ -#define ACPI_TYPE_STRING 0x02 -#define ACPI_TYPE_BUFFER 0x03 -#define ACPI_TYPE_PACKAGE 0x04 /* ByteConst, multiple DataTerm/Constant/SuperName */ -#define ACPI_TYPE_FIELD_UNIT 0x05 -#define ACPI_TYPE_DEVICE 0x06 /* Name, multiple Node */ -#define ACPI_TYPE_EVENT 0x07 -#define ACPI_TYPE_METHOD 0x08 /* Name, ByteConst, multiple Code */ -#define ACPI_TYPE_MUTEX 0x09 -#define ACPI_TYPE_REGION 0x0A -#define ACPI_TYPE_POWER 0x0B /* Name,ByteConst,WordConst,multi Node */ -#define ACPI_TYPE_PROCESSOR 0x0C /* Name,ByteConst,DWordConst,ByteConst,multi NmO */ -#define ACPI_TYPE_THERMAL 0x0D /* Name, multiple Node */ -#define ACPI_TYPE_BUFFER_FIELD 0x0E -#define ACPI_TYPE_DDB_HANDLE 0x0F -#define ACPI_TYPE_DEBUG_OBJECT 0x10 - -#define ACPI_TYPE_EXTERNAL_MAX 0x10 - -/* - * These are object types that do not map directly to the ACPI - * ObjectType() operator. They are used for various internal purposes only. - * If new predefined ACPI_TYPEs are added (via the ACPI specification), these - * internal types must move upwards. (There is code that depends on these - * values being contiguous with the external types above.) - */ -#define ACPI_TYPE_LOCAL_REGION_FIELD 0x11 -#define ACPI_TYPE_LOCAL_BANK_FIELD 0x12 -#define ACPI_TYPE_LOCAL_INDEX_FIELD 0x13 -#define ACPI_TYPE_LOCAL_REFERENCE 0x14 /* Arg#, Local#, Name, Debug, RefOf, Index */ -#define ACPI_TYPE_LOCAL_ALIAS 0x15 -#define ACPI_TYPE_LOCAL_METHOD_ALIAS 0x16 -#define ACPI_TYPE_LOCAL_NOTIFY 0x17 -#define ACPI_TYPE_LOCAL_ADDRESS_HANDLER 0x18 -#define ACPI_TYPE_LOCAL_RESOURCE 0x19 -#define ACPI_TYPE_LOCAL_RESOURCE_FIELD 0x1A -#define ACPI_TYPE_LOCAL_SCOPE 0x1B /* 1 Name, multiple ObjectList Nodes */ - -#define ACPI_TYPE_NS_NODE_MAX 0x1B /* Last typecode used within a NS Node */ - -/* - * These are special object types that never appear in - * a Namespace node, only in an ACPI_OPERAND_OBJECT - */ -#define ACPI_TYPE_LOCAL_EXTRA 0x1C -#define ACPI_TYPE_LOCAL_DATA 0x1D - -#define ACPI_TYPE_LOCAL_MAX 0x1D - -/* All types above here are invalid */ - -#define ACPI_TYPE_INVALID 0x1E -#define ACPI_TYPE_NOT_FOUND 0xFF - -/* - * All I/O - */ -#define ACPI_READ 0 -#define ACPI_WRITE 1 -#define ACPI_IO_MASK 1 - -/* - * Event Types: Fixed & General Purpose - */ -typedef UINT32 ACPI_EVENT_TYPE; - -/* - * Fixed events - */ -#define ACPI_EVENT_PMTIMER 0 -#define ACPI_EVENT_GLOBAL 1 -#define ACPI_EVENT_POWER_BUTTON 2 -#define ACPI_EVENT_SLEEP_BUTTON 3 -#define ACPI_EVENT_RTC 4 -#define ACPI_EVENT_MAX 4 -#define ACPI_NUM_FIXED_EVENTS ACPI_EVENT_MAX + 1 - -/* - * Event Status - Per event - * ------------- - * The encoding of ACPI_EVENT_STATUS is illustrated below. - * Note that a set bit (1) indicates the property is TRUE - * (e.g. if bit 0 is set then the event is enabled). - * +-------------+-+-+-+ - * | Bits 31:3 |2|1|0| - * +-------------+-+-+-+ - * | | | | - * | | | +- Enabled? - * | | +--- Enabled for wake? - * | +----- Set? - * +----------- - */ -typedef UINT32 ACPI_EVENT_STATUS; - -#define ACPI_EVENT_FLAG_DISABLED (ACPI_EVENT_STATUS) 0x00 -#define ACPI_EVENT_FLAG_ENABLED (ACPI_EVENT_STATUS) 0x01 -#define ACPI_EVENT_FLAG_WAKE_ENABLED (ACPI_EVENT_STATUS) 0x02 -#define ACPI_EVENT_FLAG_SET (ACPI_EVENT_STATUS) 0x04 - -/* - * General Purpose Events (GPE) - */ -#define ACPI_GPE_INVALID 0xFF -#define ACPI_GPE_MAX 0xFF -#define ACPI_NUM_GPE 256 - -#define ACPI_GPE_ENABLE 0 -#define ACPI_GPE_DISABLE 1 - - -/* - * GPE info flags - Per GPE - * +-+-+-+---+---+-+ - * |7|6|5|4:3|2:1|0| - * +-+-+-+---+---+-+ - * | | | | | | - * | | | | | +--- Interrupt type: Edge or Level Triggered - * | | | | +--- Type: Wake-only, Runtime-only, or wake/runtime - * | | | +--- Type of dispatch -- to method, handler, or none - * | | +--- Enabled for runtime? - * | +--- Enabled for wake? - * +--- Unused - */ -#define ACPI_GPE_XRUPT_TYPE_MASK (UINT8) 0x01 -#define ACPI_GPE_LEVEL_TRIGGERED (UINT8) 0x01 -#define ACPI_GPE_EDGE_TRIGGERED (UINT8) 0x00 - -#define ACPI_GPE_TYPE_MASK (UINT8) 0x06 -#define ACPI_GPE_TYPE_WAKE_RUN (UINT8) 0x06 -#define ACPI_GPE_TYPE_WAKE (UINT8) 0x02 -#define ACPI_GPE_TYPE_RUNTIME (UINT8) 0x04 /* Default */ - -#define ACPI_GPE_DISPATCH_MASK (UINT8) 0x18 -#define ACPI_GPE_DISPATCH_HANDLER (UINT8) 0x08 -#define ACPI_GPE_DISPATCH_METHOD (UINT8) 0x10 -#define ACPI_GPE_DISPATCH_NOT_USED (UINT8) 0x00 /* Default */ - -#define ACPI_GPE_RUN_ENABLE_MASK (UINT8) 0x20 -#define ACPI_GPE_RUN_ENABLED (UINT8) 0x20 -#define ACPI_GPE_RUN_DISABLED (UINT8) 0x00 /* Default */ - -#define ACPI_GPE_WAKE_ENABLE_MASK (UINT8) 0x40 -#define ACPI_GPE_WAKE_ENABLED (UINT8) 0x40 -#define ACPI_GPE_WAKE_DISABLED (UINT8) 0x00 /* Default */ - -#define ACPI_GPE_ENABLE_MASK (UINT8) 0x60 /* Both run/wake */ - -/* - * Flags for GPE and Lock interfaces - */ -#define ACPI_EVENT_WAKE_ENABLE 0x2 /* AcpiGpeEnable */ -#define ACPI_EVENT_WAKE_DISABLE 0x2 /* AcpiGpeDisable */ - -#define ACPI_NOT_ISR 0x1 -#define ACPI_ISR 0x0 - - -/* Notify types */ - -#define ACPI_SYSTEM_NOTIFY 0x1 -#define ACPI_DEVICE_NOTIFY 0x2 -#define ACPI_ALL_NOTIFY 0x3 -#define ACPI_MAX_NOTIFY_HANDLER_TYPE 0x3 - -#define ACPI_MAX_SYS_NOTIFY 0x7f - - -/* Address Space (Operation Region) Types */ - -typedef UINT8 ACPI_ADR_SPACE_TYPE; - -#define ACPI_ADR_SPACE_SYSTEM_MEMORY (ACPI_ADR_SPACE_TYPE) 0 -#define ACPI_ADR_SPACE_SYSTEM_IO (ACPI_ADR_SPACE_TYPE) 1 -#define ACPI_ADR_SPACE_PCI_CONFIG (ACPI_ADR_SPACE_TYPE) 2 -#define ACPI_ADR_SPACE_EC (ACPI_ADR_SPACE_TYPE) 3 -#define ACPI_ADR_SPACE_SMBUS (ACPI_ADR_SPACE_TYPE) 4 -#define ACPI_ADR_SPACE_CMOS (ACPI_ADR_SPACE_TYPE) 5 -#define ACPI_ADR_SPACE_PCI_BAR_TARGET (ACPI_ADR_SPACE_TYPE) 6 -#define ACPI_ADR_SPACE_DATA_TABLE (ACPI_ADR_SPACE_TYPE) 7 -#define ACPI_ADR_SPACE_FIXED_HARDWARE (ACPI_ADR_SPACE_TYPE) 127 - - -/* - * BitRegister IDs - * These are bitfields defined within the full ACPI registers - */ -#define ACPI_BITREG_TIMER_STATUS 0x00 -#define ACPI_BITREG_BUS_MASTER_STATUS 0x01 -#define ACPI_BITREG_GLOBAL_LOCK_STATUS 0x02 -#define ACPI_BITREG_POWER_BUTTON_STATUS 0x03 -#define ACPI_BITREG_SLEEP_BUTTON_STATUS 0x04 -#define ACPI_BITREG_RT_CLOCK_STATUS 0x05 -#define ACPI_BITREG_WAKE_STATUS 0x06 -#define ACPI_BITREG_PCIEXP_WAKE_STATUS 0x07 - -#define ACPI_BITREG_TIMER_ENABLE 0x08 -#define ACPI_BITREG_GLOBAL_LOCK_ENABLE 0x09 -#define ACPI_BITREG_POWER_BUTTON_ENABLE 0x0A -#define ACPI_BITREG_SLEEP_BUTTON_ENABLE 0x0B -#define ACPI_BITREG_RT_CLOCK_ENABLE 0x0C -#define ACPI_BITREG_WAKE_ENABLE 0x0D -#define ACPI_BITREG_PCIEXP_WAKE_DISABLE 0x0E - -#define ACPI_BITREG_SCI_ENABLE 0x0F -#define ACPI_BITREG_BUS_MASTER_RLD 0x10 -#define ACPI_BITREG_GLOBAL_LOCK_RELEASE 0x11 -#define ACPI_BITREG_SLEEP_TYPE_A 0x12 -#define ACPI_BITREG_SLEEP_TYPE_B 0x13 -#define ACPI_BITREG_SLEEP_ENABLE 0x14 - -#define ACPI_BITREG_ARB_DISABLE 0x15 - -#define ACPI_BITREG_MAX 0x15 -#define ACPI_NUM_BITREG ACPI_BITREG_MAX + 1 - - -/* - * External ACPI object definition - */ -typedef union acpi_object -{ - ACPI_OBJECT_TYPE Type; /* See definition of AcpiNsType for values */ - struct - { - ACPI_OBJECT_TYPE Type; - ACPI_INTEGER Value; /* The actual number */ - } Integer; - - struct - { - ACPI_OBJECT_TYPE Type; - UINT32 Length; /* # of bytes in string, excluding trailing null */ - char *Pointer; /* points to the string value */ - } String; - - struct - { - ACPI_OBJECT_TYPE Type; - UINT32 Length; /* # of bytes in buffer */ - UINT8 *Pointer; /* points to the buffer */ - } Buffer; - - struct - { - ACPI_OBJECT_TYPE Type; - UINT32 Fill1; - ACPI_HANDLE Handle; /* object reference */ - } Reference; - - struct - { - ACPI_OBJECT_TYPE Type; - UINT32 Count; /* # of elements in package */ - union acpi_object *Elements; /* Pointer to an array of ACPI_OBJECTs */ - } Package; - - struct - { - ACPI_OBJECT_TYPE Type; - UINT32 ProcId; - ACPI_IO_ADDRESS PblkAddress; - UINT32 PblkLength; - } Processor; - - struct - { - ACPI_OBJECT_TYPE Type; - UINT32 SystemLevel; - UINT32 ResourceOrder; - } PowerResource; - -} ACPI_OBJECT; - - -/* - * List of objects, used as a parameter list for control method evaluation - */ -typedef struct acpi_object_list -{ - UINT32 Count; - ACPI_OBJECT *Pointer; - -} ACPI_OBJECT_LIST; - - -/* - * Miscellaneous common Data Structures used by the interfaces - */ -#define ACPI_NO_BUFFER 0 -#define ACPI_ALLOCATE_BUFFER (ACPI_SIZE) (-1) -#define ACPI_ALLOCATE_LOCAL_BUFFER (ACPI_SIZE) (-2) - -typedef struct acpi_buffer -{ - ACPI_SIZE Length; /* Length in bytes of the buffer */ - void *Pointer; /* pointer to buffer */ - -} ACPI_BUFFER; - - -/* - * NameType for AcpiGetName - */ -#define ACPI_FULL_PATHNAME 0 -#define ACPI_SINGLE_NAME 1 -#define ACPI_NAME_TYPE_MAX 1 - - -/* - * Structure and flags for AcpiGetSystemInfo - */ -#define ACPI_SYS_MODE_UNKNOWN 0x0000 -#define ACPI_SYS_MODE_ACPI 0x0001 -#define ACPI_SYS_MODE_LEGACY 0x0002 -#define ACPI_SYS_MODES_MASK 0x0003 - - -/* - * System info returned by AcpiGetSystemInfo() - */ -typedef struct acpi_system_info -{ - UINT32 AcpiCaVersion; - UINT32 Flags; - UINT32 TimerResolution; - UINT32 Reserved1; - UINT32 Reserved2; - UINT32 DebugLevel; - UINT32 DebugLayer; - -} ACPI_SYSTEM_INFO; - - -/* - * Types specific to the OS service interfaces - */ -typedef UINT32 -(ACPI_SYSTEM_XFACE *ACPI_OSD_HANDLER) ( - void *Context); - -typedef void -(ACPI_SYSTEM_XFACE *ACPI_OSD_EXEC_CALLBACK) ( - void *Context); - -/* - * Various handlers and callback procedures - */ -typedef -UINT32 (*ACPI_EVENT_HANDLER) ( - void *Context); - -typedef -void (*ACPI_NOTIFY_HANDLER) ( - ACPI_HANDLE Device, - UINT32 Value, - void *Context); - -typedef -void (*ACPI_OBJECT_HANDLER) ( - ACPI_HANDLE Object, - UINT32 Function, - void *Data); - -typedef -ACPI_STATUS (*ACPI_INIT_HANDLER) ( - ACPI_HANDLE Object, - UINT32 Function); - -#define ACPI_INIT_DEVICE_INI 1 - -typedef -ACPI_STATUS (*ACPI_EXCEPTION_HANDLER) ( - ACPI_STATUS AmlStatus, - ACPI_NAME Name, - UINT16 Opcode, - UINT32 AmlOffset, - void *Context); - - -/* Address Spaces (For Operation Regions) */ - -typedef -ACPI_STATUS (*ACPI_ADR_SPACE_HANDLER) ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - ACPI_INTEGER *Value, - void *HandlerContext, - void *RegionContext); - -#define ACPI_DEFAULT_HANDLER NULL - - -typedef -ACPI_STATUS (*ACPI_ADR_SPACE_SETUP) ( - ACPI_HANDLE RegionHandle, - UINT32 Function, - void *HandlerContext, - void **RegionContext); - -#define ACPI_REGION_ACTIVATE 0 -#define ACPI_REGION_DEACTIVATE 1 - -typedef -ACPI_STATUS (*ACPI_WALK_CALLBACK) ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue); - - -/* Interrupt handler return values */ - -#define ACPI_INTERRUPT_NOT_HANDLED 0x00 -#define ACPI_INTERRUPT_HANDLED 0x01 - - -/* Common string version of device HIDs and UIDs */ - -typedef struct acpi_device_id -{ - char Value[ACPI_DEVICE_ID_LENGTH]; - -} ACPI_DEVICE_ID; - -/* Common string version of device CIDs */ - -typedef struct acpi_compatible_id -{ - char Value[ACPI_MAX_CID_LENGTH]; - -} ACPI_COMPATIBLE_ID; - -typedef struct acpi_compatible_id_list -{ - UINT32 Count; - UINT32 Size; - ACPI_COMPATIBLE_ID Id[1]; - -} ACPI_COMPATIBLE_ID_LIST; - - -/* Structure and flags for AcpiGetObjectInfo */ - -#define ACPI_VALID_STA 0x0001 -#define ACPI_VALID_ADR 0x0002 -#define ACPI_VALID_HID 0x0004 -#define ACPI_VALID_UID 0x0008 -#define ACPI_VALID_CID 0x0010 -#define ACPI_VALID_SXDS 0x0020 - -/* Flags for _STA method */ - -#define ACPI_STA_DEVICE_PRESENT 0x01 -#define ACPI_STA_DEVICE_ENABLED 0x02 -#define ACPI_STA_DEVICE_UI 0x04 -#define ACPI_STA_DEVICE_FUNCTIONING 0x08 -#define ACPI_STA_DEVICE_OK 0x08 /* Synonym */ -#define ACPI_STA_BATTERY_PRESENT 0x10 - - -#define ACPI_COMMON_OBJ_INFO \ - ACPI_OBJECT_TYPE Type; /* ACPI object type */ \ - ACPI_NAME Name /* ACPI object Name */ - - -typedef struct acpi_obj_info_header -{ - ACPI_COMMON_OBJ_INFO; - -} ACPI_OBJ_INFO_HEADER; - - -/* Structure returned from Get Object Info */ - -typedef struct acpi_device_info -{ - ACPI_COMMON_OBJ_INFO; - - UINT32 Valid; /* Indicates which fields below are valid */ - UINT32 CurrentStatus; /* _STA value */ - ACPI_INTEGER Address; /* _ADR value if any */ - ACPI_DEVICE_ID HardwareId; /* _HID value if any */ - ACPI_DEVICE_ID UniqueId; /* _UID value if any */ - UINT8 HighestDstates[4]; /* _SxD values: 0xFF indicates not valid */ - ACPI_COMPATIBLE_ID_LIST CompatibilityId; /* List of _CIDs if any */ - -} ACPI_DEVICE_INFO; - - -/* Context structs for address space handlers */ - -typedef struct acpi_pci_id -{ - UINT16 Segment; - UINT16 Bus; - UINT16 Device; - UINT16 Function; - -} ACPI_PCI_ID; - - -typedef struct acpi_mem_space_context -{ - UINT32 Length; - ACPI_PHYSICAL_ADDRESS Address; - ACPI_PHYSICAL_ADDRESS MappedPhysicalAddress; - UINT8 *MappedLogicalAddress; - ACPI_SIZE MappedLength; - -} ACPI_MEM_SPACE_CONTEXT; - - -/* - * Definitions for Resource Attributes - */ -typedef UINT16 ACPI_RS_LENGTH; /* Resource Length field is fixed at 16 bits */ -typedef UINT32 ACPI_RSDESC_SIZE; /* Max Resource Descriptor size is (Length+3) = (64K-1)+3 */ - -/* - * Memory Attributes - */ -#define ACPI_READ_ONLY_MEMORY (UINT8) 0x00 -#define ACPI_READ_WRITE_MEMORY (UINT8) 0x01 - -#define ACPI_NON_CACHEABLE_MEMORY (UINT8) 0x00 -#define ACPI_CACHABLE_MEMORY (UINT8) 0x01 -#define ACPI_WRITE_COMBINING_MEMORY (UINT8) 0x02 -#define ACPI_PREFETCHABLE_MEMORY (UINT8) 0x03 - -/* - * IO Attributes - * The ISA IO ranges are: n000-n0FFh, n400-n4FFh, n800-n8FFh, nC00-nCFFh. - * The non-ISA IO ranges are: n100-n3FFh, n500-n7FFh, n900-nBFFh, nCD0-nFFFh. - */ -#define ACPI_NON_ISA_ONLY_RANGES (UINT8) 0x01 -#define ACPI_ISA_ONLY_RANGES (UINT8) 0x02 -#define ACPI_ENTIRE_RANGE (ACPI_NON_ISA_ONLY_RANGES | ACPI_ISA_ONLY_RANGES) - -/* Type of translation - 1=Sparse, 0=Dense */ - -#define ACPI_SPARSE_TRANSLATION (UINT8) 0x01 - -/* - * IO Port Descriptor Decode - */ -#define ACPI_DECODE_10 (UINT8) 0x00 /* 10-bit IO address decode */ -#define ACPI_DECODE_16 (UINT8) 0x01 /* 16-bit IO address decode */ - -/* - * IRQ Attributes - */ -#define ACPI_LEVEL_SENSITIVE (UINT8) 0x00 -#define ACPI_EDGE_SENSITIVE (UINT8) 0x01 - -#define ACPI_ACTIVE_HIGH (UINT8) 0x00 -#define ACPI_ACTIVE_LOW (UINT8) 0x01 - -#define ACPI_EXCLUSIVE (UINT8) 0x00 -#define ACPI_SHARED (UINT8) 0x01 - -/* - * DMA Attributes - */ -#define ACPI_COMPATIBILITY (UINT8) 0x00 -#define ACPI_TYPE_A (UINT8) 0x01 -#define ACPI_TYPE_B (UINT8) 0x02 -#define ACPI_TYPE_F (UINT8) 0x03 - -#define ACPI_NOT_BUS_MASTER (UINT8) 0x00 -#define ACPI_BUS_MASTER (UINT8) 0x01 - -#define ACPI_TRANSFER_8 (UINT8) 0x00 -#define ACPI_TRANSFER_8_16 (UINT8) 0x01 -#define ACPI_TRANSFER_16 (UINT8) 0x02 - -/* - * Start Dependent Functions Priority definitions - */ -#define ACPI_GOOD_CONFIGURATION (UINT8) 0x00 -#define ACPI_ACCEPTABLE_CONFIGURATION (UINT8) 0x01 -#define ACPI_SUB_OPTIMAL_CONFIGURATION (UINT8) 0x02 - -/* - * 16, 32 and 64-bit Address Descriptor resource types - */ -#define ACPI_MEMORY_RANGE (UINT8) 0x00 -#define ACPI_IO_RANGE (UINT8) 0x01 -#define ACPI_BUS_NUMBER_RANGE (UINT8) 0x02 - -#define ACPI_ADDRESS_NOT_FIXED (UINT8) 0x00 -#define ACPI_ADDRESS_FIXED (UINT8) 0x01 - -#define ACPI_POS_DECODE (UINT8) 0x00 -#define ACPI_SUB_DECODE (UINT8) 0x01 - -#define ACPI_PRODUCER (UINT8) 0x00 -#define ACPI_CONSUMER (UINT8) 0x01 - - -/* - * If possible, pack the following structures to byte alignment - */ -#ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED -#pragma pack(1) -#endif - -/* UUID data structures for use in vendor-defined resource descriptors */ - -typedef struct acpi_uuid -{ - UINT8 Data[ACPI_UUID_LENGTH]; -} ACPI_UUID; - -typedef struct acpi_vendor_uuid -{ - UINT8 Subtype; - UINT8 Data[ACPI_UUID_LENGTH]; - -} ACPI_VENDOR_UUID; - -/* - * Structures used to describe device resources - */ -typedef struct acpi_resource_irq -{ - UINT8 Triggering; - UINT8 Polarity; - UINT8 Sharable; - UINT8 InterruptCount; - UINT8 Interrupts[1]; - -} ACPI_RESOURCE_IRQ; - - -typedef struct ACPI_RESOURCE_DMA -{ - UINT8 Type; - UINT8 BusMaster; - UINT8 Transfer; - UINT8 ChannelCount; - UINT8 Channels[1]; - -} ACPI_RESOURCE_DMA; - - -typedef struct acpi_resource_start_dependent -{ - UINT8 CompatibilityPriority; - UINT8 PerformanceRobustness; - -} ACPI_RESOURCE_START_DEPENDENT; - - -/* - * END_DEPENDENT_FUNCTIONS_RESOURCE struct is not - * needed because it has no fields - */ - - -typedef struct acpi_resource_io -{ - UINT8 IoDecode; - UINT8 Alignment; - UINT8 AddressLength; - UINT16 Minimum; - UINT16 Maximum; - -} ACPI_RESOURCE_IO; - -typedef struct acpi_resource_fixed_io -{ - UINT16 Address; - UINT8 AddressLength; - -} ACPI_RESOURCE_FIXED_IO; - -typedef struct acpi_resource_vendor -{ - UINT16 ByteLength; - UINT8 ByteData[1]; - -} ACPI_RESOURCE_VENDOR; - -/* Vendor resource with UUID info (introduced in ACPI 3.0) */ - -typedef struct acpi_resource_vendor_typed -{ - UINT16 ByteLength; - UINT8 UuidSubtype; - UINT8 Uuid[ACPI_UUID_LENGTH]; - UINT8 ByteData[1]; - -} ACPI_RESOURCE_VENDOR_TYPED; - -typedef struct acpi_resource_end_tag -{ - UINT8 Checksum; - -} ACPI_RESOURCE_END_TAG; - -typedef struct acpi_resource_memory24 -{ - UINT8 WriteProtect; - UINT16 Minimum; - UINT16 Maximum; - UINT16 Alignment; - UINT16 AddressLength; - -} ACPI_RESOURCE_MEMORY24; - -typedef struct acpi_resource_memory32 -{ - UINT8 WriteProtect; - UINT32 Minimum; - UINT32 Maximum; - UINT32 Alignment; - UINT32 AddressLength; - -} ACPI_RESOURCE_MEMORY32; - -typedef struct acpi_resource_fixed_memory32 -{ - UINT8 WriteProtect; - UINT32 Address; - UINT32 AddressLength; - -} ACPI_RESOURCE_FIXED_MEMORY32; - -typedef struct acpi_memory_attribute -{ - UINT8 WriteProtect; - UINT8 Caching; - UINT8 RangeType; - UINT8 Translation; - -} ACPI_MEMORY_ATTRIBUTE; - -typedef struct acpi_io_attribute -{ - UINT8 RangeType; - UINT8 Translation; - UINT8 TranslationType; - UINT8 Reserved1; - -} ACPI_IO_ATTRIBUTE; - -typedef union acpi_resource_attribute -{ - ACPI_MEMORY_ATTRIBUTE Mem; - ACPI_IO_ATTRIBUTE Io; - - /* Used for the *WordSpace macros */ - - UINT8 TypeSpecific; - -} ACPI_RESOURCE_ATTRIBUTE; - -typedef struct acpi_resource_source -{ - UINT8 Index; - UINT16 StringLength; - char *StringPtr; - -} ACPI_RESOURCE_SOURCE; - -/* Fields common to all address descriptors, 16/32/64 bit */ - -#define ACPI_RESOURCE_ADDRESS_COMMON \ - UINT8 ResourceType; \ - UINT8 ProducerConsumer; \ - UINT8 Decode; \ - UINT8 MinAddressFixed; \ - UINT8 MaxAddressFixed; \ - ACPI_RESOURCE_ATTRIBUTE Info; - -typedef struct acpi_resource_address -{ - ACPI_RESOURCE_ADDRESS_COMMON - -} ACPI_RESOURCE_ADDRESS; - -typedef struct acpi_resource_address16 -{ - ACPI_RESOURCE_ADDRESS_COMMON - UINT16 Granularity; - UINT16 Minimum; - UINT16 Maximum; - UINT16 TranslationOffset; - UINT16 AddressLength; - ACPI_RESOURCE_SOURCE ResourceSource; - -} ACPI_RESOURCE_ADDRESS16; - -typedef struct acpi_resource_address32 -{ - ACPI_RESOURCE_ADDRESS_COMMON - UINT32 Granularity; - UINT32 Minimum; - UINT32 Maximum; - UINT32 TranslationOffset; - UINT32 AddressLength; - ACPI_RESOURCE_SOURCE ResourceSource; - -} ACPI_RESOURCE_ADDRESS32; - -typedef struct acpi_resource_address64 -{ - ACPI_RESOURCE_ADDRESS_COMMON - UINT64 Granularity; - UINT64 Minimum; - UINT64 Maximum; - UINT64 TranslationOffset; - UINT64 AddressLength; - ACPI_RESOURCE_SOURCE ResourceSource; - -} ACPI_RESOURCE_ADDRESS64; - -typedef struct acpi_resource_extended_address64 -{ - ACPI_RESOURCE_ADDRESS_COMMON - UINT8 RevisionID; - UINT64 Granularity; - UINT64 Minimum; - UINT64 Maximum; - UINT64 TranslationOffset; - UINT64 AddressLength; - UINT64 TypeSpecific; - -} ACPI_RESOURCE_EXTENDED_ADDRESS64; - -typedef struct acpi_resource_extended_irq -{ - UINT8 ProducerConsumer; - UINT8 Triggering; - UINT8 Polarity; - UINT8 Sharable; - UINT8 InterruptCount; - ACPI_RESOURCE_SOURCE ResourceSource; - UINT32 Interrupts[1]; - -} ACPI_RESOURCE_EXTENDED_IRQ; - -typedef struct acpi_resource_generic_register -{ - UINT8 SpaceId; - UINT8 BitWidth; - UINT8 BitOffset; - UINT8 AccessSize; - UINT64 Address; - -} ACPI_RESOURCE_GENERIC_REGISTER; - - -/* ACPI_RESOURCE_TYPEs */ - -#define ACPI_RESOURCE_TYPE_IRQ 0 -#define ACPI_RESOURCE_TYPE_DMA 1 -#define ACPI_RESOURCE_TYPE_START_DEPENDENT 2 -#define ACPI_RESOURCE_TYPE_END_DEPENDENT 3 -#define ACPI_RESOURCE_TYPE_IO 4 -#define ACPI_RESOURCE_TYPE_FIXED_IO 5 -#define ACPI_RESOURCE_TYPE_VENDOR 6 -#define ACPI_RESOURCE_TYPE_END_TAG 7 -#define ACPI_RESOURCE_TYPE_MEMORY24 8 -#define ACPI_RESOURCE_TYPE_MEMORY32 9 -#define ACPI_RESOURCE_TYPE_FIXED_MEMORY32 10 -#define ACPI_RESOURCE_TYPE_ADDRESS16 11 -#define ACPI_RESOURCE_TYPE_ADDRESS32 12 -#define ACPI_RESOURCE_TYPE_ADDRESS64 13 -#define ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 14 /* ACPI 3.0 */ -#define ACPI_RESOURCE_TYPE_EXTENDED_IRQ 15 -#define ACPI_RESOURCE_TYPE_GENERIC_REGISTER 16 -#define ACPI_RESOURCE_TYPE_MAX 16 - - -typedef union acpi_resource_data -{ - ACPI_RESOURCE_IRQ Irq; - ACPI_RESOURCE_DMA Dma; - ACPI_RESOURCE_START_DEPENDENT StartDpf; - ACPI_RESOURCE_IO Io; - ACPI_RESOURCE_FIXED_IO FixedIo; - ACPI_RESOURCE_VENDOR Vendor; - ACPI_RESOURCE_VENDOR_TYPED VendorTyped; - ACPI_RESOURCE_END_TAG EndTag; - ACPI_RESOURCE_MEMORY24 Memory24; - ACPI_RESOURCE_MEMORY32 Memory32; - ACPI_RESOURCE_FIXED_MEMORY32 FixedMemory32; - ACPI_RESOURCE_ADDRESS16 Address16; - ACPI_RESOURCE_ADDRESS32 Address32; - ACPI_RESOURCE_ADDRESS64 Address64; - ACPI_RESOURCE_EXTENDED_ADDRESS64 ExtAddress64; - ACPI_RESOURCE_EXTENDED_IRQ ExtendedIrq; - ACPI_RESOURCE_GENERIC_REGISTER GenericReg; - - /* Common fields */ - - ACPI_RESOURCE_ADDRESS Address; /* Common 16/32/64 address fields */ - -} ACPI_RESOURCE_DATA; - - -typedef struct acpi_resource -{ - UINT32 Type; - UINT32 Length; - ACPI_RESOURCE_DATA Data; - -} ACPI_RESOURCE; - -/* restore default alignment */ - -#pragma pack() - - -#define ACPI_RS_SIZE_MIN 12 -#define ACPI_RS_SIZE_NO_DATA 8 /* Id + Length fields */ -#define ACPI_RS_SIZE(Type) (UINT32) (ACPI_RS_SIZE_NO_DATA + sizeof (Type)) - -#define ACPI_NEXT_RESOURCE(Res) (ACPI_RESOURCE *)((UINT8 *) Res + Res->Length) - - -typedef struct acpi_pci_routing_table -{ - UINT32 Length; - UINT32 Pin; - ACPI_INTEGER Address; /* here for 64-bit alignment */ - UINT32 SourceIndex; - char Source[4]; /* pad to 64 bits so sizeof() works in all cases */ - -} ACPI_PCI_ROUTING_TABLE; - - -#endif /* __ACTYPES_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/acutils.h b/sys/contrib/dev/acpica-unix-20061109/include/acutils.h deleted file mode 100644 index 6a0b9d4984..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/acutils.h +++ /dev/null @@ -1,942 +0,0 @@ -/****************************************************************************** - * - * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures - * $Revision: 1.199 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef _ACUTILS_H -#define _ACUTILS_H - - -extern const UINT8 AcpiGbl_ResourceAmlSizes[]; - -/* Strings used by the disassembler and debugger resource dump routines */ - -#if defined(ACPI_DISASSEMBLER) || defined (ACPI_DEBUGGER) - -extern const char *AcpiGbl_BmDecode[]; -extern const char *AcpiGbl_ConfigDecode[]; -extern const char *AcpiGbl_ConsumeDecode[]; -extern const char *AcpiGbl_DecDecode[]; -extern const char *AcpiGbl_HeDecode[]; -extern const char *AcpiGbl_IoDecode[]; -extern const char *AcpiGbl_LlDecode[]; -extern const char *AcpiGbl_MaxDecode[]; -extern const char *AcpiGbl_MemDecode[]; -extern const char *AcpiGbl_MinDecode[]; -extern const char *AcpiGbl_MtpDecode[]; -extern const char *AcpiGbl_RngDecode[]; -extern const char *AcpiGbl_RwDecode[]; -extern const char *AcpiGbl_ShrDecode[]; -extern const char *AcpiGbl_SizDecode[]; -extern const char *AcpiGbl_TrsDecode[]; -extern const char *AcpiGbl_TtpDecode[]; -extern const char *AcpiGbl_TypDecode[]; -#endif - -/* Types for Resource descriptor entries */ - -#define ACPI_INVALID_RESOURCE 0 -#define ACPI_FIXED_LENGTH 1 -#define ACPI_VARIABLE_LENGTH 2 -#define ACPI_SMALL_VARIABLE_LENGTH 3 - -typedef -ACPI_STATUS (*ACPI_WALK_AML_CALLBACK) ( - UINT8 *Aml, - UINT32 Length, - UINT32 Offset, - UINT8 ResourceIndex, - void *Context); - -typedef -ACPI_STATUS (*ACPI_PKG_CALLBACK) ( - UINT8 ObjectType, - ACPI_OPERAND_OBJECT *SourceObject, - ACPI_GENERIC_STATE *State, - void *Context); - -typedef struct acpi_pkg_info -{ - UINT8 *FreeSpace; - ACPI_SIZE Length; - UINT32 ObjectSpace; - UINT32 NumPackages; - -} ACPI_PKG_INFO; - -#define REF_INCREMENT (UINT16) 0 -#define REF_DECREMENT (UINT16) 1 -#define REF_FORCE_DELETE (UINT16) 2 - -/* AcpiUtDumpBuffer */ - -#define DB_BYTE_DISPLAY 1 -#define DB_WORD_DISPLAY 2 -#define DB_DWORD_DISPLAY 4 -#define DB_QWORD_DISPLAY 8 - - -/* - * utglobal - Global data structures and procedures - */ -void -AcpiUtInitGlobals ( - void); - -#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) - -char * -AcpiUtGetMutexName ( - UINT32 MutexId); - -#endif - -char * -AcpiUtGetTypeName ( - ACPI_OBJECT_TYPE Type); - -char * -AcpiUtGetNodeName ( - void *Object); - -char * -AcpiUtGetDescriptorName ( - void *Object); - -char * -AcpiUtGetObjectTypeName ( - ACPI_OPERAND_OBJECT *ObjDesc); - -char * -AcpiUtGetRegionName ( - UINT8 SpaceId); - -char * -AcpiUtGetEventName ( - UINT32 EventId); - -char -AcpiUtHexToAsciiChar ( - ACPI_INTEGER Integer, - UINT32 Position); - -BOOLEAN -AcpiUtValidObjectType ( - ACPI_OBJECT_TYPE Type); - - -/* - * utinit - miscellaneous initialization and shutdown - */ -ACPI_STATUS -AcpiUtHardwareInitialize ( - void); - -void -AcpiUtSubsystemShutdown ( - void); - - -/* - * utclib - Local implementations of C library functions - */ -#ifndef ACPI_USE_SYSTEM_CLIBRARY - -ACPI_SIZE -AcpiUtStrlen ( - const char *String); - -char * -AcpiUtStrcpy ( - char *DstString, - const char *SrcString); - -char * -AcpiUtStrncpy ( - char *DstString, - const char *SrcString, - ACPI_SIZE Count); - -int -AcpiUtMemcmp ( - const char *Buffer1, - const char *Buffer2, - ACPI_SIZE Count); - -int -AcpiUtStrncmp ( - const char *String1, - const char *String2, - ACPI_SIZE Count); - -int -AcpiUtStrcmp ( - const char *String1, - const char *String2); - -char * -AcpiUtStrcat ( - char *DstString, - const char *SrcString); - -char * -AcpiUtStrncat ( - char *DstString, - const char *SrcString, - ACPI_SIZE Count); - -UINT32 -AcpiUtStrtoul ( - const char *String, - char **Terminator, - UINT32 Base); - -char * -AcpiUtStrstr ( - char *String1, - char *String2); - -void * -AcpiUtMemcpy ( - void *Dest, - const void *Src, - ACPI_SIZE Count); - -void * -AcpiUtMemset ( - void *Dest, - ACPI_NATIVE_UINT Value, - ACPI_SIZE Count); - -int -AcpiUtToUpper ( - int c); - -int -AcpiUtToLower ( - int c); - -extern const UINT8 _acpi_ctype[]; - -#define _ACPI_XA 0x00 /* extra alphabetic - not supported */ -#define _ACPI_XS 0x40 /* extra space */ -#define _ACPI_BB 0x00 /* BEL, BS, etc. - not supported */ -#define _ACPI_CN 0x20 /* CR, FF, HT, NL, VT */ -#define _ACPI_DI 0x04 /* '0'-'9' */ -#define _ACPI_LO 0x02 /* 'a'-'z' */ -#define _ACPI_PU 0x10 /* punctuation */ -#define _ACPI_SP 0x08 /* space */ -#define _ACPI_UP 0x01 /* 'A'-'Z' */ -#define _ACPI_XD 0x80 /* '0'-'9', 'A'-'F', 'a'-'f' */ - -#define ACPI_IS_DIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_DI)) -#define ACPI_IS_SPACE(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_SP)) -#define ACPI_IS_XDIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_XD)) -#define ACPI_IS_UPPER(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_UP)) -#define ACPI_IS_LOWER(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO)) -#define ACPI_IS_PRINT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP | _ACPI_DI | _ACPI_SP | _ACPI_PU)) -#define ACPI_IS_ALPHA(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP)) - -#endif /* ACPI_USE_SYSTEM_CLIBRARY */ - - -/* - * utcopy - Object construction and conversion interfaces - */ -ACPI_STATUS -AcpiUtBuildSimpleObject( - ACPI_OPERAND_OBJECT *Obj, - ACPI_OBJECT *UserObj, - UINT8 *DataSpace, - UINT32 *BufferSpaceUsed); - -ACPI_STATUS -AcpiUtBuildPackageObject ( - ACPI_OPERAND_OBJECT *Obj, - UINT8 *Buffer, - UINT32 *SpaceUsed); - -ACPI_STATUS -AcpiUtCopyIobjectToEobject ( - ACPI_OPERAND_OBJECT *Obj, - ACPI_BUFFER *RetBuffer); - -ACPI_STATUS -AcpiUtCopyEobjectToIobject ( - ACPI_OBJECT *Obj, - ACPI_OPERAND_OBJECT **InternalObj); - -ACPI_STATUS -AcpiUtCopyISimpleToIsimple ( - ACPI_OPERAND_OBJECT *SourceObj, - ACPI_OPERAND_OBJECT *DestObj); - -ACPI_STATUS -AcpiUtCopyIobjectToIobject ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT **DestDesc, - ACPI_WALK_STATE *WalkState); - - -/* - * utcreate - Object creation - */ -ACPI_STATUS -AcpiUtUpdateObjectReference ( - ACPI_OPERAND_OBJECT *Object, - UINT16 Action); - - -/* - * utdebug - Debug interfaces - */ -void -AcpiUtInitStackPtrTrace ( - void); - -void -AcpiUtTrackStackPtr ( - void); - -void -AcpiUtTrace ( - UINT32 LineNumber, - const char *FunctionName, - char *ModuleName, - UINT32 ComponentId); - -void -AcpiUtTracePtr ( - UINT32 LineNumber, - const char *FunctionName, - char *ModuleName, - UINT32 ComponentId, - void *Pointer); - -void -AcpiUtTraceU32 ( - UINT32 LineNumber, - const char *FunctionName, - char *ModuleName, - UINT32 ComponentId, - UINT32 Integer); - -void -AcpiUtTraceStr ( - UINT32 LineNumber, - const char *FunctionName, - char *ModuleName, - UINT32 ComponentId, - char *String); - -void -AcpiUtExit ( - UINT32 LineNumber, - const char *FunctionName, - char *ModuleName, - UINT32 ComponentId); - -void -AcpiUtStatusExit ( - UINT32 LineNumber, - const char *FunctionName, - char *ModuleName, - UINT32 ComponentId, - ACPI_STATUS Status); - -void -AcpiUtValueExit ( - UINT32 LineNumber, - const char *FunctionName, - char *ModuleName, - UINT32 ComponentId, - ACPI_INTEGER Value); - -void -AcpiUtPtrExit ( - UINT32 LineNumber, - const char *FunctionName, - char *ModuleName, - UINT32 ComponentId, - UINT8 *Ptr); - -void -AcpiUtDumpBuffer ( - UINT8 *Buffer, - UINT32 Count, - UINT32 Display, - UINT32 componentId); - -void -AcpiUtDumpBuffer2 ( - UINT8 *Buffer, - UINT32 Count, - UINT32 Display); - -void -AcpiUtReportError ( - char *ModuleName, - UINT32 LineNumber); - -void -AcpiUtReportInfo ( - char *ModuleName, - UINT32 LineNumber); - -void -AcpiUtReportWarning ( - char *ModuleName, - UINT32 LineNumber); - -/* Error and message reporting interfaces */ - -void ACPI_INTERNAL_VAR_XFACE -AcpiUtDebugPrint ( - UINT32 RequestedDebugLevel, - UINT32 LineNumber, - const char *FunctionName, - char *ModuleName, - UINT32 ComponentId, - char *Format, - ...) ACPI_PRINTF_LIKE(6); - -void ACPI_INTERNAL_VAR_XFACE -AcpiUtDebugPrintRaw ( - UINT32 RequestedDebugLevel, - UINT32 LineNumber, - const char *FunctionName, - char *ModuleName, - UINT32 ComponentId, - char *Format, - ...) ACPI_PRINTF_LIKE(6); - -void ACPI_INTERNAL_VAR_XFACE -AcpiUtError ( - char *ModuleName, - UINT32 LineNumber, - char *Format, - ...) ACPI_PRINTF_LIKE(3); - -void ACPI_INTERNAL_VAR_XFACE -AcpiUtException ( - char *ModuleName, - UINT32 LineNumber, - ACPI_STATUS Status, - char *Format, - ...) ACPI_PRINTF_LIKE(4); - -void ACPI_INTERNAL_VAR_XFACE -AcpiUtWarning ( - char *ModuleName, - UINT32 LineNumber, - char *Format, - ...) ACPI_PRINTF_LIKE(3); - -void ACPI_INTERNAL_VAR_XFACE -AcpiUtInfo ( - char *ModuleName, - UINT32 LineNumber, - char *Format, - ...) ACPI_PRINTF_LIKE(3); - - -/* - * utdelete - Object deletion and reference counts - */ -void -AcpiUtAddReference ( - ACPI_OPERAND_OBJECT *Object); - -void -AcpiUtRemoveReference ( - ACPI_OPERAND_OBJECT *Object); - -void -AcpiUtDeleteInternalPackageObject ( - ACPI_OPERAND_OBJECT *Object); - -void -AcpiUtDeleteInternalSimpleObject ( - ACPI_OPERAND_OBJECT *Object); - -void -AcpiUtDeleteInternalObjectList ( - ACPI_OPERAND_OBJECT **ObjList); - - -/* - * uteval - object evaluation - */ -ACPI_STATUS -AcpiUtOsiImplementation ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiUtEvaluateObject ( - ACPI_NAMESPACE_NODE *PrefixNode, - char *Path, - UINT32 ExpectedReturnBtypes, - ACPI_OPERAND_OBJECT **ReturnDesc); - -ACPI_STATUS -AcpiUtEvaluateNumericObject ( - char *ObjectName, - ACPI_NAMESPACE_NODE *DeviceNode, - ACPI_INTEGER *Address); - -ACPI_STATUS -AcpiUtExecute_HID ( - ACPI_NAMESPACE_NODE *DeviceNode, - ACPI_DEVICE_ID *Hid); - -ACPI_STATUS -AcpiUtExecute_CID ( - ACPI_NAMESPACE_NODE *DeviceNode, - ACPI_COMPATIBLE_ID_LIST **ReturnCidList); - -ACPI_STATUS -AcpiUtExecute_STA ( - ACPI_NAMESPACE_NODE *DeviceNode, - UINT32 *StatusFlags); - -ACPI_STATUS -AcpiUtExecute_UID ( - ACPI_NAMESPACE_NODE *DeviceNode, - ACPI_DEVICE_ID *Uid); - -ACPI_STATUS -AcpiUtExecute_Sxds ( - ACPI_NAMESPACE_NODE *DeviceNode, - UINT8 *Highest); - - -/* - * utobject - internal object create/delete/cache routines - */ -ACPI_OPERAND_OBJECT * -AcpiUtCreateInternalObjectDbg ( - char *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId, - ACPI_OBJECT_TYPE Type); - -void * -AcpiUtAllocateObjectDescDbg ( - char *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId); - -#define AcpiUtCreateInternalObject(t) AcpiUtCreateInternalObjectDbg (_AcpiModuleName,__LINE__,_COMPONENT,t) -#define AcpiUtAllocateObjectDesc() AcpiUtAllocateObjectDescDbg (_AcpiModuleName,__LINE__,_COMPONENT) - -void -AcpiUtDeleteObjectDesc ( - ACPI_OPERAND_OBJECT *Object); - -BOOLEAN -AcpiUtValidInternalObject ( - void *Object); - -ACPI_OPERAND_OBJECT * -AcpiUtCreateBufferObject ( - ACPI_SIZE BufferSize); - -ACPI_OPERAND_OBJECT * -AcpiUtCreateStringObject ( - ACPI_SIZE StringSize); - -ACPI_STATUS -AcpiUtGetObjectSize( - ACPI_OPERAND_OBJECT *Obj, - ACPI_SIZE *ObjLength); - - -/* - * utstate - Generic state creation/cache routines - */ -void -AcpiUtPushGenericState ( - ACPI_GENERIC_STATE **ListHead, - ACPI_GENERIC_STATE *State); - -ACPI_GENERIC_STATE * -AcpiUtPopGenericState ( - ACPI_GENERIC_STATE **ListHead); - - -ACPI_GENERIC_STATE * -AcpiUtCreateGenericState ( - void); - -ACPI_THREAD_STATE * -AcpiUtCreateThreadState ( - void); - -ACPI_GENERIC_STATE * -AcpiUtCreateUpdateState ( - ACPI_OPERAND_OBJECT *Object, - UINT16 Action); - -ACPI_GENERIC_STATE * -AcpiUtCreatePkgState ( - void *InternalObject, - void *ExternalObject, - UINT16 Index); - -ACPI_STATUS -AcpiUtCreateUpdateStateAndPush ( - ACPI_OPERAND_OBJECT *Object, - UINT16 Action, - ACPI_GENERIC_STATE **StateList); - -ACPI_STATUS -AcpiUtCreatePkgStateAndPush ( - void *InternalObject, - void *ExternalObject, - UINT16 Index, - ACPI_GENERIC_STATE **StateList); - -ACPI_GENERIC_STATE * -AcpiUtCreateControlState ( - void); - -void -AcpiUtDeleteGenericState ( - ACPI_GENERIC_STATE *State); - - -/* - * utmath - */ -ACPI_STATUS -AcpiUtDivide ( - ACPI_INTEGER InDividend, - ACPI_INTEGER InDivisor, - ACPI_INTEGER *OutQuotient, - ACPI_INTEGER *OutRemainder); - -ACPI_STATUS -AcpiUtShortDivide ( - ACPI_INTEGER InDividend, - UINT32 Divisor, - ACPI_INTEGER *OutQuotient, - UINT32 *OutRemainder); - -/* - * utmisc - */ -const char * -AcpiUtValidateException ( - ACPI_STATUS Status); - -BOOLEAN -AcpiUtIsAmlTable ( - ACPI_TABLE_HEADER *Table); - -ACPI_STATUS -AcpiUtAllocateOwnerId ( - ACPI_OWNER_ID *OwnerId); - -void -AcpiUtReleaseOwnerId ( - ACPI_OWNER_ID *OwnerId); - -ACPI_STATUS -AcpiUtWalkPackageTree ( - ACPI_OPERAND_OBJECT *SourceObject, - void *TargetObject, - ACPI_PKG_CALLBACK WalkCallback, - void *Context); - -void -AcpiUtStrupr ( - char *SrcString); - -void -AcpiUtPrintString ( - char *String, - UINT8 MaxLength); - -BOOLEAN -AcpiUtValidAcpiName ( - UINT32 Name); - -ACPI_NAME -AcpiUtRepairName ( - char *Name); - -BOOLEAN -AcpiUtValidAcpiChar ( - char Character, - ACPI_NATIVE_UINT Position); - -ACPI_STATUS -AcpiUtStrtoul64 ( - char *String, - UINT32 Base, - ACPI_INTEGER *RetInteger); - -/* Values for Base above (16=Hex, 10=Decimal) */ - -#define ACPI_ANY_BASE 0 - -UINT32 -AcpiUtDwordByteSwap ( - UINT32 Value); - -void -AcpiUtSetIntegerWidth ( - UINT8 Revision); - -#ifdef ACPI_DEBUG_OUTPUT -void -AcpiUtDisplayInitPathname ( - UINT8 Type, - ACPI_NAMESPACE_NODE *ObjHandle, - char *Path); -#endif - - -/* - * utresrc - */ -ACPI_STATUS -AcpiUtWalkAmlResources ( - UINT8 *Aml, - ACPI_SIZE AmlLength, - ACPI_WALK_AML_CALLBACK UserFunction, - void *Context); - -ACPI_STATUS -AcpiUtValidateResource ( - void *Aml, - UINT8 *ReturnIndex); - -UINT32 -AcpiUtGetDescriptorLength ( - void *Aml); - -UINT16 -AcpiUtGetResourceLength ( - void *Aml); - -UINT8 -AcpiUtGetResourceHeaderLength ( - void *Aml); - -UINT8 -AcpiUtGetResourceType ( - void *Aml); - -ACPI_STATUS -AcpiUtGetResourceEndTag ( - ACPI_OPERAND_OBJECT *ObjDesc, - UINT8 **EndTag); - - -/* - * utmutex - mutex support - */ -ACPI_STATUS -AcpiUtMutexInitialize ( - void); - -void -AcpiUtMutexTerminate ( - void); - -ACPI_STATUS -AcpiUtAcquireMutex ( - ACPI_MUTEX_HANDLE MutexId); - -ACPI_STATUS -AcpiUtReleaseMutex ( - ACPI_MUTEX_HANDLE MutexId); - - -/* - * utalloc - memory allocation and object caching - */ -ACPI_STATUS -AcpiUtCreateCaches ( - void); - -ACPI_STATUS -AcpiUtDeleteCaches ( - void); - -ACPI_STATUS -AcpiUtValidateBuffer ( - ACPI_BUFFER *Buffer); - -ACPI_STATUS -AcpiUtInitializeBuffer ( - ACPI_BUFFER *Buffer, - ACPI_SIZE RequiredLength); - -void * -AcpiUtAllocate ( - ACPI_SIZE Size, - UINT32 Component, - char *Module, - UINT32 Line); - -void * -AcpiUtAllocateZeroed ( - ACPI_SIZE Size, - UINT32 Component, - char *Module, - UINT32 Line); - -#ifdef ACPI_DBG_TRACK_ALLOCATIONS -void * -AcpiUtAllocateAndTrack ( - ACPI_SIZE Size, - UINT32 Component, - char *Module, - UINT32 Line); - -void * -AcpiUtAllocateZeroedAndTrack ( - ACPI_SIZE Size, - UINT32 Component, - char *Module, - UINT32 Line); - -void -AcpiUtFreeAndTrack ( - void *Address, - UINT32 Component, - char *Module, - UINT32 Line); - -void -AcpiUtDumpAllocationInfo ( - void); - -void -AcpiUtDumpAllocations ( - UINT32 Component, - char *Module); - -ACPI_STATUS -AcpiUtCreateList ( - char *ListName, - UINT16 ObjectSize, - ACPI_MEMORY_LIST **ReturnCache); - - -#endif - -#endif /* _ACUTILS_H */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/amlcode.h b/sys/contrib/dev/acpica-unix-20061109/include/amlcode.h deleted file mode 100644 index 81a2c8aa73..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/amlcode.h +++ /dev/null @@ -1,595 +0,0 @@ -/****************************************************************************** - * - * Name: amlcode.h - Definitions for AML, as included in "definition blocks" - * Declarations and definitions contained herein are derived - * directly from the ACPI specification. - * $Revision: 1.85 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __AMLCODE_H__ -#define __AMLCODE_H__ - -/* primary opcodes */ - -#define AML_NULL_CHAR (UINT16) 0x00 - -#define AML_ZERO_OP (UINT16) 0x00 -#define AML_ONE_OP (UINT16) 0x01 -#define AML_UNASSIGNED (UINT16) 0x02 -#define AML_ALIAS_OP (UINT16) 0x06 -#define AML_NAME_OP (UINT16) 0x08 -#define AML_BYTE_OP (UINT16) 0x0a -#define AML_WORD_OP (UINT16) 0x0b -#define AML_DWORD_OP (UINT16) 0x0c -#define AML_STRING_OP (UINT16) 0x0d -#define AML_QWORD_OP (UINT16) 0x0e /* ACPI 2.0 */ -#define AML_SCOPE_OP (UINT16) 0x10 -#define AML_BUFFER_OP (UINT16) 0x11 -#define AML_PACKAGE_OP (UINT16) 0x12 -#define AML_VAR_PACKAGE_OP (UINT16) 0x13 /* ACPI 2.0 */ -#define AML_METHOD_OP (UINT16) 0x14 -#define AML_DUAL_NAME_PREFIX (UINT16) 0x2e -#define AML_MULTI_NAME_PREFIX_OP (UINT16) 0x2f -#define AML_NAME_CHAR_SUBSEQ (UINT16) 0x30 -#define AML_NAME_CHAR_FIRST (UINT16) 0x41 -#define AML_EXTENDED_OP_PREFIX (UINT16) 0x5b -#define AML_ROOT_PREFIX (UINT16) 0x5c -#define AML_PARENT_PREFIX (UINT16) 0x5e -#define AML_LOCAL_OP (UINT16) 0x60 -#define AML_LOCAL0 (UINT16) 0x60 -#define AML_LOCAL1 (UINT16) 0x61 -#define AML_LOCAL2 (UINT16) 0x62 -#define AML_LOCAL3 (UINT16) 0x63 -#define AML_LOCAL4 (UINT16) 0x64 -#define AML_LOCAL5 (UINT16) 0x65 -#define AML_LOCAL6 (UINT16) 0x66 -#define AML_LOCAL7 (UINT16) 0x67 -#define AML_ARG_OP (UINT16) 0x68 -#define AML_ARG0 (UINT16) 0x68 -#define AML_ARG1 (UINT16) 0x69 -#define AML_ARG2 (UINT16) 0x6a -#define AML_ARG3 (UINT16) 0x6b -#define AML_ARG4 (UINT16) 0x6c -#define AML_ARG5 (UINT16) 0x6d -#define AML_ARG6 (UINT16) 0x6e -#define AML_STORE_OP (UINT16) 0x70 -#define AML_REF_OF_OP (UINT16) 0x71 -#define AML_ADD_OP (UINT16) 0x72 -#define AML_CONCAT_OP (UINT16) 0x73 -#define AML_SUBTRACT_OP (UINT16) 0x74 -#define AML_INCREMENT_OP (UINT16) 0x75 -#define AML_DECREMENT_OP (UINT16) 0x76 -#define AML_MULTIPLY_OP (UINT16) 0x77 -#define AML_DIVIDE_OP (UINT16) 0x78 -#define AML_SHIFT_LEFT_OP (UINT16) 0x79 -#define AML_SHIFT_RIGHT_OP (UINT16) 0x7a -#define AML_BIT_AND_OP (UINT16) 0x7b -#define AML_BIT_NAND_OP (UINT16) 0x7c -#define AML_BIT_OR_OP (UINT16) 0x7d -#define AML_BIT_NOR_OP (UINT16) 0x7e -#define AML_BIT_XOR_OP (UINT16) 0x7f -#define AML_BIT_NOT_OP (UINT16) 0x80 -#define AML_FIND_SET_LEFT_BIT_OP (UINT16) 0x81 -#define AML_FIND_SET_RIGHT_BIT_OP (UINT16) 0x82 -#define AML_DEREF_OF_OP (UINT16) 0x83 -#define AML_CONCAT_RES_OP (UINT16) 0x84 /* ACPI 2.0 */ -#define AML_MOD_OP (UINT16) 0x85 /* ACPI 2.0 */ -#define AML_NOTIFY_OP (UINT16) 0x86 -#define AML_SIZE_OF_OP (UINT16) 0x87 -#define AML_INDEX_OP (UINT16) 0x88 -#define AML_MATCH_OP (UINT16) 0x89 -#define AML_CREATE_DWORD_FIELD_OP (UINT16) 0x8a -#define AML_CREATE_WORD_FIELD_OP (UINT16) 0x8b -#define AML_CREATE_BYTE_FIELD_OP (UINT16) 0x8c -#define AML_CREATE_BIT_FIELD_OP (UINT16) 0x8d -#define AML_TYPE_OP (UINT16) 0x8e -#define AML_CREATE_QWORD_FIELD_OP (UINT16) 0x8f /* ACPI 2.0 */ -#define AML_LAND_OP (UINT16) 0x90 -#define AML_LOR_OP (UINT16) 0x91 -#define AML_LNOT_OP (UINT16) 0x92 -#define AML_LEQUAL_OP (UINT16) 0x93 -#define AML_LGREATER_OP (UINT16) 0x94 -#define AML_LLESS_OP (UINT16) 0x95 -#define AML_TO_BUFFER_OP (UINT16) 0x96 /* ACPI 2.0 */ -#define AML_TO_DECSTRING_OP (UINT16) 0x97 /* ACPI 2.0 */ -#define AML_TO_HEXSTRING_OP (UINT16) 0x98 /* ACPI 2.0 */ -#define AML_TO_INTEGER_OP (UINT16) 0x99 /* ACPI 2.0 */ -#define AML_TO_STRING_OP (UINT16) 0x9c /* ACPI 2.0 */ -#define AML_COPY_OP (UINT16) 0x9d /* ACPI 2.0 */ -#define AML_MID_OP (UINT16) 0x9e /* ACPI 2.0 */ -#define AML_CONTINUE_OP (UINT16) 0x9f /* ACPI 2.0 */ -#define AML_IF_OP (UINT16) 0xa0 -#define AML_ELSE_OP (UINT16) 0xa1 -#define AML_WHILE_OP (UINT16) 0xa2 -#define AML_NOOP_OP (UINT16) 0xa3 -#define AML_RETURN_OP (UINT16) 0xa4 -#define AML_BREAK_OP (UINT16) 0xa5 -#define AML_BREAK_POINT_OP (UINT16) 0xcc -#define AML_ONES_OP (UINT16) 0xff - -/* prefixed opcodes */ - -#define AML_EXTENDED_OPCODE (UINT16) 0x5b00 /* prefix for 2-byte opcodes */ - -#define AML_MUTEX_OP (UINT16) 0x5b01 -#define AML_EVENT_OP (UINT16) 0x5b02 -#define AML_SHIFT_RIGHT_BIT_OP (UINT16) 0x5b10 -#define AML_SHIFT_LEFT_BIT_OP (UINT16) 0x5b11 -#define AML_COND_REF_OF_OP (UINT16) 0x5b12 -#define AML_CREATE_FIELD_OP (UINT16) 0x5b13 -#define AML_LOAD_TABLE_OP (UINT16) 0x5b1f /* ACPI 2.0 */ -#define AML_LOAD_OP (UINT16) 0x5b20 -#define AML_STALL_OP (UINT16) 0x5b21 -#define AML_SLEEP_OP (UINT16) 0x5b22 -#define AML_ACQUIRE_OP (UINT16) 0x5b23 -#define AML_SIGNAL_OP (UINT16) 0x5b24 -#define AML_WAIT_OP (UINT16) 0x5b25 -#define AML_RESET_OP (UINT16) 0x5b26 -#define AML_RELEASE_OP (UINT16) 0x5b27 -#define AML_FROM_BCD_OP (UINT16) 0x5b28 -#define AML_TO_BCD_OP (UINT16) 0x5b29 -#define AML_UNLOAD_OP (UINT16) 0x5b2a -#define AML_REVISION_OP (UINT16) 0x5b30 -#define AML_DEBUG_OP (UINT16) 0x5b31 -#define AML_FATAL_OP (UINT16) 0x5b32 -#define AML_TIMER_OP (UINT16) 0x5b33 /* ACPI 3.0 */ -#define AML_REGION_OP (UINT16) 0x5b80 -#define AML_FIELD_OP (UINT16) 0x5b81 -#define AML_DEVICE_OP (UINT16) 0x5b82 -#define AML_PROCESSOR_OP (UINT16) 0x5b83 -#define AML_POWER_RES_OP (UINT16) 0x5b84 -#define AML_THERMAL_ZONE_OP (UINT16) 0x5b85 -#define AML_INDEX_FIELD_OP (UINT16) 0x5b86 -#define AML_BANK_FIELD_OP (UINT16) 0x5b87 -#define AML_DATA_REGION_OP (UINT16) 0x5b88 /* ACPI 2.0 */ - - -/* - * Combination opcodes (actually two one-byte opcodes) - * Used by the disassembler and iASL compiler - */ -#define AML_LGREATEREQUAL_OP (UINT16) 0x9295 -#define AML_LLESSEQUAL_OP (UINT16) 0x9294 -#define AML_LNOTEQUAL_OP (UINT16) 0x9293 - - -/* - * Internal opcodes - * Use only "Unknown" AML opcodes, don't attempt to use - * any valid ACPI ASCII values (A-Z, 0-9, '-') - */ -#define AML_INT_NAMEPATH_OP (UINT16) 0x002d -#define AML_INT_NAMEDFIELD_OP (UINT16) 0x0030 -#define AML_INT_RESERVEDFIELD_OP (UINT16) 0x0031 -#define AML_INT_ACCESSFIELD_OP (UINT16) 0x0032 -#define AML_INT_BYTELIST_OP (UINT16) 0x0033 -#define AML_INT_STATICSTRING_OP (UINT16) 0x0034 -#define AML_INT_METHODCALL_OP (UINT16) 0x0035 -#define AML_INT_RETURN_VALUE_OP (UINT16) 0x0036 -#define AML_INT_EVAL_SUBTREE_OP (UINT16) 0x0037 - - -#define ARG_NONE 0x0 - -/* - * Argument types for the AML Parser - * Each field in the ArgTypes UINT32 is 5 bits, allowing for a maximum of 6 arguments. - * There can be up to 31 unique argument types - * Zero is reserved as end-of-list indicator - */ -#define ARGP_BYTEDATA 0x01 -#define ARGP_BYTELIST 0x02 -#define ARGP_CHARLIST 0x03 -#define ARGP_DATAOBJ 0x04 -#define ARGP_DATAOBJLIST 0x05 -#define ARGP_DWORDDATA 0x06 -#define ARGP_FIELDLIST 0x07 -#define ARGP_NAME 0x08 -#define ARGP_NAMESTRING 0x09 -#define ARGP_OBJLIST 0x0A -#define ARGP_PKGLENGTH 0x0B -#define ARGP_SUPERNAME 0x0C -#define ARGP_TARGET 0x0D -#define ARGP_TERMARG 0x0E -#define ARGP_TERMLIST 0x0F -#define ARGP_WORDDATA 0x10 -#define ARGP_QWORDDATA 0x11 -#define ARGP_SIMPLENAME 0x12 - -/* - * Resolved argument types for the AML Interpreter - * Each field in the ArgTypes UINT32 is 5 bits, allowing for a maximum of 6 arguments. - * There can be up to 31 unique argument types (0 is end-of-arg-list indicator) - * - * Note1: These values are completely independent from the ACPI_TYPEs - * i.e., ARGI_INTEGER != ACPI_TYPE_INTEGER - * - * Note2: If and when 5 bits becomes insufficient, it would probably be best - * to convert to a 6-byte array of argument types, allowing 8 bits per argument. - */ - -/* Single, simple types */ - -#define ARGI_ANYTYPE 0x01 /* Don't care */ -#define ARGI_PACKAGE 0x02 -#define ARGI_EVENT 0x03 -#define ARGI_MUTEX 0x04 -#define ARGI_DDBHANDLE 0x05 - -/* Interchangeable types (via implicit conversion) */ - -#define ARGI_INTEGER 0x06 -#define ARGI_STRING 0x07 -#define ARGI_BUFFER 0x08 -#define ARGI_BUFFER_OR_STRING 0x09 /* Used by MID op only */ -#define ARGI_COMPUTEDATA 0x0A /* Buffer, String, or Integer */ - -/* Reference objects */ - -#define ARGI_INTEGER_REF 0x0B -#define ARGI_OBJECT_REF 0x0C -#define ARGI_DEVICE_REF 0x0D -#define ARGI_REFERENCE 0x0E -#define ARGI_TARGETREF 0x0F /* Target, subject to implicit conversion */ -#define ARGI_FIXED_TARGET 0x10 /* Target, no implicit conversion */ -#define ARGI_SIMPLE_TARGET 0x11 /* Name, Local, Arg -- no implicit conversion */ - -/* Multiple/complex types */ - -#define ARGI_DATAOBJECT 0x12 /* Buffer, String, package or reference to a Node - Used only by SizeOf operator*/ -#define ARGI_COMPLEXOBJ 0x13 /* Buffer, String, or package (Used by INDEX op only) */ -#define ARGI_REF_OR_STRING 0x14 /* Reference or String (Used by DEREFOF op only) */ -#define ARGI_REGION_OR_BUFFER 0x15 /* Used by LOAD op only */ -#define ARGI_DATAREFOBJ 0x16 - -/* Note: types above can expand to 0x1F maximum */ - -#define ARGI_INVALID_OPCODE 0xFFFFFFFF - - -/* - * hash offsets - */ -#define AML_EXTOP_HASH_OFFSET 22 -#define AML_LNOT_HASH_OFFSET 19 - - -/* - * opcode groups and types - */ -#define OPGRP_NAMED 0x01 -#define OPGRP_FIELD 0x02 -#define OPGRP_BYTELIST 0x04 - - -/* - * Opcode information - */ - -/* Opcode flags */ - -#define AML_LOGICAL 0x0001 -#define AML_LOGICAL_NUMERIC 0x0002 -#define AML_MATH 0x0004 -#define AML_CREATE 0x0008 -#define AML_FIELD 0x0010 -#define AML_DEFER 0x0020 -#define AML_NAMED 0x0040 -#define AML_NSNODE 0x0080 -#define AML_NSOPCODE 0x0100 -#define AML_NSOBJECT 0x0200 -#define AML_HAS_RETVAL 0x0400 -#define AML_HAS_TARGET 0x0800 -#define AML_HAS_ARGS 0x1000 -#define AML_CONSTANT 0x2000 -#define AML_NO_OPERAND_RESOLVE 0x4000 - -/* Convenient flag groupings */ - -#define AML_FLAGS_EXEC_0A_0T_1R AML_HAS_RETVAL -#define AML_FLAGS_EXEC_1A_0T_0R AML_HAS_ARGS /* Monadic1 */ -#define AML_FLAGS_EXEC_1A_0T_1R AML_HAS_ARGS | AML_HAS_RETVAL /* Monadic2 */ -#define AML_FLAGS_EXEC_1A_1T_0R AML_HAS_ARGS | AML_HAS_TARGET -#define AML_FLAGS_EXEC_1A_1T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL /* Monadic2R */ -#define AML_FLAGS_EXEC_2A_0T_0R AML_HAS_ARGS /* Dyadic1 */ -#define AML_FLAGS_EXEC_2A_0T_1R AML_HAS_ARGS | AML_HAS_RETVAL /* Dyadic2 */ -#define AML_FLAGS_EXEC_2A_1T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL /* Dyadic2R */ -#define AML_FLAGS_EXEC_2A_2T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL -#define AML_FLAGS_EXEC_3A_0T_0R AML_HAS_ARGS -#define AML_FLAGS_EXEC_3A_1T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL -#define AML_FLAGS_EXEC_6A_0T_1R AML_HAS_ARGS | AML_HAS_RETVAL - - -/* - * The opcode Type is used in a dispatch table, do not change - * without updating the table. - */ -#define AML_TYPE_EXEC_0A_0T_1R 0x00 -#define AML_TYPE_EXEC_1A_0T_0R 0x01 /* Monadic1 */ -#define AML_TYPE_EXEC_1A_0T_1R 0x02 /* Monadic2 */ -#define AML_TYPE_EXEC_1A_1T_0R 0x03 -#define AML_TYPE_EXEC_1A_1T_1R 0x04 /* Monadic2R */ -#define AML_TYPE_EXEC_2A_0T_0R 0x05 /* Dyadic1 */ -#define AML_TYPE_EXEC_2A_0T_1R 0x06 /* Dyadic2 */ -#define AML_TYPE_EXEC_2A_1T_1R 0x07 /* Dyadic2R */ -#define AML_TYPE_EXEC_2A_2T_1R 0x08 -#define AML_TYPE_EXEC_3A_0T_0R 0x09 -#define AML_TYPE_EXEC_3A_1T_1R 0x0A -#define AML_TYPE_EXEC_6A_0T_1R 0x0B -/* End of types used in dispatch table */ - -#define AML_TYPE_LITERAL 0x0B -#define AML_TYPE_CONSTANT 0x0C -#define AML_TYPE_METHOD_ARGUMENT 0x0D -#define AML_TYPE_LOCAL_VARIABLE 0x0E -#define AML_TYPE_DATA_TERM 0x0F - -/* Generic for an op that returns a value */ - -#define AML_TYPE_METHOD_CALL 0x10 - -/* Misc */ - -#define AML_TYPE_CREATE_FIELD 0x11 -#define AML_TYPE_CREATE_OBJECT 0x12 -#define AML_TYPE_CONTROL 0x13 -#define AML_TYPE_NAMED_NO_OBJ 0x14 -#define AML_TYPE_NAMED_FIELD 0x15 -#define AML_TYPE_NAMED_SIMPLE 0x16 -#define AML_TYPE_NAMED_COMPLEX 0x17 -#define AML_TYPE_RETURN 0x18 - -#define AML_TYPE_UNDEFINED 0x19 -#define AML_TYPE_BOGUS 0x1A - -/* AML Package Length encodings */ - -#define ACPI_AML_PACKAGE_TYPE1 0x40 -#define ACPI_AML_PACKAGE_TYPE2 0x4000 -#define ACPI_AML_PACKAGE_TYPE3 0x400000 -#define ACPI_AML_PACKAGE_TYPE4 0x40000000 - -/* - * Opcode classes - */ -#define AML_CLASS_EXECUTE 0x00 -#define AML_CLASS_CREATE 0x01 -#define AML_CLASS_ARGUMENT 0x02 -#define AML_CLASS_NAMED_OBJECT 0x03 -#define AML_CLASS_CONTROL 0x04 -#define AML_CLASS_ASCII 0x05 -#define AML_CLASS_PREFIX 0x06 -#define AML_CLASS_INTERNAL 0x07 -#define AML_CLASS_RETURN_VALUE 0x08 -#define AML_CLASS_METHOD_CALL 0x09 -#define AML_CLASS_UNKNOWN 0x0A - - -/* Predefined Operation Region SpaceIDs */ - -typedef enum -{ - REGION_MEMORY = 0, - REGION_IO, - REGION_PCI_CONFIG, - REGION_EC, - REGION_SMBUS, - REGION_CMOS, - REGION_PCI_BAR, - REGION_DATA_TABLE, /* Internal use only */ - REGION_FIXED_HW = 0x7F - -} AML_REGION_TYPES; - - -/* Comparison operation codes for MatchOp operator */ - -typedef enum -{ - MATCH_MTR = 0, - MATCH_MEQ = 1, - MATCH_MLE = 2, - MATCH_MLT = 3, - MATCH_MGE = 4, - MATCH_MGT = 5 - -} AML_MATCH_OPERATOR; - -#define MAX_MATCH_OPERATOR 5 - - -/* - * FieldFlags - * - * This byte is extracted from the AML and includes three separate - * pieces of information about the field: - * 1) The field access type - * 2) The field update rule - * 3) The lock rule for the field - * - * Bits 00 - 03 : AccessType (AnyAcc, ByteAcc, etc.) - * 04 : LockRule (1 == Lock) - * 05 - 06 : UpdateRule - */ -#define AML_FIELD_ACCESS_TYPE_MASK 0x0F -#define AML_FIELD_LOCK_RULE_MASK 0x10 -#define AML_FIELD_UPDATE_RULE_MASK 0x60 - - -/* 1) Field Access Types */ - -typedef enum -{ - AML_FIELD_ACCESS_ANY = 0x00, - AML_FIELD_ACCESS_BYTE = 0x01, - AML_FIELD_ACCESS_WORD = 0x02, - AML_FIELD_ACCESS_DWORD = 0x03, - AML_FIELD_ACCESS_QWORD = 0x04, /* ACPI 2.0 */ - AML_FIELD_ACCESS_BUFFER = 0x05 /* ACPI 2.0 */ - -} AML_ACCESS_TYPE; - - -/* 2) Field Lock Rules */ - -typedef enum -{ - AML_FIELD_LOCK_NEVER = 0x00, - AML_FIELD_LOCK_ALWAYS = 0x10 - -} AML_LOCK_RULE; - - -/* 3) Field Update Rules */ - -typedef enum -{ - AML_FIELD_UPDATE_PRESERVE = 0x00, - AML_FIELD_UPDATE_WRITE_AS_ONES = 0x20, - AML_FIELD_UPDATE_WRITE_AS_ZEROS = 0x40 - -} AML_UPDATE_RULE; - - -/* - * Field Access Attributes. - * This byte is extracted from the AML via the - * AccessAs keyword - */ -typedef enum -{ - AML_FIELD_ATTRIB_SMB_QUICK = 0x02, - AML_FIELD_ATTRIB_SMB_SEND_RCV = 0x04, - AML_FIELD_ATTRIB_SMB_BYTE = 0x06, - AML_FIELD_ATTRIB_SMB_WORD = 0x08, - AML_FIELD_ATTRIB_SMB_BLOCK = 0x0A, - AML_FIELD_ATTRIB_SMB_WORD_CALL = 0x0C, - AML_FIELD_ATTRIB_SMB_BLOCK_CALL = 0x0D - -} AML_ACCESS_ATTRIBUTE; - - -/* Bit fields in MethodFlags byte */ - -#define AML_METHOD_ARG_COUNT 0x07 -#define AML_METHOD_SERIALIZED 0x08 -#define AML_METHOD_SYNCH_LEVEL 0xF0 - -/* METHOD_FLAGS_ARG_COUNT is not used internally, define additional flags */ - -#define AML_METHOD_INTERNAL_ONLY 0x01 -#define AML_METHOD_RESERVED1 0x02 -#define AML_METHOD_RESERVED2 0x04 - - -#endif /* __AMLCODE_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/amlresrc.h b/sys/contrib/dev/acpica-unix-20061109/include/amlresrc.h deleted file mode 100644 index 22838f2ce8..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/amlresrc.h +++ /dev/null @@ -1,486 +0,0 @@ - -/****************************************************************************** - * - * Module Name: amlresrc.h - AML resource descriptors - * $Revision: 1.39 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -/* acpisrc:StructDefs -- for acpisrc conversion */ - -#ifndef __AMLRESRC_H -#define __AMLRESRC_H - - -/* - * Resource descriptor tags, as defined in the ACPI specification. - * Used to symbolically reference fields within a descriptor. - */ -#define ACPI_RESTAG_ADDRESS "_ADR" -#define ACPI_RESTAG_ALIGNMENT "_ALN" -#define ACPI_RESTAG_ADDRESSSPACE "_ASI" -#define ACPI_RESTAG_ACCESSSIZE "_ASZ" -#define ACPI_RESTAG_TYPESPECIFICATTRIBUTES "_ATT" -#define ACPI_RESTAG_BASEADDRESS "_BAS" -#define ACPI_RESTAG_BUSMASTER "_BM_" /* Master(1), Slave(0) */ -#define ACPI_RESTAG_DECODE "_DEC" -#define ACPI_RESTAG_DMA "_DMA" -#define ACPI_RESTAG_DMATYPE "_TYP" /* Compatible(0), A(1), B(2), F(3) */ -#define ACPI_RESTAG_GRANULARITY "_GRA" -#define ACPI_RESTAG_INTERRUPT "_INT" -#define ACPI_RESTAG_INTERRUPTLEVEL "_LL_" /* ActiveLo(1), ActiveHi(0) */ -#define ACPI_RESTAG_INTERRUPTSHARE "_SHR" /* Shareable(1), NoShare(0) */ -#define ACPI_RESTAG_INTERRUPTTYPE "_HE_" /* Edge(1), Level(0) */ -#define ACPI_RESTAG_LENGTH "_LEN" -#define ACPI_RESTAG_MEMATTRIBUTES "_MTP" /* Memory(0), Reserved(1), ACPI(2), NVS(3) */ -#define ACPI_RESTAG_MEMTYPE "_MEM" /* NonCache(0), Cacheable(1) Cache+combine(2), Cache+prefetch(3) */ -#define ACPI_RESTAG_MAXADDR "_MAX" -#define ACPI_RESTAG_MINADDR "_MIN" -#define ACPI_RESTAG_MAXTYPE "_MAF" -#define ACPI_RESTAG_MINTYPE "_MIF" -#define ACPI_RESTAG_REGISTERBITOFFSET "_RBO" -#define ACPI_RESTAG_REGISTERBITWIDTH "_RBW" -#define ACPI_RESTAG_RANGETYPE "_RNG" -#define ACPI_RESTAG_READWRITETYPE "_RW_" /* ReadOnly(0), Writeable (1) */ -#define ACPI_RESTAG_TRANSLATION "_TRA" -#define ACPI_RESTAG_TRANSTYPE "_TRS" /* Sparse(1), Dense(0) */ -#define ACPI_RESTAG_TYPE "_TTP" /* Translation(1), Static (0) */ -#define ACPI_RESTAG_XFERTYPE "_SIZ" /* 8(0), 8And16(1), 16(2) */ - - -/* Default sizes for "small" resource descriptors */ - -#define ASL_RDESC_IRQ_SIZE 0x02 -#define ASL_RDESC_DMA_SIZE 0x02 -#define ASL_RDESC_ST_DEPEND_SIZE 0x00 -#define ASL_RDESC_END_DEPEND_SIZE 0x00 -#define ASL_RDESC_IO_SIZE 0x07 -#define ASL_RDESC_FIXED_IO_SIZE 0x03 -#define ASL_RDESC_END_TAG_SIZE 0x01 - - -typedef struct asl_resource_node -{ - UINT32 BufferLength; - void *Buffer; - struct asl_resource_node *Next; - -} ASL_RESOURCE_NODE; - - -/* Macros used to generate AML resource length fields */ - -#define ACPI_AML_SIZE_LARGE(r) (sizeof (r) - sizeof (AML_RESOURCE_LARGE_HEADER)) -#define ACPI_AML_SIZE_SMALL(r) (sizeof (r) - sizeof (AML_RESOURCE_SMALL_HEADER)) - -/* - * Resource descriptors defined in the ACPI specification. - * - * Packing/alignment must be BYTE because these descriptors - * are used to overlay the raw AML byte stream. - */ -#pragma pack(1) - -/* - * SMALL descriptors - */ -#define AML_RESOURCE_SMALL_HEADER_COMMON \ - UINT8 DescriptorType; - -typedef struct aml_resource_small_header -{ - AML_RESOURCE_SMALL_HEADER_COMMON - -} AML_RESOURCE_SMALL_HEADER; - - -typedef struct aml_resource_irq -{ - AML_RESOURCE_SMALL_HEADER_COMMON - UINT16 IrqMask; - UINT8 Flags; - -} AML_RESOURCE_IRQ; - - -typedef struct aml_resource_irq_noflags -{ - AML_RESOURCE_SMALL_HEADER_COMMON - UINT16 IrqMask; - -} AML_RESOURCE_IRQ_NOFLAGS; - - -typedef struct aml_resource_dma -{ - AML_RESOURCE_SMALL_HEADER_COMMON - UINT8 DmaChannelMask; - UINT8 Flags; - -} AML_RESOURCE_DMA; - - -typedef struct aml_resource_start_dependent -{ - AML_RESOURCE_SMALL_HEADER_COMMON - UINT8 Flags; - -} AML_RESOURCE_START_DEPENDENT; - - -typedef struct aml_resource_start_dependent_noprio -{ - AML_RESOURCE_SMALL_HEADER_COMMON - -} AML_RESOURCE_START_DEPENDENT_NOPRIO; - - -typedef struct aml_resource_end_dependent -{ - AML_RESOURCE_SMALL_HEADER_COMMON - -} AML_RESOURCE_END_DEPENDENT; - - -typedef struct aml_resource_io -{ - AML_RESOURCE_SMALL_HEADER_COMMON - UINT8 Flags; - UINT16 Minimum; - UINT16 Maximum; - UINT8 Alignment; - UINT8 AddressLength; - -} AML_RESOURCE_IO; - - -typedef struct aml_resource_fixed_io -{ - AML_RESOURCE_SMALL_HEADER_COMMON - UINT16 Address; - UINT8 AddressLength; - -} AML_RESOURCE_FIXED_IO; - - -typedef struct aml_resource_vendor_small -{ - AML_RESOURCE_SMALL_HEADER_COMMON - -} AML_RESOURCE_VENDOR_SMALL; - - -typedef struct aml_resource_end_tag -{ - AML_RESOURCE_SMALL_HEADER_COMMON - UINT8 Checksum; - -} AML_RESOURCE_END_TAG; - - -/* - * LARGE descriptors - */ -#define AML_RESOURCE_LARGE_HEADER_COMMON \ - UINT8 DescriptorType;\ - UINT16 ResourceLength; - -typedef struct aml_resource_large_header -{ - AML_RESOURCE_LARGE_HEADER_COMMON - -} AML_RESOURCE_LARGE_HEADER; - - -typedef struct aml_resource_memory24 -{ - AML_RESOURCE_LARGE_HEADER_COMMON - UINT8 Flags; - UINT16 Minimum; - UINT16 Maximum; - UINT16 Alignment; - UINT16 AddressLength; - -} AML_RESOURCE_MEMORY24; - - -typedef struct aml_resource_vendor_large -{ - AML_RESOURCE_LARGE_HEADER_COMMON - -} AML_RESOURCE_VENDOR_LARGE; - - -typedef struct aml_resource_memory32 -{ - AML_RESOURCE_LARGE_HEADER_COMMON - UINT8 Flags; - UINT32 Minimum; - UINT32 Maximum; - UINT32 Alignment; - UINT32 AddressLength; - -} AML_RESOURCE_MEMORY32; - - -typedef struct aml_resource_fixed_memory32 -{ - AML_RESOURCE_LARGE_HEADER_COMMON - UINT8 Flags; - UINT32 Address; - UINT32 AddressLength; - -} AML_RESOURCE_FIXED_MEMORY32; - - -#define AML_RESOURCE_ADDRESS_COMMON \ - UINT8 ResourceType; \ - UINT8 Flags; \ - UINT8 SpecificFlags; - - -typedef struct aml_resource_address -{ - AML_RESOURCE_LARGE_HEADER_COMMON - AML_RESOURCE_ADDRESS_COMMON - -} AML_RESOURCE_ADDRESS; - - -typedef struct aml_resource_extended_address64 -{ - AML_RESOURCE_LARGE_HEADER_COMMON - AML_RESOURCE_ADDRESS_COMMON - UINT8 RevisionID; - UINT8 Reserved; - UINT64 Granularity; - UINT64 Minimum; - UINT64 Maximum; - UINT64 TranslationOffset; - UINT64 AddressLength; - UINT64 TypeSpecific; - -} AML_RESOURCE_EXTENDED_ADDRESS64; - -#define AML_RESOURCE_EXTENDED_ADDRESS_REVISION 1 /* ACPI 3.0 */ - - -typedef struct aml_resource_address64 -{ - AML_RESOURCE_LARGE_HEADER_COMMON - AML_RESOURCE_ADDRESS_COMMON - UINT64 Granularity; - UINT64 Minimum; - UINT64 Maximum; - UINT64 TranslationOffset; - UINT64 AddressLength; - -} AML_RESOURCE_ADDRESS64; - - -typedef struct aml_resource_address32 -{ - AML_RESOURCE_LARGE_HEADER_COMMON - AML_RESOURCE_ADDRESS_COMMON - UINT32 Granularity; - UINT32 Minimum; - UINT32 Maximum; - UINT32 TranslationOffset; - UINT32 AddressLength; - -} AML_RESOURCE_ADDRESS32; - - -typedef struct aml_resource_address16 -{ - AML_RESOURCE_LARGE_HEADER_COMMON - AML_RESOURCE_ADDRESS_COMMON - UINT16 Granularity; - UINT16 Minimum; - UINT16 Maximum; - UINT16 TranslationOffset; - UINT16 AddressLength; - -} AML_RESOURCE_ADDRESS16; - - -typedef struct aml_resource_extended_irq -{ - AML_RESOURCE_LARGE_HEADER_COMMON - UINT8 Flags; - UINT8 InterruptCount; - UINT32 Interrupts[1]; - /* ResSourceIndex, ResSource optional fields follow */ - -} AML_RESOURCE_EXTENDED_IRQ; - - -typedef struct aml_resource_generic_register -{ - AML_RESOURCE_LARGE_HEADER_COMMON - UINT8 AddressSpaceId; - UINT8 BitWidth; - UINT8 BitOffset; - UINT8 AccessSize; /* ACPI 3.0, was previously Reserved */ - UINT64 Address; - -} AML_RESOURCE_GENERIC_REGISTER; - -/* restore default alignment */ - -#pragma pack() - -/* Union of all resource descriptors, so we can allocate the worst case */ - -typedef union aml_resource -{ - /* Descriptor headers */ - - UINT8 DescriptorType; - AML_RESOURCE_SMALL_HEADER SmallHeader; - AML_RESOURCE_LARGE_HEADER LargeHeader; - - /* Small resource descriptors */ - - AML_RESOURCE_IRQ Irq; - AML_RESOURCE_DMA Dma; - AML_RESOURCE_START_DEPENDENT StartDpf; - AML_RESOURCE_END_DEPENDENT EndDpf; - AML_RESOURCE_IO Io; - AML_RESOURCE_FIXED_IO FixedIo; - AML_RESOURCE_VENDOR_SMALL VendorSmall; - AML_RESOURCE_END_TAG EndTag; - - /* Large resource descriptors */ - - AML_RESOURCE_MEMORY24 Memory24; - AML_RESOURCE_GENERIC_REGISTER GenericReg; - AML_RESOURCE_VENDOR_LARGE VendorLarge; - AML_RESOURCE_MEMORY32 Memory32; - AML_RESOURCE_FIXED_MEMORY32 FixedMemory32; - AML_RESOURCE_ADDRESS16 Address16; - AML_RESOURCE_ADDRESS32 Address32; - AML_RESOURCE_ADDRESS64 Address64; - AML_RESOURCE_EXTENDED_ADDRESS64 ExtAddress64; - AML_RESOURCE_EXTENDED_IRQ ExtendedIrq; - - /* Utility overlays */ - - AML_RESOURCE_ADDRESS Address; - UINT32 DwordItem; - UINT16 WordItem; - UINT8 ByteItem; - -} AML_RESOURCE; - -#endif - diff --git a/sys/contrib/dev/acpica-unix-20061109/include/platform/acdos16.h b/sys/contrib/dev/acpica-unix-20061109/include/platform/acdos16.h deleted file mode 100644 index 98f6c430a7..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/platform/acdos16.h +++ /dev/null @@ -1,161 +0,0 @@ -/****************************************************************************** - * - * Name: acdos16.h - DOS specific defines, etc. - * $Revision: 1.15 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACDOS16_H__ -#define __ACDOS16_H__ - -#define ACPI_USE_STANDARD_HEADERS -#define ACPI_MACHINE_WIDTH 16 - -/* Use a struct for 64-bit integers */ - -typedef struct -{ - unsigned long Lo; - unsigned long Hi; - -} COMPILER_DEPENDENT_UINT64; - -typedef struct -{ - long Lo; - long Hi; - -} COMPILER_DEPENDENT_INT64; - -/* - * Calling conventions: - * - * ACPI_SYSTEM_XFACE - Interfaces to host OS (handlers, threads) - * ACPI_EXTERNAL_XFACE - External ACPI interfaces - * ACPI_INTERNAL_XFACE - Internal ACPI interfaces - * ACPI_INTERNAL_VAR_XFACE - Internal variable-parameter list interfaces - */ -#define ACPI_SYSTEM_XFACE __cdecl -#define ACPI_EXTERNAL_XFACE -#define ACPI_INTERNAL_XFACE -#define ACPI_INTERNAL_VAR_XFACE __cdecl - -#define ACPI_ASM_MACROS -#define BREAKPOINT3 -#define ACPI_DISABLE_IRQS() -#define ACPI_ENABLE_IRQS() -#define halt() -#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) -#define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Acq) - - -#endif /* __ACDOS16_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/platform/acefi.h b/sys/contrib/dev/acpica-unix-20061109/include/platform/acefi.h deleted file mode 100644 index 8410b06e5d..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/platform/acefi.h +++ /dev/null @@ -1,148 +0,0 @@ -/****************************************************************************** - * - * Name: acefi.h - OS specific defines, etc. - * $Revision: 1.17 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACEFI_H__ -#define __ACEFI_H__ - -#include -#include -#include - - -/* _int64 works for both IA32 and IA64 */ - -#define COMPILER_DEPENDENT_INT64 __int64 -#define COMPILER_DEPENDENT_UINT64 unsigned __int64 - -/* - * Calling conventions: - * - * ACPI_SYSTEM_XFACE - Interfaces to host OS (handlers, threads) - * ACPI_EXTERNAL_XFACE - External ACPI interfaces - * ACPI_INTERNAL_XFACE - Internal ACPI interfaces - * ACPI_INTERNAL_VAR_XFACE - Internal variable-parameter list interfaces - */ -#define ACPI_SYSTEM_XFACE -#define ACPI_EXTERNAL_XFACE -#define ACPI_INTERNAL_XFACE -#define ACPI_INTERNAL_VAR_XFACE - -/* warn C4142: redefinition of type */ - -#pragma warning(disable:4142) - - -#endif /* __ACEFI_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/platform/acenv.h b/sys/contrib/dev/acpica-unix-20061109/include/platform/acenv.h deleted file mode 100644 index 0f5cc55840..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/platform/acenv.h +++ /dev/null @@ -1,444 +0,0 @@ -/****************************************************************************** - * - * Name: acenv.h - Generation environment specific items - * $Revision: 1.130 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACENV_H__ -#define __ACENV_H__ - - -/* - * Configuration for ACPI tools and utilities - */ - -#ifdef ACPI_LIBRARY -/* - * Note: The non-debug version of the AcpiLibrary does not contain any - * debug support, for minimimal size. The debug version uses ACPI_FULL_DEBUG - */ -#define ACPI_USE_LOCAL_CACHE -#endif - -#ifdef ACPI_ASL_COMPILER -#define ACPI_DEBUG_OUTPUT -#define ACPI_APPLICATION -#define ACPI_DISASSEMBLER -#define ACPI_CONSTANT_EVAL_ONLY -#define ACPI_LARGE_NAMESPACE_NODE -#define ACPI_DATA_TABLE_DISASSEMBLY -#endif - -#ifdef ACPI_EXEC_APP -#undef DEBUGGER_THREADING -#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED -#define ACPI_FULL_DEBUG -#define ACPI_APPLICATION -#define ACPI_DEBUGGER -#define ACPI_MUTEX_DEBUG -#define ACPI_DBG_TRACK_ALLOCATIONS -#endif - -#ifdef ACPI_DASM_APP -#ifndef MSDOS -#define ACPI_DEBUG_OUTPUT -#endif -#define ACPI_APPLICATION -#define ACPI_DISASSEMBLER -#define ACPI_NO_METHOD_EXECUTION -#define ACPI_LARGE_NAMESPACE_NODE -#define ACPI_DATA_TABLE_DISASSEMBLY -#endif - -#ifdef ACPI_APPLICATION -#define ACPI_USE_SYSTEM_CLIBRARY -#define ACPI_USE_LOCAL_CACHE -#endif - -#ifdef ACPI_FULL_DEBUG -#define ACPI_DEBUGGER -#define ACPI_DEBUG_OUTPUT -#define ACPI_DISASSEMBLER -#endif - - -/* - * Environment configuration. The purpose of this file is to interface to the - * local generation environment. - * - * 1) ACPI_USE_SYSTEM_CLIBRARY - Define this if linking to an actual C library. - * Otherwise, local versions of string/memory functions will be used. - * 2) ACPI_USE_STANDARD_HEADERS - Define this if linking to a C library and - * the standard header files may be used. - * - * The ACPI subsystem only uses low level C library functions that do not call - * operating system services and may therefore be inlined in the code. - * - * It may be necessary to tailor these include files to the target - * generation environment. - * - * - * Functions and constants used from each header: - * - * string.h: memcpy - * memset - * strcat - * strcmp - * strcpy - * strlen - * strncmp - * strncat - * strncpy - * - * stdlib.h: strtoul - * - * stdarg.h: va_list - * va_arg - * va_start - * va_end - * - */ - -/*! [Begin] no source code translation */ - -#if defined(__linux__) -#include "aclinux.h" - -#elif defined(_AED_EFI) -#include "acefi.h" - -#elif defined(WIN32) -#include "acwin.h" - -#elif defined(WIN64) -#include "acwin64.h" - -#elif defined(MSDOS) /* Must appear after WIN32 and WIN64 check */ -#include "acdos16.h" - -#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) -#include "acfreebsd.h" - -#elif defined(__NetBSD__) -#include "acnetbsd.h" - -#elif defined(MODESTO) -#include "acmodesto.h" - -#elif defined(NETWARE) -#include "acnetware.h" - -#elif defined(__sun) -#include "acsolaris.h" - -#else - -/* All other environments */ - -#define ACPI_USE_STANDARD_HEADERS - -#define COMPILER_DEPENDENT_INT64 long long -#define COMPILER_DEPENDENT_UINT64 unsigned long long - -#endif - -/*! [End] no source code translation !*/ - - -/* - * Debugger threading model - * Use single threaded if the entire subsystem is contained in an application - * Use multiple threaded when the subsystem is running in the kernel. - * - * By default the model is single threaded if ACPI_APPLICATION is set, - * multi-threaded if ACPI_APPLICATION is not set. - */ -#define DEBUGGER_SINGLE_THREADED 0 -#define DEBUGGER_MULTI_THREADED 1 - -#ifndef DEBUGGER_THREADING -#ifdef ACPI_APPLICATION -#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED - -#else -#define DEBUGGER_THREADING DEBUGGER_MULTI_THREADED -#endif -#endif /* !DEBUGGER_THREADING */ - - -/****************************************************************************** - * - * C library configuration - * - *****************************************************************************/ - -#define ACPI_IS_ASCII(c) ((c) < 0x80) - -#ifdef ACPI_USE_SYSTEM_CLIBRARY -/* - * Use the standard C library headers. - * We want to keep these to a minimum. - */ -#ifdef ACPI_USE_STANDARD_HEADERS -/* - * Use the standard headers from the standard locations - */ -#include -#include -#include -#include - -#endif /* ACPI_USE_STANDARD_HEADERS */ - -/* - * We will be linking to the standard Clib functions - */ -#define ACPI_STRSTR(s1,s2) strstr((s1), (s2)) -#define ACPI_STRCHR(s1,c) strchr((s1), (c)) -#define ACPI_STRLEN(s) (ACPI_SIZE) strlen((s)) -#define ACPI_STRCPY(d,s) (void) strcpy((d), (s)) -#define ACPI_STRNCPY(d,s,n) (void) strncpy((d), (s), (ACPI_SIZE)(n)) -#define ACPI_STRNCMP(d,s,n) strncmp((d), (s), (ACPI_SIZE)(n)) -#define ACPI_STRCMP(d,s) strcmp((d), (s)) -#define ACPI_STRCAT(d,s) (void) strcat((d), (s)) -#define ACPI_STRNCAT(d,s,n) strncat((d), (s), (ACPI_SIZE)(n)) -#define ACPI_STRTOUL(d,s,n) strtoul((d), (s), (ACPI_SIZE)(n)) -#define ACPI_MEMCMP(s1,s2,n) memcmp((const char *)(s1), (const char *)(s2), (ACPI_SIZE)(n)) -#define ACPI_MEMCPY(d,s,n) (void) memcpy((d), (s), (ACPI_SIZE)(n)) -#define ACPI_MEMSET(d,s,n) (void) memset((d), (s), (ACPI_SIZE)(n)) - -#define ACPI_TOUPPER(i) toupper((int) (i)) -#define ACPI_TOLOWER(i) tolower((int) (i)) -#define ACPI_IS_XDIGIT(i) isxdigit((int) (i)) -#define ACPI_IS_DIGIT(i) isdigit((int) (i)) -#define ACPI_IS_SPACE(i) isspace((int) (i)) -#define ACPI_IS_UPPER(i) isupper((int) (i)) -#define ACPI_IS_PRINT(i) isprint((int) (i)) -#define ACPI_IS_ALPHA(i) isalpha((int) (i)) - -#else - -/****************************************************************************** - * - * Not using native C library, use local implementations - * - *****************************************************************************/ - - /* - * Use local definitions of C library macros and functions - * NOTE: The function implementations may not be as efficient - * as an inline or assembly code implementation provided by a - * native C library. - */ - -#ifndef va_arg - -#ifndef _VALIST -#define _VALIST -typedef char *va_list; -#endif /* _VALIST */ - -/* - * Storage alignment properties - */ -#define _AUPBND (sizeof (ACPI_NATIVE_INT) - 1) -#define _ADNBND (sizeof (ACPI_NATIVE_INT) - 1) - -/* - * Variable argument list macro definitions - */ -#define _Bnd(X, bnd) (((sizeof (X)) + (bnd)) & (~(bnd))) -#define va_arg(ap, T) (*(T *)(((ap) += (_Bnd (T, _AUPBND))) - (_Bnd (T,_ADNBND)))) -#define va_end(ap) (void) 0 -#define va_start(ap, A) (void) ((ap) = (((char *) &(A)) + (_Bnd (A,_AUPBND)))) - -#endif /* va_arg */ - - -#define ACPI_STRSTR(s1,s2) AcpiUtStrstr ((s1), (s2)) -#define ACPI_STRCHR(s1,c) AcpiUtStrchr ((s1), (c)) -#define ACPI_STRLEN(s) (ACPI_SIZE) AcpiUtStrlen ((s)) -#define ACPI_STRCPY(d,s) (void) AcpiUtStrcpy ((d), (s)) -#define ACPI_STRNCPY(d,s,n) (void) AcpiUtStrncpy ((d), (s), (ACPI_SIZE)(n)) -#define ACPI_STRNCMP(d,s,n) AcpiUtStrncmp ((d), (s), (ACPI_SIZE)(n)) -#define ACPI_STRCMP(d,s) AcpiUtStrcmp ((d), (s)) -#define ACPI_STRCAT(d,s) (void) AcpiUtStrcat ((d), (s)) -#define ACPI_STRNCAT(d,s,n) AcpiUtStrncat ((d), (s), (ACPI_SIZE)(n)) -#define ACPI_STRTOUL(d,s,n) AcpiUtStrtoul ((d), (s), (ACPI_SIZE)(n)) -#define ACPI_MEMCMP(s1,s2,n) AcpiUtMemcmp((const char *)(s1), (const char *)(s2), (ACPI_SIZE)(n)) -#define ACPI_MEMCPY(d,s,n) (void) AcpiUtMemcpy ((d), (s), (ACPI_SIZE)(n)) -#define ACPI_MEMSET(d,v,n) (void) AcpiUtMemset ((d), (v), (ACPI_SIZE)(n)) -#define ACPI_TOUPPER AcpiUtToUpper -#define ACPI_TOLOWER AcpiUtToLower - -#endif /* ACPI_USE_SYSTEM_CLIBRARY */ - - -/****************************************************************************** - * - * Assembly code macros - * - *****************************************************************************/ - -/* - * Handle platform- and compiler-specific assembly language differences. - * These should already have been defined by the platform includes above. - * - * Notes: - * 1) Interrupt 3 is used to break into a debugger - * 2) Interrupts are turned off during ACPI register setup - */ - -/* Unrecognized compiler, use defaults */ - -#ifndef ACPI_ASM_MACROS - -/* - * Calling conventions: - * - * ACPI_SYSTEM_XFACE - Interfaces to host OS (handlers, threads) - * ACPI_EXTERNAL_XFACE - External ACPI interfaces - * ACPI_INTERNAL_XFACE - Internal ACPI interfaces - * ACPI_INTERNAL_VAR_XFACE - Internal variable-parameter list interfaces - */ -#define ACPI_SYSTEM_XFACE -#define ACPI_EXTERNAL_XFACE -#define ACPI_INTERNAL_XFACE -#define ACPI_INTERNAL_VAR_XFACE - -#define ACPI_ASM_MACROS -#define BREAKPOINT3 -#define ACPI_DISABLE_IRQS() -#define ACPI_ENABLE_IRQS() -#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) -#define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Acq) - -#endif /* ACPI_ASM_MACROS */ - - -#ifdef ACPI_APPLICATION - -/* Don't want software interrupts within a ring3 application */ - -#undef BREAKPOINT3 -#define BREAKPOINT3 -#endif - - -/****************************************************************************** - * - * Compiler-specific information is contained in the compiler-specific - * headers. - * - *****************************************************************************/ -#endif /* __ACENV_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/platform/acfreebsd.h b/sys/contrib/dev/acpica-unix-20061109/include/platform/acfreebsd.h deleted file mode 100644 index 3e255e6ae0..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/platform/acfreebsd.h +++ /dev/null @@ -1,201 +0,0 @@ -/****************************************************************************** - * - * Name: acfreebsd.h - OS specific defines, etc. - * $Revision: 1.23 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACFREEBSD_H__ -#define __ACFREEBSD_H__ - - -/* FreeBSD uses GCC */ - -#include "acgcc.h" -#include -#include - -#define ACPI_THREAD_ID pid_t -#define ACPI_UINTPTR_T uintptr_t -#define ACPI_USE_LOCAL_CACHE -#define __cdecl - -#ifdef _KERNEL -#include "opt_acpi.h" -#endif - -#ifdef ACPI_DEBUG -#define ACPI_DEBUG_OUTPUT /* for backward compatibility */ -#define ACPI_DISASSEMBLER -#endif - -#ifdef _KERNEL -#include -#include -#include -#include -#include - -#ifdef DEBUGGER_THREADING -#undef DEBUGGER_THREADING -#endif /* DEBUGGER_THREADING */ - -#define DEBUGGER_THREADING 0 /* integrated with DDB */ - -#ifdef ACPI_DEBUG_OUTPUT -#include "opt_ddb.h" -#ifdef DDB -#define ACPI_DEBUGGER -#endif /* DDB */ -#endif /* ACPI_DEBUG_OUTPUT */ - -#else /* _KERNEL */ - -/* Not building kernel code, so use libc */ -#define ACPI_USE_STANDARD_HEADERS -#define ACPI_FLUSH_CPU_CACHE() - -#if __STDC_HOSTED__ -#include -#endif - -#define __cli() -#define __sti() - -#endif /* _KERNEL */ - -/* Always use FreeBSD code over our local versions */ -#define ACPI_USE_SYSTEM_CLIBRARY - -#ifdef _KERNEL -/* Or strstr (used in debugging mode, also move to libkern) */ -static __inline char * -strstr(char *s, char *find) -{ - char c, sc; - size_t len; - - if ((c = *find++) != 0) { - len = strlen(find); - do { - do { - if ((sc = *s++) == 0) - return (NULL); - } while (sc != c); - } while (strncmp(s, find, len) != 0); - s--; - } - return ((char *)s); -} -#endif /* _KERNEL */ - -#endif /* __ACFREEBSD_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/platform/acgcc.h b/sys/contrib/dev/acpica-unix-20061109/include/platform/acgcc.h deleted file mode 100644 index 199f142c9b..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/platform/acgcc.h +++ /dev/null @@ -1,139 +0,0 @@ -/****************************************************************************** - * - * Name: acgcc.h - GCC specific defines, etc. - * $Revision: 1.31 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACGCC_H__ -#define __ACGCC_H__ - -/* Function name is used for debug output. Non-ANSI, compiler-dependent */ - -#define ACPI_GET_FUNCTION_NAME __FUNCTION__ - -/* - * This macro is used to tag functions as "printf-like" because - * some compilers (like GCC) can catch printf format string problems. - */ -#define ACPI_PRINTF_LIKE(c) __attribute__ ((__format__ (__printf__, c, c+1))) - -/* - * Some compilers complain about unused variables. Sometimes we don't want to - * use all the variables (for example, _AcpiModuleName). This allows us - * to to tell the compiler warning in a per-variable manner that a variable - * is unused. - */ -#define ACPI_UNUSED_VAR __attribute__ ((unused)) - - -#endif /* __ACGCC_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/platform/acintel.h b/sys/contrib/dev/acpica-unix-20061109/include/platform/acintel.h deleted file mode 100644 index 3764fe266a..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/platform/acintel.h +++ /dev/null @@ -1,169 +0,0 @@ -/****************************************************************************** - * - * Name: acintel.h - VC specific defines, etc. - * $Revision: 1.17 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACINTEL_H__ -#define __ACINTEL_H__ - - -#define COMPILER_DEPENDENT_INT64 __int64 -#define COMPILER_DEPENDENT_UINT64 unsigned __int64 - -#define inline __inline - -/* - * Calling conventions: - * - * ACPI_SYSTEM_XFACE - Interfaces to host OS (handlers, threads) - * ACPI_EXTERNAL_XFACE - External ACPI interfaces - * ACPI_INTERNAL_XFACE - Internal ACPI interfaces - * ACPI_INTERNAL_VAR_XFACE - Internal variable-parameter list interfaces - */ -#define ACPI_SYSTEM_XFACE -#define ACPI_EXTERNAL_XFACE -#define ACPI_INTERNAL_XFACE -#define ACPI_INTERNAL_VAR_XFACE - -/* - * Math helper functions - */ -#define ACPI_DIV_64_BY_32(n, n_hi, n_lo, d32, q32, r32) \ -{ \ - q32 = n / d32; \ - r32 = n % d32; \ -} - -#define ACPI_SHIFT_RIGHT_64(n, n_hi, n_lo) \ -{ \ - n <<= 1; \ -} - -/* remark 981 - operands evaluated in no particular order */ -#pragma warning(disable:981) - -/* warn C4100: unreferenced formal parameter */ -#pragma warning(disable:4100) - -/* warn C4127: conditional expression is constant */ -#pragma warning(disable:4127) - -/* warn C4706: assignment within conditional expression */ -#pragma warning(disable:4706) - -/* warn C4214: bit field types other than int */ -#pragma warning(disable:4214) - - -#endif /* __ACINTEL_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/platform/aclinux.h b/sys/contrib/dev/acpica-unix-20061109/include/platform/aclinux.h deleted file mode 100644 index fc84c72b9b..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/platform/aclinux.h +++ /dev/null @@ -1,169 +0,0 @@ -/****************************************************************************** - * - * Name: aclinux.h - OS specific defines, etc. - * $Revision: 1.41 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACLINUX_H__ -#define __ACLINUX_H__ - -#define ACPI_USE_SYSTEM_CLIBRARY -#define ACPI_USE_DO_WHILE_0 - -#ifdef __KERNEL__ - -#include -#include -#include -#include -#include -#include -#include -#include - -/* Host-dependent types and defines */ - -#define ACPI_MACHINE_WIDTH BITS_PER_LONG -#define ACPI_CACHE_T kmem_cache_t -#define ACPI_SPINLOCK spinlock_t -#define ACPI_EXPORT_SYMBOL(Symbol) EXPORT_SYMBOL(Symbol); -#define strtoul simple_strtoul - -#else /* !__KERNEL__ */ - -#include -#include -#include -#include -#include - -#if defined(__ia64__) || defined(__x86_64__) -#define ACPI_MACHINE_WIDTH 64 -#define COMPILER_DEPENDENT_INT64 long -#define COMPILER_DEPENDENT_UINT64 unsigned long -#else -#define ACPI_MACHINE_WIDTH 32 -#define COMPILER_DEPENDENT_INT64 long long -#define COMPILER_DEPENDENT_UINT64 unsigned long long -#define ACPI_USE_NATIVE_DIVIDE -#endif - -#define __cdecl -#define ACPI_FLUSH_CPU_CACHE() -#endif /* __KERNEL__ */ - -/* Linux uses GCC */ - -#include "acgcc.h" - -#endif /* __ACLINUX_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/platform/acmsvc.h b/sys/contrib/dev/acpica-unix-20061109/include/platform/acmsvc.h deleted file mode 100644 index 0eb6177ac7..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/platform/acmsvc.h +++ /dev/null @@ -1,184 +0,0 @@ -/****************************************************************************** - * - * Name: acmsvc.h - VC specific defines, etc. - * $Revision: 1.26 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACMSVC_H__ -#define __ACMSVC_H__ - -#define COMPILER_DEPENDENT_INT64 __int64 -#define COMPILER_DEPENDENT_UINT64 unsigned __int64 - -/* - * Calling conventions: - * - * ACPI_SYSTEM_XFACE - Interfaces to host OS (handlers, threads) - * ACPI_EXTERNAL_XFACE - External ACPI interfaces - * ACPI_INTERNAL_XFACE - Internal ACPI interfaces - * ACPI_INTERNAL_VAR_XFACE - Internal variable-parameter list interfaces - */ -#define ACPI_SYSTEM_XFACE __cdecl -#define ACPI_EXTERNAL_XFACE -#define ACPI_INTERNAL_XFACE -#define ACPI_INTERNAL_VAR_XFACE __cdecl - -#ifndef _LINT -/* - * Math helper functions - */ -#define ACPI_DIV_64_BY_32(n_hi, n_lo, d32, q32, r32) \ -{ \ - __asm mov edx, n_hi \ - __asm mov eax, n_lo \ - __asm div d32 \ - __asm mov q32, eax \ - __asm mov r32, edx \ -} - -#define ACPI_SHIFT_RIGHT_64(n_hi, n_lo) \ -{ \ - __asm shr n_hi, 1 \ - __asm rcr n_lo, 1 \ -} -#else - -/* Fake versions to make lint happy */ - -#define ACPI_DIV_64_BY_32(n_hi, n_lo, d32, q32, r32) \ -{ \ - q32 = n_hi / d32; \ - r32 = n_lo / d32; \ -} - -#define ACPI_SHIFT_RIGHT_64(n_hi, n_lo) \ -{ \ - n_hi >>= 1; \ - n_lo >>= 1; \ -} -#endif - -/* warn C4100: unreferenced formal parameter */ -#pragma warning(disable:4100) - -/* warn C4127: conditional expression is constant */ -#pragma warning(disable:4127) - -/* warn C4706: assignment within conditional expression */ -#pragma warning(disable:4706) - -/* warn C4131: uses old-style declarator (iASL compiler only) */ -#pragma warning(disable:4131) - - -#endif /* __ACMSVC_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/platform/acnetbsd.h b/sys/contrib/dev/acpica-unix-20061109/include/platform/acnetbsd.h deleted file mode 100644 index 591cd49f36..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/platform/acnetbsd.h +++ /dev/null @@ -1,191 +0,0 @@ -/****************************************************************************** - * - * Name: acnetbsd.h - OS specific defines, etc. - * $Revision: 1.8 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACNETBSD_H__ -#define __ACNETBSD_H__ - -/* NetBSD uses GCC */ - -#include "acgcc.h" - -#ifdef _LP64 -#define ACPI_MACHINE_WIDTH 64 -#else -#define ACPI_MACHINE_WIDTH 32 -#endif - -#define COMPILER_DEPENDENT_INT64 int64_t -#define COMPILER_DEPENDENT_UINT64 uint64_t - -#ifdef _KERNEL -#include "opt_acpi.h" /* collect build-time options here */ - -#include -#include -#include -#include - -#define asm __asm - -#define ACPI_USE_NATIVE_DIVIDE - -#define ACPI_ASM_MACROS /* tell acenv.h */ - -#define ACPI_SYSTEM_XFACE -#define ACPI_EXTERNAL_XFACE -#define ACPI_INTERNAL_XFACE -#define ACPI_INTERNAL_VAR_XFACE - -#ifdef ACPI_DEBUG -#define ACPI_DEBUG_OUTPUT -#define ACPI_DBG_TRACK_ALLOCATIONS -#ifdef DEBUGGER_THREADING -#undef DEBUGGER_THREADING -#endif /* DEBUGGER_THREADING */ -#define DEBUGGER_THREADING 0 /* integrated with DDB */ -#include "opt_ddb.h" -#ifdef DDB -#define ACPI_DISASSEMBLER -#define ACPI_DEBUGGER -#endif /* DDB */ -#endif /* ACPI_DEBUG */ - -static __inline int -isprint(int ch) -{ - return(isspace(ch) || isascii(ch)); -} - -#else /* _KERNEL */ - -#include - -/* Not building kernel code, so use libc */ -#define ACPI_USE_STANDARD_HEADERS - -#define __cli() -#define __sti() - -/* XXX */ -#define __inline inline - -#endif /* _KERNEL */ - -/* Always use NetBSD code over our local versions */ -#define ACPI_USE_SYSTEM_CLIBRARY -#define ACPI_USE_NATIVE_DIVIDE - -#endif /* __ACNETBSD_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/platform/acwin.h b/sys/contrib/dev/acpica-unix-20061109/include/platform/acwin.h deleted file mode 100644 index 622ea7bd85..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/platform/acwin.h +++ /dev/null @@ -1,229 +0,0 @@ -/****************************************************************************** - * - * Name: acwin.h - OS specific defines, etc. - * $Revision: 1.28 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACWIN_H__ -#define __ACWIN_H__ - -/*! [Begin] no source code translation (Keep the include) */ - -/* Windows uses VC */ -#ifdef _MSC_VER -#include "acmsvc.h" -#endif -/*! [End] no source code translation !*/ - -#define ACPI_MACHINE_WIDTH 32 - -#define isascii __isascii -#define inline __inline - -#define ACPI_USE_STANDARD_HEADERS - -#ifdef ACPI_DEFINE_ALTERNATE_TYPES -/* - * Types used only in (Linux) translated source, defined here to enable - * cross-platform compilation (i.e., generate the Linux code on Windows, - * for test purposes only) - */ -typedef int s32; -typedef unsigned char u8; -typedef unsigned short u16; -typedef unsigned int u32; -typedef COMPILER_DEPENDENT_UINT64 u64; -#endif - - -/* - * Handle platform- and compiler-specific assembly language differences. - * - * Notes: - * 1) Interrupt 3 is used to break into a debugger - * 2) Interrupts are turned off during ACPI register setup - */ - -/*! [Begin] no source code translation */ - -#define ACPI_ASM_MACROS -#ifdef ACPI_APPLICATION -#define BREAKPOINT3 -#define ACPI_DISABLE_IRQS() -#define ACPI_ENABLE_IRQS() -#define ACPI_FLUSH_CPU_CACHE() -#else -#define BREAKPOINT3 __asm {int 3} -#define ACPI_DISABLE_IRQS() __asm {cli} -#define ACPI_ENABLE_IRQS() __asm {sti} -#define ACPI_FLUSH_CPU_CACHE() __asm {WBINVD} -#endif - -#ifdef _DEBUG -#define ACPI_SIMPLE_RETURN_MACROS -#endif - -/*! [End] no source code translation !*/ - -/* - * Global Lock acquire/release code - * - * Note: Handles case where the FACS pointer is null - */ -#define ACPI_ACQUIRE_GLOBAL_LOCK(FacsPtr, Acq) __asm \ -{ \ - __asm mov eax, 0xFF \ - __asm mov ecx, FacsPtr \ - __asm or ecx, ecx \ - __asm jz exit_acq \ - __asm lea ecx, [ecx].GlobalLock \ - \ - __asm acq10: \ - __asm mov eax, [ecx] \ - __asm mov edx, eax \ - __asm and edx, 0xFFFFFFFE \ - __asm bts edx, 1 \ - __asm adc edx, 0 \ - __asm lock cmpxchg dword ptr [ecx], edx \ - __asm jnz acq10 \ - \ - __asm cmp dl, 3 \ - __asm sbb eax, eax \ - \ - __asm exit_acq: \ - __asm mov Acq, al \ -} - -#define ACPI_RELEASE_GLOBAL_LOCK(FacsPtr, Pnd) __asm \ -{ \ - __asm xor eax, eax \ - __asm mov ecx, FacsPtr \ - __asm or ecx, ecx \ - __asm jz exit_rel \ - __asm lea ecx, [ecx].GlobalLock \ - \ - __asm Rel10: \ - __asm mov eax, [ecx] \ - __asm mov edx, eax \ - __asm and edx, 0xFFFFFFFC \ - __asm lock cmpxchg dword ptr [ecx], edx \ - __asm jnz Rel10 \ - \ - __asm cmp dl, 3 \ - __asm and eax, 1 \ - \ - __asm exit_rel: \ - __asm mov Pnd, al \ -} - -#endif /* __ACWIN_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/include/platform/acwin64.h b/sys/contrib/dev/acpica-unix-20061109/include/platform/acwin64.h deleted file mode 100644 index bf4a5e0ab3..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/include/platform/acwin64.h +++ /dev/null @@ -1,162 +0,0 @@ -/****************************************************************************** - * - * Name: acwin.h - OS specific defines, etc. - * $Revision: 1.15 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef __ACWIN64_H__ -#define __ACWIN64_H__ - -/*! [Begin] no source code translation (Keep the include) */ - -#include "acintel.h" -/*! [End] no source code translation !*/ - -#define ACPI_MACHINE_WIDTH 64 - -#define ACPI_USE_STANDARD_HEADERS - -/* - * Handle platform- and compiler-specific assembly language differences. - * - * Notes: - * 1) Interrupt 3 is used to break into a debugger - * 2) Interrupts are turned off during ACPI register setup - */ - -/*! [Begin] no source code translation */ - -#define ACPI_ASM_MACROS -#define causeinterrupt(level) -#define BREAKPOINT3 -#define ACPI_DISABLE_IRQS() -#define ACPI_ENABLE_IRQS() -#define ACPI_FLUSH_CPU_CACHE() - - -/* - * For Acpi applications, we don't want to try to access the global lock - */ -#ifdef ACPI_APPLICATION -#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) if (AcpiGbl_GlobalLockPresent) {Acq = 0xFF;} else {Acq = 0;} -#define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Pnd) if (AcpiGbl_GlobalLockPresent) {Pnd = 0xFF;} else {Pnd = 0;} -#else - -#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) - -#define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Pnd) - -#endif - - -#endif /* __ACWIN_H__ */ diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsfield.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsfield.c deleted file mode 100644 index 7f17d5ed4d..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsfield.c +++ /dev/null @@ -1,748 +0,0 @@ -/****************************************************************************** - * - * Module Name: dsfield - Dispatcher field routines - * $Revision: 1.83 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __DSFIELD_C__ - -#include "acpi.h" -#include "amlcode.h" -#include "acdispat.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "acparser.h" - - -#define _COMPONENT ACPI_DISPATCHER - ACPI_MODULE_NAME ("dsfield") - -/* Local prototypes */ - -static ACPI_STATUS -AcpiDsGetFieldNames ( - ACPI_CREATE_FIELD_INFO *Info, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Arg); - - -/******************************************************************************* - * - * FUNCTION: AcpiDsCreateBufferField - * - * PARAMETERS: Op - Current parse op (CreateXXField) - * WalkState - Current state - * - * RETURN: Status - * - * DESCRIPTION: Execute the CreateField operators: - * CreateBitFieldOp, - * CreateByteFieldOp, - * CreateWordFieldOp, - * CreateDWordFieldOp, - * CreateQWordFieldOp, - * CreateFieldOp (all of which define a field in a buffer) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsCreateBufferField ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState) -{ - ACPI_PARSE_OBJECT *Arg; - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *SecondDesc = NULL; - UINT32 Flags; - - - ACPI_FUNCTION_TRACE (DsCreateBufferField); - - - /* Get the NameString argument */ - - if (Op->Common.AmlOpcode == AML_CREATE_FIELD_OP) - { - Arg = AcpiPsGetArg (Op, 3); - } - else - { - /* Create Bit/Byte/Word/Dword field */ - - Arg = AcpiPsGetArg (Op, 2); - } - - if (!Arg) - { - return_ACPI_STATUS (AE_AML_NO_OPERAND); - } - - if (WalkState->DeferredNode) - { - Node = WalkState->DeferredNode; - Status = AE_OK; - } - else - { - /* - * During the load phase, we want to enter the name of the field into - * the namespace. During the execute phase (when we evaluate the size - * operand), we want to lookup the name - */ - if (WalkState->ParseFlags & ACPI_PARSE_EXECUTE) - { - Flags = ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE; - } - else - { - Flags = ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | - ACPI_NS_ERROR_IF_FOUND; - } - - /* - * Enter the NameString into the namespace - */ - Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, - ACPI_TYPE_ANY, ACPI_IMODE_LOAD_PASS1, - Flags, WalkState, &(Node)); - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR_NAMESPACE (Arg->Common.Value.String, Status); - return_ACPI_STATUS (Status); - } - } - - /* - * We could put the returned object (Node) on the object stack for later, - * but for now, we will put it in the "op" object that the parser uses, - * so we can get it again at the end of this scope - */ - Op->Common.Node = Node; - - /* - * If there is no object attached to the node, this node was just created - * and we need to create the field object. Otherwise, this was a lookup - * of an existing node and we don't want to create the field object again. - */ - ObjDesc = AcpiNsGetAttachedObject (Node); - if (ObjDesc) - { - return_ACPI_STATUS (AE_OK); - } - - /* - * The Field definition is not fully parsed at this time. - * (We must save the address of the AML for the buffer and index operands) - */ - - /* Create the buffer field object */ - - ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER_FIELD); - if (!ObjDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* - * Remember location in AML stream of the field unit - * opcode and operands -- since the buffer and index - * operands must be evaluated. - */ - SecondDesc = ObjDesc->Common.NextObject; - SecondDesc->Extra.AmlStart = Op->Named.Data; - SecondDesc->Extra.AmlLength = Op->Named.Length; - ObjDesc->BufferField.Node = Node; - - /* Attach constructed field descriptors to parent node */ - - Status = AcpiNsAttachObject (Node, ObjDesc, ACPI_TYPE_BUFFER_FIELD); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - -Cleanup: - - /* Remove local reference to the object */ - - AcpiUtRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsGetFieldNames - * - * PARAMETERS: Info - CreateField info structure - * ` WalkState - Current method state - * Arg - First parser arg for the field name list - * - * RETURN: Status - * - * DESCRIPTION: Process all named fields in a field declaration. Names are - * entered into the namespace. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDsGetFieldNames ( - ACPI_CREATE_FIELD_INFO *Info, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Arg) -{ - ACPI_STATUS Status; - ACPI_INTEGER Position; - - - ACPI_FUNCTION_TRACE_PTR (DsGetFieldNames, Info); - - - /* First field starts at bit zero */ - - Info->FieldBitPosition = 0; - - /* Process all elements in the field list (of parse nodes) */ - - while (Arg) - { - /* - * Three types of field elements are handled: - * 1) Offset - specifies a bit offset - * 2) AccessAs - changes the access mode - * 3) Name - Enters a new named field into the namespace - */ - switch (Arg->Common.AmlOpcode) - { - case AML_INT_RESERVEDFIELD_OP: - - Position = (ACPI_INTEGER) Info->FieldBitPosition - + (ACPI_INTEGER) Arg->Common.Value.Size; - - if (Position > ACPI_UINT32_MAX) - { - ACPI_ERROR ((AE_INFO, - "Bit offset within field too large (> 0xFFFFFFFF)")); - return_ACPI_STATUS (AE_SUPPORT); - } - - Info->FieldBitPosition = (UINT32) Position; - break; - - - case AML_INT_ACCESSFIELD_OP: - - /* - * Get a new AccessType and AccessAttribute -- to be used for all - * field units that follow, until field end or another AccessAs - * keyword. - * - * In FieldFlags, preserve the flag bits other than the - * ACCESS_TYPE bits - */ - Info->FieldFlags = (UINT8) - ((Info->FieldFlags & ~(AML_FIELD_ACCESS_TYPE_MASK)) | - ((UINT8) ((UINT32) Arg->Common.Value.Integer >> 8))); - - Info->Attribute = (UINT8) (Arg->Common.Value.Integer); - break; - - - case AML_INT_NAMEDFIELD_OP: - - /* Lookup the name */ - - Status = AcpiNsLookup (WalkState->ScopeInfo, - (char *) &Arg->Named.Name, - Info->FieldType, ACPI_IMODE_EXECUTE, - ACPI_NS_DONT_OPEN_SCOPE, - WalkState, &Info->FieldNode); - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR_NAMESPACE ((char *) &Arg->Named.Name, Status); - if (Status != AE_ALREADY_EXISTS) - { - return_ACPI_STATUS (Status); - } - - /* Already exists, ignore error */ - } - else - { - Arg->Common.Node = Info->FieldNode; - Info->FieldBitLength = Arg->Common.Value.Size; - - /* Create and initialize an object for the new Field Node */ - - Status = AcpiExPrepFieldValue (Info); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* Keep track of bit position for the next field */ - - Position = (ACPI_INTEGER) Info->FieldBitPosition - + (ACPI_INTEGER) Arg->Common.Value.Size; - - if (Position > ACPI_UINT32_MAX) - { - ACPI_ERROR ((AE_INFO, - "Field [%4.4s] bit offset too large (> 0xFFFFFFFF)", - ACPI_CAST_PTR (char, &Info->FieldNode->Name))); - return_ACPI_STATUS (AE_SUPPORT); - } - - Info->FieldBitPosition += Info->FieldBitLength; - break; - - - default: - - ACPI_ERROR ((AE_INFO, - "Invalid opcode in field list: %X", - Arg->Common.AmlOpcode)); - return_ACPI_STATUS (AE_AML_BAD_OPCODE); - } - - Arg = Arg->Common.Next; - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsCreateField - * - * PARAMETERS: Op - Op containing the Field definition and args - * RegionNode - Object for the containing Operation Region - * ` WalkState - Current method state - * - * RETURN: Status - * - * DESCRIPTION: Create a new field in the specified operation region - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsCreateField ( - ACPI_PARSE_OBJECT *Op, - ACPI_NAMESPACE_NODE *RegionNode, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_PARSE_OBJECT *Arg; - ACPI_CREATE_FIELD_INFO Info; - - - ACPI_FUNCTION_TRACE_PTR (DsCreateField, Op); - - - /* First arg is the name of the parent OpRegion (must already exist) */ - - Arg = Op->Common.Value.Arg; - if (!RegionNode) - { - Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.Name, - ACPI_TYPE_REGION, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT, WalkState, &RegionNode); - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR_NAMESPACE (Arg->Common.Value.Name, Status); - return_ACPI_STATUS (Status); - } - } - - /* Second arg is the field flags */ - - Arg = Arg->Common.Next; - Info.FieldFlags = (UINT8) Arg->Common.Value.Integer; - Info.Attribute = 0; - - /* Each remaining arg is a Named Field */ - - Info.FieldType = ACPI_TYPE_LOCAL_REGION_FIELD; - Info.RegionNode = RegionNode; - - Status = AcpiDsGetFieldNames (&Info, WalkState, Arg->Common.Next); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsInitFieldObjects - * - * PARAMETERS: Op - Op containing the Field definition and args - * ` WalkState - Current method state - * - * RETURN: Status - * - * DESCRIPTION: For each "Field Unit" name in the argument list that is - * part of the field declaration, enter the name into the - * namespace. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsInitFieldObjects ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_PARSE_OBJECT *Arg = NULL; - ACPI_NAMESPACE_NODE *Node; - UINT8 Type = 0; - - - ACPI_FUNCTION_TRACE_PTR (DsInitFieldObjects, Op); - - - switch (WalkState->Opcode) - { - case AML_FIELD_OP: - Arg = AcpiPsGetArg (Op, 2); - Type = ACPI_TYPE_LOCAL_REGION_FIELD; - break; - - case AML_BANK_FIELD_OP: - Arg = AcpiPsGetArg (Op, 4); - Type = ACPI_TYPE_LOCAL_BANK_FIELD; - break; - - case AML_INDEX_FIELD_OP: - Arg = AcpiPsGetArg (Op, 3); - Type = ACPI_TYPE_LOCAL_INDEX_FIELD; - break; - - default: - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* - * Walk the list of entries in the FieldList - */ - while (Arg) - { - /* Ignore OFFSET and ACCESSAS terms here */ - - if (Arg->Common.AmlOpcode == AML_INT_NAMEDFIELD_OP) - { - Status = AcpiNsLookup (WalkState->ScopeInfo, - (char *) &Arg->Named.Name, - Type, ACPI_IMODE_LOAD_PASS1, - ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | - ACPI_NS_ERROR_IF_FOUND, - WalkState, &Node); - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR_NAMESPACE ((char *) &Arg->Named.Name, Status); - if (Status != AE_ALREADY_EXISTS) - { - return_ACPI_STATUS (Status); - } - - /* Name already exists, just ignore this error */ - - Status = AE_OK; - } - - Arg->Common.Node = Node; - } - - /* Move to next field in the list */ - - Arg = Arg->Common.Next; - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsCreateBankField - * - * PARAMETERS: Op - Op containing the Field definition and args - * RegionNode - Object for the containing Operation Region - * ` WalkState - Current method state - * - * RETURN: Status - * - * DESCRIPTION: Create a new bank field in the specified operation region - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsCreateBankField ( - ACPI_PARSE_OBJECT *Op, - ACPI_NAMESPACE_NODE *RegionNode, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_PARSE_OBJECT *Arg; - ACPI_CREATE_FIELD_INFO Info; - - - ACPI_FUNCTION_TRACE_PTR (DsCreateBankField, Op); - - - /* First arg is the name of the parent OpRegion (must already exist) */ - - Arg = Op->Common.Value.Arg; - if (!RegionNode) - { - Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.Name, - ACPI_TYPE_REGION, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT, WalkState, &RegionNode); - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR_NAMESPACE (Arg->Common.Value.Name, Status); - return_ACPI_STATUS (Status); - } - } - - /* Second arg is the Bank Register (Field) (must already exist) */ - - Arg = Arg->Common.Next; - Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, - ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT, WalkState, &Info.RegisterNode); - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR_NAMESPACE (Arg->Common.Value.String, Status); - return_ACPI_STATUS (Status); - } - - /* Third arg is the BankValue */ - - /* TBD: This arg is a TermArg, not a constant, and must be evaluated */ - - Arg = Arg->Common.Next; - - /* Currently, only the following constants are supported */ - - switch (Arg->Common.AmlOpcode) - { - case AML_ZERO_OP: - Info.BankValue = 0; - break; - - case AML_ONE_OP: - Info.BankValue = 1; - break; - - case AML_BYTE_OP: - case AML_WORD_OP: - case AML_DWORD_OP: - case AML_QWORD_OP: - Info.BankValue = (UINT32) Arg->Common.Value.Integer; - break; - - default: - Info.BankValue = 0; - ACPI_ERROR ((AE_INFO, "Non-constant BankValue for BankField is not implemented")); - } - - /* Fourth arg is the field flags */ - - Arg = Arg->Common.Next; - Info.FieldFlags = (UINT8) Arg->Common.Value.Integer; - - /* Each remaining arg is a Named Field */ - - Info.FieldType = ACPI_TYPE_LOCAL_BANK_FIELD; - Info.RegionNode = RegionNode; - - Status = AcpiDsGetFieldNames (&Info, WalkState, Arg->Common.Next); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsCreateIndexField - * - * PARAMETERS: Op - Op containing the Field definition and args - * RegionNode - Object for the containing Operation Region - * ` WalkState - Current method state - * - * RETURN: Status - * - * DESCRIPTION: Create a new index field in the specified operation region - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsCreateIndexField ( - ACPI_PARSE_OBJECT *Op, - ACPI_NAMESPACE_NODE *RegionNode, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_PARSE_OBJECT *Arg; - ACPI_CREATE_FIELD_INFO Info; - - - ACPI_FUNCTION_TRACE_PTR (DsCreateIndexField, Op); - - - /* First arg is the name of the Index register (must already exist) */ - - Arg = Op->Common.Value.Arg; - Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, - ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT, WalkState, &Info.RegisterNode); - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR_NAMESPACE (Arg->Common.Value.String, Status); - return_ACPI_STATUS (Status); - } - - /* Second arg is the data register (must already exist) */ - - Arg = Arg->Common.Next; - Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, - ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT, WalkState, &Info.DataRegisterNode); - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR_NAMESPACE (Arg->Common.Value.String, Status); - return_ACPI_STATUS (Status); - } - - /* Next arg is the field flags */ - - Arg = Arg->Common.Next; - Info.FieldFlags = (UINT8) Arg->Common.Value.Integer; - - /* Each remaining arg is a Named Field */ - - Info.FieldType = ACPI_TYPE_LOCAL_INDEX_FIELD; - Info.RegionNode = RegionNode; - - Status = AcpiDsGetFieldNames (&Info, WalkState, Arg->Common.Next); - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsinit.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsinit.c deleted file mode 100644 index e078f1ac01..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsinit.c +++ /dev/null @@ -1,299 +0,0 @@ -/****************************************************************************** - * - * Module Name: dsinit - Object initialization namespace walk - * $Revision: 1.27 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __DSINIT_C__ - -#include "acpi.h" -#include "acdispat.h" -#include "acnamesp.h" -#include "actables.h" - -#define _COMPONENT ACPI_DISPATCHER - ACPI_MODULE_NAME ("dsinit") - -/* Local prototypes */ - -static ACPI_STATUS -AcpiDsInitOneObject ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue); - - -/******************************************************************************* - * - * FUNCTION: AcpiDsInitOneObject - * - * PARAMETERS: ObjHandle - Node for the object - * Level - Current nesting level - * Context - Points to a init info struct - * ReturnValue - Not used - * - * RETURN: Status - * - * DESCRIPTION: Callback from AcpiWalkNamespace. Invoked for every object - * within the namespace. - * - * Currently, the only objects that require initialization are: - * 1) Methods - * 2) Operation Regions - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDsInitOneObject ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue) -{ - ACPI_INIT_WALK_INFO *Info = (ACPI_INIT_WALK_INFO *) Context; - ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; - ACPI_OBJECT_TYPE Type; - ACPI_STATUS Status; - - - ACPI_FUNCTION_ENTRY (); - - - /* - * We are only interested in NS nodes owned by the table that - * was just loaded - */ - if (Node->OwnerId != Info->OwnerId) - { - return (AE_OK); - } - - Info->ObjectCount++; - - /* And even then, we are only interested in a few object types */ - - Type = AcpiNsGetType (ObjHandle); - - switch (Type) - { - case ACPI_TYPE_REGION: - - Status = AcpiDsInitializeRegion (ObjHandle); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "During Region initialization %p [%4.4s]", - ObjHandle, AcpiUtGetNodeName (ObjHandle))); - } - - Info->OpRegionCount++; - break; - - - case ACPI_TYPE_METHOD: - - Info->MethodCount++; - break; - - - case ACPI_TYPE_DEVICE: - - Info->DeviceCount++; - break; - - - default: - break; - } - - /* - * We ignore errors from above, and always return OK, since - * we don't want to abort the walk on a single error. - */ - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsInitializeObjects - * - * PARAMETERS: TableDesc - Descriptor for parent ACPI table - * StartNode - Root of subtree to be initialized. - * - * RETURN: Status - * - * DESCRIPTION: Walk the namespace starting at "StartNode" and perform any - * necessary initialization on the objects found therein - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsInitializeObjects ( - ACPI_NATIVE_UINT TableIndex, - ACPI_NAMESPACE_NODE *StartNode) -{ - ACPI_STATUS Status; - ACPI_INIT_WALK_INFO Info; - ACPI_TABLE_HEADER *Table; - ACPI_OWNER_ID OwnerId; - - - ACPI_FUNCTION_TRACE (DsInitializeObjects); - - - Status = AcpiTbGetOwnerId (TableIndex, &OwnerId); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "**** Starting initialization of namespace objects ****\n")); - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, "Parsing all Control Methods:")); - - Info.MethodCount = 0; - Info.OpRegionCount = 0; - Info.ObjectCount = 0; - Info.DeviceCount = 0; - Info.TableIndex = TableIndex; - Info.OwnerId = OwnerId; - - /* Walk entire namespace from the supplied root */ - - Status = AcpiWalkNamespace (ACPI_TYPE_ANY, StartNode, ACPI_UINT32_MAX, - AcpiDsInitOneObject, &Info, NULL); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, "During WalkNamespace")); - } - - Status = AcpiGetTableByIndex (TableIndex, &Table); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, - "\nTable [%4.4s](id %4.4X) - %hd Objects with %hd Devices %hd Methods %hd Regions\n", - Table->Signature, OwnerId, Info.ObjectCount, - Info.DeviceCount, Info.MethodCount, Info.OpRegionCount)); - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "%hd Methods, %hd Regions\n", Info.MethodCount, Info.OpRegionCount)); - - return_ACPI_STATUS (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsmethod.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsmethod.c deleted file mode 100644 index 1bb279d058..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsmethod.c +++ /dev/null @@ -1,761 +0,0 @@ -/****************************************************************************** - * - * Module Name: dsmethod - Parser/Interpreter interface - control method parsing - * $Revision: 1.133 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __DSMETHOD_C__ - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" -#include "acdispat.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "acdisasm.h" - - -#define _COMPONENT ACPI_DISPATCHER - ACPI_MODULE_NAME ("dsmethod") - -/* Local prototypes */ - -static ACPI_STATUS -AcpiDsCreateMethodMutex ( - ACPI_OPERAND_OBJECT *MethodDesc); - - -/******************************************************************************* - * - * FUNCTION: AcpiDsMethodError - * - * PARAMETERS: Status - Execution status - * WalkState - Current state - * - * RETURN: Status - * - * DESCRIPTION: Called on method error. Invoke the global exception handler if - * present, dump the method data if the disassembler is configured - * - * Note: Allows the exception handler to change the status code - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsMethodError ( - ACPI_STATUS Status, - ACPI_WALK_STATE *WalkState) -{ - ACPI_FUNCTION_ENTRY (); - - - /* Ignore AE_OK and control exception codes */ - - if (ACPI_SUCCESS (Status) || - (Status & AE_CODE_CONTROL)) - { - return (Status); - } - - /* Invoke the global exception handler */ - - if (AcpiGbl_ExceptionHandler) - { - /* Exit the interpreter, allow handler to execute methods */ - - AcpiExExitInterpreter (); - - /* - * Handler can map the exception code to anything it wants, including - * AE_OK, in which case the executing method will not be aborted. - */ - Status = AcpiGbl_ExceptionHandler (Status, - WalkState->MethodNode ? - WalkState->MethodNode->Name.Integer : 0, - WalkState->Opcode, WalkState->AmlOffset, NULL); - (void) AcpiExEnterInterpreter (); - } - -#ifdef ACPI_DISASSEMBLER - if (ACPI_FAILURE (Status)) - { - /* Display method locals/args if disassembler is present */ - - AcpiDmDumpMethodInfo (Status, WalkState, WalkState->Op); - } -#endif - - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsCreateMethodMutex - * - * PARAMETERS: ObjDesc - The method object - * - * RETURN: Status - * - * DESCRIPTION: Create a mutex object for a serialized control method - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDsCreateMethodMutex ( - ACPI_OPERAND_OBJECT *MethodDesc) -{ - ACPI_OPERAND_OBJECT *MutexDesc; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (DsCreateMethodMutex); - - - /* Create the new mutex object */ - - MutexDesc = AcpiUtCreateInternalObject (ACPI_TYPE_MUTEX); - if (!MutexDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Create the actual OS Mutex */ - - Status = AcpiOsCreateMutex (&MutexDesc->Mutex.OsMutex); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - MutexDesc->Mutex.SyncLevel = MethodDesc->Method.SyncLevel; - MethodDesc->Method.Mutex = MutexDesc; - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsBeginMethodExecution - * - * PARAMETERS: MethodNode - Node of the method - * ObjDesc - The method object - * WalkState - current state, NULL if not yet executing - * a method. - * - * RETURN: Status - * - * DESCRIPTION: Prepare a method for execution. Parses the method if necessary, - * increments the thread count, and waits at the method semaphore - * for clearance to execute. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsBeginMethodExecution ( - ACPI_NAMESPACE_NODE *MethodNode, - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE_PTR (DsBeginMethodExecution, MethodNode); - - - if (!MethodNode) - { - return_ACPI_STATUS (AE_NULL_ENTRY); - } - - /* Prevent wraparound of thread count */ - - if (ObjDesc->Method.ThreadCount == ACPI_UINT8_MAX) - { - ACPI_ERROR ((AE_INFO, - "Method reached maximum reentrancy limit (255)")); - return_ACPI_STATUS (AE_AML_METHOD_LIMIT); - } - - /* - * If this method is serialized, we need to acquire the method mutex. - */ - if (ObjDesc->Method.MethodFlags & AML_METHOD_SERIALIZED) - { - /* - * Create a mutex for the method if it is defined to be Serialized - * and a mutex has not already been created. We defer the mutex creation - * until a method is actually executed, to minimize the object count - */ - if (!ObjDesc->Method.Mutex) - { - Status = AcpiDsCreateMethodMutex (ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* - * The CurrentSyncLevel (per-thread) must be less than or equal to - * the sync level of the method. This mechanism provides some - * deadlock prevention - * - * Top-level method invocation has no walk state at this point - */ - if (WalkState && - (WalkState->Thread->CurrentSyncLevel > ObjDesc->Method.Mutex->Mutex.SyncLevel)) - { - ACPI_ERROR ((AE_INFO, - "Cannot acquire Mutex for method [%4.4s], current SyncLevel is too large (%d)", - AcpiUtGetNodeName (MethodNode), - WalkState->Thread->CurrentSyncLevel)); - - return_ACPI_STATUS (AE_AML_MUTEX_ORDER); - } - - /* - * Obtain the method mutex if necessary. Do not acquire mutex for a - * recursive call. - */ - if (!WalkState || - !ObjDesc->Method.Mutex->Mutex.OwnerThread || - (WalkState->Thread != ObjDesc->Method.Mutex->Mutex.OwnerThread)) - { - /* - * Acquire the method mutex. This releases the interpreter if we - * block (and reacquires it before it returns) - */ - Status = AcpiExSystemWaitMutex (ObjDesc->Method.Mutex->Mutex.OsMutex, - ACPI_WAIT_FOREVER); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Update the mutex and walk info and save the original SyncLevel */ - - if (WalkState) - { - ObjDesc->Method.Mutex->Mutex.OriginalSyncLevel = - WalkState->Thread->CurrentSyncLevel; - - ObjDesc->Method.Mutex->Mutex.OwnerThread = WalkState->Thread; - WalkState->Thread->CurrentSyncLevel = ObjDesc->Method.SyncLevel; - } - else - { - ObjDesc->Method.Mutex->Mutex.OriginalSyncLevel = - ObjDesc->Method.Mutex->Mutex.SyncLevel; - } - } - - /* Always increase acquisition depth */ - - ObjDesc->Method.Mutex->Mutex.AcquisitionDepth++; - } - - /* - * Allocate an Owner ID for this method, only if this is the first thread - * to begin concurrent execution. We only need one OwnerId, even if the - * method is invoked recursively. - */ - if (!ObjDesc->Method.OwnerId) - { - Status = AcpiUtAllocateOwnerId (&ObjDesc->Method.OwnerId); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - } - - /* - * Increment the method parse tree thread count since it has been - * reentered one more time (even if it is the same thread) - */ - ObjDesc->Method.ThreadCount++; - return_ACPI_STATUS (Status); - - -Cleanup: - /* On error, must release the method mutex (if present) */ - - if (ObjDesc->Method.Mutex) - { - AcpiOsReleaseMutex (ObjDesc->Method.Mutex->Mutex.OsMutex); - } - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsCallControlMethod - * - * PARAMETERS: Thread - Info for this thread - * ThisWalkState - Current walk state - * Op - Current Op to be walked - * - * RETURN: Status - * - * DESCRIPTION: Transfer execution to a called control method - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsCallControlMethod ( - ACPI_THREAD_STATE *Thread, - ACPI_WALK_STATE *ThisWalkState, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *MethodNode; - ACPI_WALK_STATE *NextWalkState = NULL; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_EVALUATE_INFO *Info; - UINT32 i; - - - ACPI_FUNCTION_TRACE_PTR (DsCallControlMethod, ThisWalkState); - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Calling method %p, currentstate=%p\n", - ThisWalkState->PrevOp, ThisWalkState)); - - /* - * Get the namespace entry for the control method we are about to call - */ - MethodNode = ThisWalkState->MethodCallNode; - if (!MethodNode) - { - return_ACPI_STATUS (AE_NULL_ENTRY); - } - - ObjDesc = AcpiNsGetAttachedObject (MethodNode); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NULL_OBJECT); - } - - /* Init for new method, possibly wait on method mutex */ - - Status = AcpiDsBeginMethodExecution (MethodNode, ObjDesc, - ThisWalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Begin method parse/execution. Create a new walk state */ - - NextWalkState = AcpiDsCreateWalkState (ObjDesc->Method.OwnerId, - NULL, ObjDesc, Thread); - if (!NextWalkState) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* - * The resolved arguments were put on the previous walk state's operand - * stack. Operands on the previous walk state stack always - * start at index 0. Also, null terminate the list of arguments - */ - ThisWalkState->Operands [ThisWalkState->NumOperands] = NULL; - - /* - * Allocate and initialize the evaluation information block - * TBD: this is somewhat inefficient, should change interface to - * DsInitAmlWalk. For now, keeps this struct off the CPU stack - */ - Info = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EVALUATE_INFO)); - if (!Info) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - Info->Parameters = &ThisWalkState->Operands[0]; - Info->ParameterType = ACPI_PARAM_ARGS; - - Status = AcpiDsInitAmlWalk (NextWalkState, NULL, MethodNode, - ObjDesc->Method.AmlStart, ObjDesc->Method.AmlLength, - Info, ACPI_IMODE_EXECUTE); - - ACPI_FREE (Info); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* - * Delete the operands on the previous walkstate operand stack - * (they were copied to new objects) - */ - for (i = 0; i < ObjDesc->Method.ParamCount; i++) - { - AcpiUtRemoveReference (ThisWalkState->Operands [i]); - ThisWalkState->Operands [i] = NULL; - } - - /* Clear the operand stack */ - - ThisWalkState->NumOperands = 0; - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "**** Begin nested execution of [%4.4s] **** WalkState=%p\n", - MethodNode->Name.Ascii, NextWalkState)); - - /* Invoke an internal method if necessary */ - - if (ObjDesc->Method.MethodFlags & AML_METHOD_INTERNAL_ONLY) - { - Status = ObjDesc->Method.Implementation (NextWalkState); - } - - return_ACPI_STATUS (Status); - - -Cleanup: - - /* On error, we must terminate the method properly */ - - AcpiDsTerminateControlMethod (ObjDesc, NextWalkState); - if (NextWalkState) - { - AcpiDsDeleteWalkState (NextWalkState); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsRestartControlMethod - * - * PARAMETERS: WalkState - State for preempted method (caller) - * ReturnDesc - Return value from the called method - * - * RETURN: Status - * - * DESCRIPTION: Restart a method that was preempted by another (nested) method - * invocation. Handle the return value (if any) from the callee. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsRestartControlMethod ( - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT *ReturnDesc) -{ - ACPI_STATUS Status; - int SameAsImplicitReturn; - - - ACPI_FUNCTION_TRACE_PTR (DsRestartControlMethod, WalkState); - - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "****Restart [%4.4s] Op %p ReturnValueFromCallee %p\n", - AcpiUtGetNodeName (WalkState->MethodNode), - WalkState->MethodCallOp, ReturnDesc)); - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - " ReturnFromThisMethodUsed?=%X ResStack %p Walk %p\n", - WalkState->ReturnUsed, - WalkState->Results, WalkState)); - - /* Did the called method return a value? */ - - if (ReturnDesc) - { - /* Is the implicit return object the same as the return desc? */ - - SameAsImplicitReturn = (WalkState->ImplicitReturnObj == ReturnDesc); - - /* Are we actually going to use the return value? */ - - if (WalkState->ReturnUsed) - { - /* Save the return value from the previous method */ - - Status = AcpiDsResultPush (ReturnDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - AcpiUtRemoveReference (ReturnDesc); - return_ACPI_STATUS (Status); - } - - /* - * Save as THIS method's return value in case it is returned - * immediately to yet another method - */ - WalkState->ReturnDesc = ReturnDesc; - } - - /* - * The following code is the optional support for the so-called - * "implicit return". Some AML code assumes that the last value of the - * method is "implicitly" returned to the caller, in the absence of an - * explicit return value. - * - * Just save the last result of the method as the return value. - * - * NOTE: this is optional because the ASL language does not actually - * support this behavior. - */ - else if (!AcpiDsDoImplicitReturn (ReturnDesc, WalkState, FALSE) || - SameAsImplicitReturn) - { - /* - * Delete the return value if it will not be used by the - * calling method or remove one reference if the explicit return - * is the same as the implicit return value. - */ - AcpiUtRemoveReference (ReturnDesc); - } - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsTerminateControlMethod - * - * PARAMETERS: MethodDesc - Method object - * WalkState - State associated with the method - * - * RETURN: None - * - * DESCRIPTION: Terminate a control method. Delete everything that the method - * created, delete all locals and arguments, and delete the parse - * tree if requested. - * - * MUTEX: Interpreter is locked - * - ******************************************************************************/ - -void -AcpiDsTerminateControlMethod ( - ACPI_OPERAND_OBJECT *MethodDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_NAMESPACE_NODE *MethodNode; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE_PTR (DsTerminateControlMethod, WalkState); - - - /* MethodDesc is required, WalkState is optional */ - - if (!MethodDesc) - { - return_VOID; - } - - if (WalkState) - { - /* Delete all arguments and locals */ - - AcpiDsMethodDataDeleteAll (WalkState); - } - - /* - * If method is serialized, release the mutex and restore the - * current sync level for this thread - */ - if (MethodDesc->Method.Mutex) - { - /* Acquisition Depth handles recursive calls */ - - MethodDesc->Method.Mutex->Mutex.AcquisitionDepth--; - if (!MethodDesc->Method.Mutex->Mutex.AcquisitionDepth) - { - WalkState->Thread->CurrentSyncLevel = - MethodDesc->Method.Mutex->Mutex.OriginalSyncLevel; - - AcpiOsReleaseMutex (MethodDesc->Method.Mutex->Mutex.OsMutex); - MethodDesc->Method.Mutex->Mutex.OwnerThread = NULL; - } - } - - if (WalkState) - { - /* - * Delete any objects created by this method during execution. - * The method Node is stored in the walk state - */ - MethodNode = WalkState->MethodNode; - - /* - * Delete any namespace objects created anywhere within - * the namespace by the execution of this method - */ - AcpiNsDeleteNamespaceByOwner (MethodDesc->Method.OwnerId); - } - - /* Decrement the thread count on the method */ - - if (MethodDesc->Method.ThreadCount) - { - MethodDesc->Method.ThreadCount--; - } - else - { - ACPI_ERROR ((AE_INFO, - "Invalid zero thread count in method")); - } - - /* Are there any other threads currently executing this method? */ - - if (MethodDesc->Method.ThreadCount) - { - /* - * Additional threads. Do not release the OwnerId in this case, - * we immediately reuse it for the next thread executing this method - */ - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "*** Completed execution of one thread, %d threads remaining\n", - MethodDesc->Method.ThreadCount)); - } - else - { - /* This is the only executing thread for this method */ - - /* - * Support to dynamically change a method from NotSerialized to - * Serialized if it appears that the method is incorrectly written and - * does not support multiple thread execution. The best example of this - * is if such a method creates namespace objects and blocks. A second - * thread will fail with an AE_ALREADY_EXISTS exception - * - * This code is here because we must wait until the last thread exits - * before creating the synchronization semaphore. - */ - if ((MethodDesc->Method.MethodFlags & AML_METHOD_SERIALIZED) && - (!MethodDesc->Method.Mutex)) - { - Status = AcpiDsCreateMethodMutex (MethodDesc); - } - - /* No more threads, we can free the OwnerId */ - - AcpiUtReleaseOwnerId (&MethodDesc->Method.OwnerId); - } - - return_VOID; -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsmthdat.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsmthdat.c deleted file mode 100644 index c649f10fd9..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsmthdat.c +++ /dev/null @@ -1,844 +0,0 @@ -/******************************************************************************* - * - * Module Name: dsmthdat - control method arguments and local variables - * $Revision: 1.91 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __DSMTHDAT_C__ - -#include "acpi.h" -#include "acdispat.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acinterp.h" - - -#define _COMPONENT ACPI_DISPATCHER - ACPI_MODULE_NAME ("dsmthdat") - -/* Local prototypes */ - -static void -AcpiDsMethodDataDeleteValue ( - UINT16 Opcode, - UINT32 Index, - ACPI_WALK_STATE *WalkState); - -static ACPI_STATUS -AcpiDsMethodDataSetValue ( - UINT16 Opcode, - UINT32 Index, - ACPI_OPERAND_OBJECT *Object, - ACPI_WALK_STATE *WalkState); - -#ifdef ACPI_OBSOLETE_FUNCTIONS -ACPI_OBJECT_TYPE -AcpiDsMethodDataGetType ( - UINT16 Opcode, - UINT32 Index, - ACPI_WALK_STATE *WalkState); -#endif - - -/******************************************************************************* - * - * FUNCTION: AcpiDsMethodDataInit - * - * PARAMETERS: WalkState - Current walk state object - * - * RETURN: Status - * - * DESCRIPTION: Initialize the data structures that hold the method's arguments - * and locals. The data struct is an array of namespace nodes for - * each - this allows RefOf and DeRefOf to work properly for these - * special data types. - * - * NOTES: WalkState fields are initialized to zero by the - * ACPI_ALLOCATE_ZEROED(). - * - * A pseudo-Namespace Node is assigned to each argument and local - * so that RefOf() can return a pointer to the Node. - * - ******************************************************************************/ - -void -AcpiDsMethodDataInit ( - ACPI_WALK_STATE *WalkState) -{ - UINT32 i; - - - ACPI_FUNCTION_TRACE (DsMethodDataInit); - - - /* Init the method arguments */ - - for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++) - { - ACPI_MOVE_32_TO_32 (&WalkState->Arguments[i].Name, NAMEOF_ARG_NTE); - WalkState->Arguments[i].Name.Integer |= (i << 24); - WalkState->Arguments[i].DescriptorType = ACPI_DESC_TYPE_NAMED; - WalkState->Arguments[i].Type = ACPI_TYPE_ANY; - WalkState->Arguments[i].Flags = - ANOBJ_END_OF_PEER_LIST | ANOBJ_METHOD_ARG; - } - - /* Init the method locals */ - - for (i = 0; i < ACPI_METHOD_NUM_LOCALS; i++) - { - ACPI_MOVE_32_TO_32 (&WalkState->LocalVariables[i].Name, NAMEOF_LOCAL_NTE); - - WalkState->LocalVariables[i].Name.Integer |= (i << 24); - WalkState->LocalVariables[i].DescriptorType = ACPI_DESC_TYPE_NAMED; - WalkState->LocalVariables[i].Type = ACPI_TYPE_ANY; - WalkState->LocalVariables[i].Flags = - ANOBJ_END_OF_PEER_LIST | ANOBJ_METHOD_LOCAL; - } - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsMethodDataDeleteAll - * - * PARAMETERS: WalkState - Current walk state object - * - * RETURN: None - * - * DESCRIPTION: Delete method locals and arguments. Arguments are only - * deleted if this method was called from another method. - * - ******************************************************************************/ - -void -AcpiDsMethodDataDeleteAll ( - ACPI_WALK_STATE *WalkState) -{ - UINT32 Index; - - - ACPI_FUNCTION_TRACE (DsMethodDataDeleteAll); - - - /* Detach the locals */ - - for (Index = 0; Index < ACPI_METHOD_NUM_LOCALS; Index++) - { - if (WalkState->LocalVariables[Index].Object) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Deleting Local%d=%p\n", - Index, WalkState->LocalVariables[Index].Object)); - - /* Detach object (if present) and remove a reference */ - - AcpiNsDetachObject (&WalkState->LocalVariables[Index]); - } - } - - /* Detach the arguments */ - - for (Index = 0; Index < ACPI_METHOD_NUM_ARGS; Index++) - { - if (WalkState->Arguments[Index].Object) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Deleting Arg%d=%p\n", - Index, WalkState->Arguments[Index].Object)); - - /* Detach object (if present) and remove a reference */ - - AcpiNsDetachObject (&WalkState->Arguments[Index]); - } - } - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsMethodDataInitArgs - * - * PARAMETERS: *Params - Pointer to a parameter list for the method - * MaxParamCount - The arg count for this method - * WalkState - Current walk state object - * - * RETURN: Status - * - * DESCRIPTION: Initialize arguments for a method. The parameter list is a list - * of ACPI operand objects, either null terminated or whose length - * is defined by MaxParamCount. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsMethodDataInitArgs ( - ACPI_OPERAND_OBJECT **Params, - UINT32 MaxParamCount, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - UINT32 Index = 0; - - - ACPI_FUNCTION_TRACE_PTR (DsMethodDataInitArgs, Params); - - - if (!Params) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "No param list passed to method\n")); - return_ACPI_STATUS (AE_OK); - } - - /* Copy passed parameters into the new method stack frame */ - - while ((Index < ACPI_METHOD_NUM_ARGS) && - (Index < MaxParamCount) && - Params[Index]) - { - /* - * A valid parameter. - * Store the argument in the method/walk descriptor. - * Do not copy the arg in order to implement call by reference - */ - Status = AcpiDsMethodDataSetValue (AML_ARG_OP, Index, - Params[Index], WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - Index++; - } - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%d args passed to method\n", Index)); - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsMethodDataGetNode - * - * PARAMETERS: Opcode - Either AML_LOCAL_OP or AML_ARG_OP - * Index - Which Local or Arg whose type to get - * WalkState - Current walk state object - * Node - Where the node is returned. - * - * RETURN: Status and node - * - * DESCRIPTION: Get the Node associated with a local or arg. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsMethodDataGetNode ( - UINT16 Opcode, - UINT32 Index, - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE **Node) -{ - ACPI_FUNCTION_TRACE (DsMethodDataGetNode); - - - /* - * Method Locals and Arguments are supported - */ - switch (Opcode) - { - case AML_LOCAL_OP: - - if (Index > ACPI_METHOD_MAX_LOCAL) - { - ACPI_ERROR ((AE_INFO, - "Local index %d is invalid (max %d)", - Index, ACPI_METHOD_MAX_LOCAL)); - return_ACPI_STATUS (AE_AML_INVALID_INDEX); - } - - /* Return a pointer to the pseudo-node */ - - *Node = &WalkState->LocalVariables[Index]; - break; - - case AML_ARG_OP: - - if (Index > ACPI_METHOD_MAX_ARG) - { - ACPI_ERROR ((AE_INFO, - "Arg index %d is invalid (max %d)", - Index, ACPI_METHOD_MAX_ARG)); - return_ACPI_STATUS (AE_AML_INVALID_INDEX); - } - - /* Return a pointer to the pseudo-node */ - - *Node = &WalkState->Arguments[Index]; - break; - - default: - ACPI_ERROR ((AE_INFO, "Opcode %d is invalid", Opcode)); - return_ACPI_STATUS (AE_AML_BAD_OPCODE); - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsMethodDataSetValue - * - * PARAMETERS: Opcode - Either AML_LOCAL_OP or AML_ARG_OP - * Index - Which Local or Arg to get - * Object - Object to be inserted into the stack entry - * WalkState - Current walk state object - * - * RETURN: Status - * - * DESCRIPTION: Insert an object onto the method stack at entry Opcode:Index. - * Note: There is no "implicit conversion" for locals. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDsMethodDataSetValue ( - UINT16 Opcode, - UINT32 Index, - ACPI_OPERAND_OBJECT *Object, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - - - ACPI_FUNCTION_TRACE (DsMethodDataSetValue); - - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "NewObj %p Opcode %X, Refs=%d [%s]\n", Object, - Opcode, Object->Common.ReferenceCount, - AcpiUtGetTypeName (Object->Common.Type))); - - /* Get the namespace node for the arg/local */ - - Status = AcpiDsMethodDataGetNode (Opcode, Index, WalkState, &Node); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Increment ref count so object can't be deleted while installed. - * NOTE: We do not copy the object in order to preserve the call by - * reference semantics of ACPI Control Method invocation. - * (See ACPI Specification 2.0C) - */ - AcpiUtAddReference (Object); - - /* Install the object */ - - Node->Object = Object; - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsMethodDataGetValue - * - * PARAMETERS: Opcode - Either AML_LOCAL_OP or AML_ARG_OP - * Index - Which localVar or argument to get - * WalkState - Current walk state object - * DestDesc - Where Arg or Local value is returned - * - * RETURN: Status - * - * DESCRIPTION: Retrieve value of selected Arg or Local for this method - * Used only in AcpiExResolveToValue(). - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsMethodDataGetValue ( - UINT16 Opcode, - UINT32 Index, - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT **DestDesc) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - ACPI_OPERAND_OBJECT *Object; - - - ACPI_FUNCTION_TRACE (DsMethodDataGetValue); - - - /* Validate the object descriptor */ - - if (!DestDesc) - { - ACPI_ERROR ((AE_INFO, "Null object descriptor pointer")); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Get the namespace node for the arg/local */ - - Status = AcpiDsMethodDataGetNode (Opcode, Index, WalkState, &Node); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Get the object from the node */ - - Object = Node->Object; - - /* Examine the returned object, it must be valid. */ - - if (!Object) - { - /* - * Index points to uninitialized object. - * This means that either 1) The expected argument was - * not passed to the method, or 2) A local variable - * was referenced by the method (via the ASL) - * before it was initialized. Either case is an error. - */ - - /* If slack enabled, init the LocalX/ArgX to an Integer of value zero */ - - if (AcpiGbl_EnableInterpreterSlack) - { - Object = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); - if (!Object) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - Object->Integer.Value = 0; - Node->Object = Object; - } - - /* Otherwise, return the error */ - - else switch (Opcode) - { - case AML_ARG_OP: - - ACPI_ERROR ((AE_INFO, - "Uninitialized Arg[%d] at node %p", - Index, Node)); - - return_ACPI_STATUS (AE_AML_UNINITIALIZED_ARG); - - case AML_LOCAL_OP: - - ACPI_ERROR ((AE_INFO, - "Uninitialized Local[%d] at node %p", - Index, Node)); - - return_ACPI_STATUS (AE_AML_UNINITIALIZED_LOCAL); - - default: - ACPI_ERROR ((AE_INFO, "Not a Arg/Local opcode: %X", Opcode)); - return_ACPI_STATUS (AE_AML_INTERNAL); - } - } - - /* - * The Index points to an initialized and valid object. - * Return an additional reference to the object - */ - *DestDesc = Object; - AcpiUtAddReference (Object); - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsMethodDataDeleteValue - * - * PARAMETERS: Opcode - Either AML_LOCAL_OP or AML_ARG_OP - * Index - Which localVar or argument to delete - * WalkState - Current walk state object - * - * RETURN: None - * - * DESCRIPTION: Delete the entry at Opcode:Index. Inserts - * a null into the stack slot after the object is deleted. - * - ******************************************************************************/ - -static void -AcpiDsMethodDataDeleteValue ( - UINT16 Opcode, - UINT32 Index, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - ACPI_OPERAND_OBJECT *Object; - - - ACPI_FUNCTION_TRACE (DsMethodDataDeleteValue); - - - /* Get the namespace node for the arg/local */ - - Status = AcpiDsMethodDataGetNode (Opcode, Index, WalkState, &Node); - if (ACPI_FAILURE (Status)) - { - return_VOID; - } - - /* Get the associated object */ - - Object = AcpiNsGetAttachedObject (Node); - - /* - * Undefine the Arg or Local by setting its descriptor - * pointer to NULL. Locals/Args can contain both - * ACPI_OPERAND_OBJECTS and ACPI_NAMESPACE_NODEs - */ - Node->Object = NULL; - - if ((Object) && - (ACPI_GET_DESCRIPTOR_TYPE (Object) == ACPI_DESC_TYPE_OPERAND)) - { - /* - * There is a valid object. - * Decrement the reference count by one to balance the - * increment when the object was stored. - */ - AcpiUtRemoveReference (Object); - } - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsStoreObjectToLocal - * - * PARAMETERS: Opcode - Either AML_LOCAL_OP or AML_ARG_OP - * Index - Which Local or Arg to set - * ObjDesc - Value to be stored - * WalkState - Current walk state - * - * RETURN: Status - * - * DESCRIPTION: Store a value in an Arg or Local. The ObjDesc is installed - * as the new value for the Arg or Local and the reference count - * for ObjDesc is incremented. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsStoreObjectToLocal ( - UINT16 Opcode, - UINT32 Index, - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - ACPI_OPERAND_OBJECT *CurrentObjDesc; - ACPI_OPERAND_OBJECT *NewObjDesc; - - - ACPI_FUNCTION_TRACE (DsStoreObjectToLocal); - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Opcode=%X Index=%d Obj=%p\n", - Opcode, Index, ObjDesc)); - - /* Parameter validation */ - - if (!ObjDesc) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Get the namespace node for the arg/local */ - - Status = AcpiDsMethodDataGetNode (Opcode, Index, WalkState, &Node); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - CurrentObjDesc = AcpiNsGetAttachedObject (Node); - if (CurrentObjDesc == ObjDesc) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Obj=%p already installed!\n", - ObjDesc)); - return_ACPI_STATUS (Status); - } - - /* - * If the reference count on the object is more than one, we must - * take a copy of the object before we store. A reference count - * of exactly 1 means that the object was just created during the - * evaluation of an expression, and we can safely use it since it - * is not used anywhere else. - */ - NewObjDesc = ObjDesc; - if (ObjDesc->Common.ReferenceCount > 1) - { - Status = AcpiUtCopyIobjectToIobject (ObjDesc, &NewObjDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* - * If there is an object already in this slot, we either - * have to delete it, or if this is an argument and there - * is an object reference stored there, we have to do - * an indirect store! - */ - if (CurrentObjDesc) - { - /* - * Check for an indirect store if an argument - * contains an object reference (stored as an Node). - * We don't allow this automatic dereferencing for - * locals, since a store to a local should overwrite - * anything there, including an object reference. - * - * If both Arg0 and Local0 contain RefOf (Local4): - * - * Store (1, Arg0) - Causes indirect store to local4 - * Store (1, Local0) - Stores 1 in local0, overwriting - * the reference to local4 - * Store (1, DeRefof (Local0)) - Causes indirect store to local4 - * - * Weird, but true. - */ - if (Opcode == AML_ARG_OP) - { - /* - * If we have a valid reference object that came from RefOf(), - * do the indirect store - */ - if ((ACPI_GET_DESCRIPTOR_TYPE (CurrentObjDesc) == ACPI_DESC_TYPE_OPERAND) && - (CurrentObjDesc->Common.Type == ACPI_TYPE_LOCAL_REFERENCE) && - (CurrentObjDesc->Reference.Opcode == AML_REF_OF_OP)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Arg (%p) is an ObjRef(Node), storing in node %p\n", - NewObjDesc, CurrentObjDesc)); - - /* - * Store this object to the Node (perform the indirect store) - * NOTE: No implicit conversion is performed, as per the ACPI - * specification rules on storing to Locals/Args. - */ - Status = AcpiExStoreObjectToNode (NewObjDesc, - CurrentObjDesc->Reference.Object, WalkState, - ACPI_NO_IMPLICIT_CONVERSION); - - /* Remove local reference if we copied the object above */ - - if (NewObjDesc != ObjDesc) - { - AcpiUtRemoveReference (NewObjDesc); - } - return_ACPI_STATUS (Status); - } - } - - /* - * Delete the existing object - * before storing the new one - */ - AcpiDsMethodDataDeleteValue (Opcode, Index, WalkState); - } - - /* - * Install the Obj descriptor (*NewObjDesc) into - * the descriptor for the Arg or Local. - * (increments the object reference count by one) - */ - Status = AcpiDsMethodDataSetValue (Opcode, Index, NewObjDesc, WalkState); - - /* Remove local reference if we copied the object above */ - - if (NewObjDesc != ObjDesc) - { - AcpiUtRemoveReference (NewObjDesc); - } - - return_ACPI_STATUS (Status); -} - - -#ifdef ACPI_OBSOLETE_FUNCTIONS -/******************************************************************************* - * - * FUNCTION: AcpiDsMethodDataGetType - * - * PARAMETERS: Opcode - Either AML_LOCAL_OP or AML_ARG_OP - * Index - Which Local or Arg whose type to get - * WalkState - Current walk state object - * - * RETURN: Data type of current value of the selected Arg or Local - * - * DESCRIPTION: Get the type of the object stored in the Local or Arg - * - ******************************************************************************/ - -ACPI_OBJECT_TYPE -AcpiDsMethodDataGetType ( - UINT16 Opcode, - UINT32 Index, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - ACPI_OPERAND_OBJECT *Object; - - - ACPI_FUNCTION_TRACE (DsMethodDataGetType); - - - /* Get the namespace node for the arg/local */ - - Status = AcpiDsMethodDataGetNode (Opcode, Index, WalkState, &Node); - if (ACPI_FAILURE (Status)) - { - return_VALUE ((ACPI_TYPE_NOT_FOUND)); - } - - /* Get the object */ - - Object = AcpiNsGetAttachedObject (Node); - if (!Object) - { - /* Uninitialized local/arg, return TYPE_ANY */ - - return_VALUE (ACPI_TYPE_ANY); - } - - /* Get the object type */ - - return_VALUE (ACPI_GET_OBJECT_TYPE (Object)); -} -#endif - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsobject.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsobject.c deleted file mode 100644 index 6ad096ba84..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsobject.c +++ /dev/null @@ -1,770 +0,0 @@ -/****************************************************************************** - * - * Module Name: dsobject - Dispatcher object management routines - * $Revision: 1.133 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __DSOBJECT_C__ - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" -#include "acdispat.h" -#include "acnamesp.h" -#include "acinterp.h" - -#define _COMPONENT ACPI_DISPATCHER - ACPI_MODULE_NAME ("dsobject") - -/* Local prototypes */ - -static ACPI_STATUS -AcpiDsBuildInternalObject ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - ACPI_OPERAND_OBJECT **ObjDescPtr); - - -#ifndef ACPI_NO_METHOD_EXECUTION -/******************************************************************************* - * - * FUNCTION: AcpiDsBuildInternalObject - * - * PARAMETERS: WalkState - Current walk state - * Op - Parser object to be translated - * ObjDescPtr - Where the ACPI internal object is returned - * - * RETURN: Status - * - * DESCRIPTION: Translate a parser Op object to the equivalent namespace object - * Simple objects are any objects other than a package object! - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDsBuildInternalObject ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - ACPI_OPERAND_OBJECT **ObjDescPtr) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (DsBuildInternalObject); - - - *ObjDescPtr = NULL; - if (Op->Common.AmlOpcode == AML_INT_NAMEPATH_OP) - { - /* - * This is a named object reference. If this name was - * previously looked up in the namespace, it was stored in this op. - * Otherwise, go ahead and look it up now - */ - if (!Op->Common.Node) - { - Status = AcpiNsLookup (WalkState->ScopeInfo, - Op->Common.Value.String, - ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, - ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &(Op->Common.Node))); - if (ACPI_FAILURE (Status)) - { - /* Check if we are resolving a named reference within a package */ - - if ((Status == AE_NOT_FOUND) && (AcpiGbl_EnableInterpreterSlack) && - - ((Op->Common.Parent->Common.AmlOpcode == AML_PACKAGE_OP) || - (Op->Common.Parent->Common.AmlOpcode == AML_VAR_PACKAGE_OP))) - { - /* - * We didn't find the target and we are populating elements - * of a package - ignore if slack enabled. Some ASL code - * contains dangling invalid references in packages and - * expects that no exception will be issued. Leave the - * element as a null element. It cannot be used, but it - * can be overwritten by subsequent ASL code - this is - * typically the case. - */ - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Ignoring unresolved reference in package [%4.4s]\n", - WalkState->ScopeInfo->Scope.Node->Name.Ascii)); - - return_ACPI_STATUS (AE_OK); - } - else - { - ACPI_ERROR_NAMESPACE (Op->Common.Value.String, Status); - } - - return_ACPI_STATUS (Status); - } - } - } - - /* Create and init a new internal ACPI object */ - - ObjDesc = AcpiUtCreateInternalObject ( - (AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode))->ObjectType); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - Status = AcpiDsInitObjectFromOp (WalkState, Op, Op->Common.AmlOpcode, - &ObjDesc); - if (ACPI_FAILURE (Status)) - { - AcpiUtRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); - } - - *ObjDescPtr = ObjDesc; - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsBuildInternalBufferObj - * - * PARAMETERS: WalkState - Current walk state - * Op - Parser object to be translated - * BufferLength - Length of the buffer - * ObjDescPtr - Where the ACPI internal object is returned - * - * RETURN: Status - * - * DESCRIPTION: Translate a parser Op package object to the equivalent - * namespace object - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsBuildInternalBufferObj ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - UINT32 BufferLength, - ACPI_OPERAND_OBJECT **ObjDescPtr) -{ - ACPI_PARSE_OBJECT *Arg; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_PARSE_OBJECT *ByteList; - UINT32 ByteListLength = 0; - - - ACPI_FUNCTION_TRACE (DsBuildInternalBufferObj); - - - /* - * If we are evaluating a Named buffer object "Name (xxxx, Buffer)". - * The buffer object already exists (from the NS node), otherwise it must - * be created. - */ - ObjDesc = *ObjDescPtr; - if (!ObjDesc) - { - /* Create a new buffer object */ - - ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER); - *ObjDescPtr = ObjDesc; - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - } - - /* - * Second arg is the buffer data (optional) ByteList can be either - * individual bytes or a string initializer. In either case, a - * ByteList appears in the AML. - */ - Arg = Op->Common.Value.Arg; /* skip first arg */ - - ByteList = Arg->Named.Next; - if (ByteList) - { - if (ByteList->Common.AmlOpcode != AML_INT_BYTELIST_OP) - { - ACPI_ERROR ((AE_INFO, - "Expecting bytelist, got AML opcode %X in op %p", - ByteList->Common.AmlOpcode, ByteList)); - - AcpiUtRemoveReference (ObjDesc); - return (AE_TYPE); - } - - ByteListLength = (UINT32) ByteList->Common.Value.Integer; - } - - /* - * The buffer length (number of bytes) will be the larger of: - * 1) The specified buffer length and - * 2) The length of the initializer byte list - */ - ObjDesc->Buffer.Length = BufferLength; - if (ByteListLength > BufferLength) - { - ObjDesc->Buffer.Length = ByteListLength; - } - - /* Allocate the buffer */ - - if (ObjDesc->Buffer.Length == 0) - { - ObjDesc->Buffer.Pointer = NULL; - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Buffer defined with zero length in AML, creating\n")); - } - else - { - ObjDesc->Buffer.Pointer = ACPI_ALLOCATE_ZEROED ( - ObjDesc->Buffer.Length); - if (!ObjDesc->Buffer.Pointer) - { - AcpiUtDeleteObjectDesc (ObjDesc); - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Initialize buffer from the ByteList (if present) */ - - if (ByteList) - { - ACPI_MEMCPY (ObjDesc->Buffer.Pointer, ByteList->Named.Data, - ByteListLength); - } - } - - ObjDesc->Buffer.Flags |= AOPOBJ_DATA_VALID; - Op->Common.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjDesc); - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsBuildInternalPackageObj - * - * PARAMETERS: WalkState - Current walk state - * Op - Parser object to be translated - * ElementCount - Number of elements in the package - this is - * the NumElements argument to Package() - * ObjDescPtr - Where the ACPI internal object is returned - * - * RETURN: Status - * - * DESCRIPTION: Translate a parser Op package object to the equivalent - * namespace object - * - * NOTE: The number of elements in the package will be always be the NumElements - * count, regardless of the number of elements in the package list. If - * NumElements is smaller, only that many package list elements are used. - * if NumElements is larger, the Package object is padded out with - * objects of type Uninitialized (as per ACPI spec.) - * - * Even though the ASL compilers do not allow NumElements to be smaller - * than the Package list length (for the fixed length package opcode), some - * BIOS code modifies the AML on the fly to adjust the NumElements, and - * this code compensates for that. This also provides compatibility with - * other AML interpreters. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsBuildInternalPackageObj ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - UINT32 ElementCount, - ACPI_OPERAND_OBJECT **ObjDescPtr) -{ - ACPI_PARSE_OBJECT *Arg; - ACPI_PARSE_OBJECT *Parent; - ACPI_OPERAND_OBJECT *ObjDesc = NULL; - ACPI_STATUS Status = AE_OK; - ACPI_NATIVE_UINT i; - - - ACPI_FUNCTION_TRACE (DsBuildInternalPackageObj); - - - /* Find the parent of a possibly nested package */ - - Parent = Op->Common.Parent; - while ((Parent->Common.AmlOpcode == AML_PACKAGE_OP) || - (Parent->Common.AmlOpcode == AML_VAR_PACKAGE_OP)) - { - Parent = Parent->Common.Parent; - } - - /* - * If we are evaluating a Named package object "Name (xxxx, Package)", - * the package object already exists, otherwise it must be created. - */ - ObjDesc = *ObjDescPtr; - if (!ObjDesc) - { - ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_PACKAGE); - *ObjDescPtr = ObjDesc; - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - ObjDesc->Package.Node = Parent->Common.Node; - } - - /* - * Allocate the element array (array of pointers to the individual - * objects) based on the NumElements parameter. Add an extra pointer slot - * so that the list is always null terminated. - */ - ObjDesc->Package.Elements = ACPI_ALLOCATE_ZEROED ( - ((ACPI_SIZE) ElementCount + 1) * sizeof (void *)); - - if (!ObjDesc->Package.Elements) - { - AcpiUtDeleteObjectDesc (ObjDesc); - return_ACPI_STATUS (AE_NO_MEMORY); - } - - ObjDesc->Package.Count = ElementCount; - - /* - * Initialize the elements of the package, up to the NumElements count. - * Package is automatically padded with uninitialized (NULL) elements - * if NumElements is greater than the package list length. Likewise, - * Package is truncated if NumElements is less than the list length. - */ - Arg = Op->Common.Value.Arg; - Arg = Arg->Common.Next; - for (i = 0; Arg && (i < ElementCount); i++) - { - if (Arg->Common.AmlOpcode == AML_INT_RETURN_VALUE_OP) - { - /* This package element is already built, just get it */ - - ObjDesc->Package.Elements[i] = - ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Arg->Common.Node); - } - else - { - Status = AcpiDsBuildInternalObject (WalkState, Arg, - &ObjDesc->Package.Elements[i]); - } - Arg = Arg->Common.Next; - } - - if (!Arg) - { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Package List length larger than NumElements count (%X), truncated\n", - ElementCount)); - } - - ObjDesc->Package.Flags |= AOPOBJ_DATA_VALID; - Op->Common.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjDesc); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsCreateNode - * - * PARAMETERS: WalkState - Current walk state - * Node - NS Node to be initialized - * Op - Parser object to be translated - * - * RETURN: Status - * - * DESCRIPTION: Create the object to be associated with a namespace node - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsCreateNode ( - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE *Node, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *ObjDesc; - - - ACPI_FUNCTION_TRACE_PTR (DsCreateNode, Op); - - - /* - * Because of the execution pass through the non-control-method - * parts of the table, we can arrive here twice. Only init - * the named object node the first time through - */ - if (AcpiNsGetAttachedObject (Node)) - { - return_ACPI_STATUS (AE_OK); - } - - if (!Op->Common.Value.Arg) - { - /* No arguments, there is nothing to do */ - - return_ACPI_STATUS (AE_OK); - } - - /* Build an internal object for the argument(s) */ - - Status = AcpiDsBuildInternalObject (WalkState, Op->Common.Value.Arg, - &ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Re-type the object according to its argument */ - - Node->Type = ACPI_GET_OBJECT_TYPE (ObjDesc); - - /* Attach obj to node */ - - Status = AcpiNsAttachObject (Node, ObjDesc, Node->Type); - - /* Remove local reference to the object */ - - AcpiUtRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); -} - -#endif /* ACPI_NO_METHOD_EXECUTION */ - - -/******************************************************************************* - * - * FUNCTION: AcpiDsInitObjectFromOp - * - * PARAMETERS: WalkState - Current walk state - * Op - Parser op used to init the internal object - * Opcode - AML opcode associated with the object - * RetObjDesc - Namespace object to be initialized - * - * RETURN: Status - * - * DESCRIPTION: Initialize a namespace object from a parser Op and its - * associated arguments. The namespace object is a more compact - * representation of the Op and its arguments. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsInitObjectFromOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - UINT16 Opcode, - ACPI_OPERAND_OBJECT **RetObjDesc) -{ - const ACPI_OPCODE_INFO *OpInfo; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE (DsInitObjectFromOp); - - - ObjDesc = *RetObjDesc; - OpInfo = AcpiPsGetOpcodeInfo (Opcode); - if (OpInfo->Class == AML_CLASS_UNKNOWN) - { - /* Unknown opcode */ - - return_ACPI_STATUS (AE_TYPE); - } - - /* Perform per-object initialization */ - - switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) - { - case ACPI_TYPE_BUFFER: - - /* - * Defer evaluation of Buffer TermArg operand - */ - ObjDesc->Buffer.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, - WalkState->Operands[0]); - ObjDesc->Buffer.AmlStart = Op->Named.Data; - ObjDesc->Buffer.AmlLength = Op->Named.Length; - break; - - - case ACPI_TYPE_PACKAGE: - - /* - * Defer evaluation of Package TermArg operand - */ - ObjDesc->Package.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, - WalkState->Operands[0]); - ObjDesc->Package.AmlStart = Op->Named.Data; - ObjDesc->Package.AmlLength = Op->Named.Length; - break; - - - case ACPI_TYPE_INTEGER: - - switch (OpInfo->Type) - { - case AML_TYPE_CONSTANT: - /* - * Resolve AML Constants here - AND ONLY HERE! - * All constants are integers. - * We mark the integer with a flag that indicates that it started - * life as a constant -- so that stores to constants will perform - * as expected (noop). ZeroOp is used as a placeholder for optional - * target operands. - */ - ObjDesc->Common.Flags = AOPOBJ_AML_CONSTANT; - - switch (Opcode) - { - case AML_ZERO_OP: - - ObjDesc->Integer.Value = 0; - break; - - case AML_ONE_OP: - - ObjDesc->Integer.Value = 1; - break; - - case AML_ONES_OP: - - ObjDesc->Integer.Value = ACPI_INTEGER_MAX; - - /* Truncate value if we are executing from a 32-bit ACPI table */ - -#ifndef ACPI_NO_METHOD_EXECUTION - AcpiExTruncateFor32bitTable (ObjDesc); -#endif - break; - - case AML_REVISION_OP: - - ObjDesc->Integer.Value = ACPI_CA_VERSION; - break; - - default: - - ACPI_ERROR ((AE_INFO, - "Unknown constant opcode %X", Opcode)); - Status = AE_AML_OPERAND_TYPE; - break; - } - break; - - - case AML_TYPE_LITERAL: - - ObjDesc->Integer.Value = Op->Common.Value.Integer; -#ifndef ACPI_NO_METHOD_EXECUTION - AcpiExTruncateFor32bitTable (ObjDesc); -#endif - break; - - - default: - ACPI_ERROR ((AE_INFO, "Unknown Integer type %X", - OpInfo->Type)); - Status = AE_AML_OPERAND_TYPE; - break; - } - break; - - - case ACPI_TYPE_STRING: - - ObjDesc->String.Pointer = Op->Common.Value.String; - ObjDesc->String.Length = (UINT32) ACPI_STRLEN (Op->Common.Value.String); - - /* - * The string is contained in the ACPI table, don't ever try - * to delete it - */ - ObjDesc->Common.Flags |= AOPOBJ_STATIC_POINTER; - break; - - - case ACPI_TYPE_METHOD: - break; - - - case ACPI_TYPE_LOCAL_REFERENCE: - - switch (OpInfo->Type) - { - case AML_TYPE_LOCAL_VARIABLE: - - /* Split the opcode into a base opcode + offset */ - - ObjDesc->Reference.Opcode = AML_LOCAL_OP; - ObjDesc->Reference.Offset = Opcode - AML_LOCAL_OP; - -#ifndef ACPI_NO_METHOD_EXECUTION - Status = AcpiDsMethodDataGetNode (AML_LOCAL_OP, - ObjDesc->Reference.Offset, - WalkState, - (ACPI_NAMESPACE_NODE **) &ObjDesc->Reference.Object); -#endif - break; - - - case AML_TYPE_METHOD_ARGUMENT: - - /* Split the opcode into a base opcode + offset */ - - ObjDesc->Reference.Opcode = AML_ARG_OP; - ObjDesc->Reference.Offset = Opcode - AML_ARG_OP; - -#ifndef ACPI_NO_METHOD_EXECUTION - Status = AcpiDsMethodDataGetNode (AML_ARG_OP, - ObjDesc->Reference.Offset, - WalkState, - (ACPI_NAMESPACE_NODE **) &ObjDesc->Reference.Object); -#endif - break; - - default: /* Other literals, etc.. */ - - if (Op->Common.AmlOpcode == AML_INT_NAMEPATH_OP) - { - /* Node was saved in Op */ - - ObjDesc->Reference.Node = Op->Common.Node; - } - - ObjDesc->Reference.Opcode = Opcode; - break; - } - break; - - - default: - - ACPI_ERROR ((AE_INFO, "Unimplemented data type: %X", - ACPI_GET_OBJECT_TYPE (ObjDesc))); - - Status = AE_AML_OPERAND_TYPE; - break; - } - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsopcode.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsopcode.c deleted file mode 100644 index 06f725b7ba..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsopcode.c +++ /dev/null @@ -1,1339 +0,0 @@ -/****************************************************************************** - * - * Module Name: dsopcode - Dispatcher Op Region support and handling of - * "control" opcodes - * $Revision: 1.109 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __DSOPCODE_C__ - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" -#include "acdispat.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "acevents.h" - -#define _COMPONENT ACPI_DISPATCHER - ACPI_MODULE_NAME ("dsopcode") - -/* Local prototypes */ - -static ACPI_STATUS -AcpiDsExecuteArguments ( - ACPI_NAMESPACE_NODE *Node, - ACPI_NAMESPACE_NODE *ScopeNode, - UINT32 AmlLength, - UINT8 *AmlStart); - -static ACPI_STATUS -AcpiDsInitBufferField ( - UINT16 AmlOpcode, - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT *BufferDesc, - ACPI_OPERAND_OBJECT *OffsetDesc, - ACPI_OPERAND_OBJECT *LengthDesc, - ACPI_OPERAND_OBJECT *ResultDesc); - - -/******************************************************************************* - * - * FUNCTION: AcpiDsExecuteArguments - * - * PARAMETERS: Node - Object NS node - * ScopeNode - Parent NS node - * AmlLength - Length of executable AML - * AmlStart - Pointer to the AML - * - * RETURN: Status. - * - * DESCRIPTION: Late (deferred) execution of region or field arguments - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDsExecuteArguments ( - ACPI_NAMESPACE_NODE *Node, - ACPI_NAMESPACE_NODE *ScopeNode, - UINT32 AmlLength, - UINT8 *AmlStart) -{ - ACPI_STATUS Status; - ACPI_PARSE_OBJECT *Op; - ACPI_WALK_STATE *WalkState; - - - ACPI_FUNCTION_TRACE (DsExecuteArguments); - - - /* - * Allocate a new parser op to be the root of the parsed tree - */ - Op = AcpiPsAllocOp (AML_INT_EVAL_SUBTREE_OP); - if (!Op) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Save the Node for use in AcpiPsParseAml */ - - Op->Common.Node = ScopeNode; - - /* Create and initialize a new parser state */ - - WalkState = AcpiDsCreateWalkState (0, NULL, NULL, NULL); - if (!WalkState) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - Status = AcpiDsInitAmlWalk (WalkState, Op, NULL, AmlStart, - AmlLength, NULL, ACPI_IMODE_LOAD_PASS1); - if (ACPI_FAILURE (Status)) - { - AcpiDsDeleteWalkState (WalkState); - goto Cleanup; - } - - /* Mark this parse as a deferred opcode */ - - WalkState->ParseFlags = ACPI_PARSE_DEFERRED_OP; - WalkState->DeferredNode = Node; - - /* Pass1: Parse the entire declaration */ - - Status = AcpiPsParseAml (WalkState); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* Get and init the Op created above */ - - Op->Common.Node = Node; - AcpiPsDeleteParseTree (Op); - - /* Evaluate the deferred arguments */ - - Op = AcpiPsAllocOp (AML_INT_EVAL_SUBTREE_OP); - if (!Op) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - Op->Common.Node = ScopeNode; - - /* Create and initialize a new parser state */ - - WalkState = AcpiDsCreateWalkState (0, NULL, NULL, NULL); - if (!WalkState) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* Execute the opcode and arguments */ - - Status = AcpiDsInitAmlWalk (WalkState, Op, NULL, AmlStart, - AmlLength, NULL, ACPI_IMODE_EXECUTE); - if (ACPI_FAILURE (Status)) - { - AcpiDsDeleteWalkState (WalkState); - goto Cleanup; - } - - /* Mark this execution as a deferred opcode */ - - WalkState->DeferredNode = Node; - Status = AcpiPsParseAml (WalkState); - -Cleanup: - AcpiPsDeleteParseTree (Op); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsGetBufferFieldArguments - * - * PARAMETERS: ObjDesc - A valid BufferField object - * - * RETURN: Status. - * - * DESCRIPTION: Get BufferField Buffer and Index. This implements the late - * evaluation of these field attributes. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsGetBufferFieldArguments ( - ACPI_OPERAND_OBJECT *ObjDesc) -{ - ACPI_OPERAND_OBJECT *ExtraDesc; - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE_PTR (DsGetBufferFieldArguments, ObjDesc); - - - if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID) - { - return_ACPI_STATUS (AE_OK); - } - - /* Get the AML pointer (method object) and BufferField node */ - - ExtraDesc = AcpiNsGetSecondaryObject (ObjDesc); - Node = ObjDesc->BufferField.Node; - - ACPI_DEBUG_EXEC(AcpiUtDisplayInitPathname (ACPI_TYPE_BUFFER_FIELD, Node, NULL)); - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] BufferField Arg Init\n", - AcpiUtGetNodeName (Node))); - - /* Execute the AML code for the TermArg arguments */ - - Status = AcpiDsExecuteArguments (Node, AcpiNsGetParentNode (Node), - ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsGetBufferArguments - * - * PARAMETERS: ObjDesc - A valid Buffer object - * - * RETURN: Status. - * - * DESCRIPTION: Get Buffer length and initializer byte list. This implements - * the late evaluation of these attributes. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsGetBufferArguments ( - ACPI_OPERAND_OBJECT *ObjDesc) -{ - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE_PTR (DsGetBufferArguments, ObjDesc); - - - if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID) - { - return_ACPI_STATUS (AE_OK); - } - - /* Get the Buffer node */ - - Node = ObjDesc->Buffer.Node; - if (!Node) - { - ACPI_ERROR ((AE_INFO, - "No pointer back to NS node in buffer obj %p", ObjDesc)); - return_ACPI_STATUS (AE_AML_INTERNAL); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Buffer Arg Init\n")); - - /* Execute the AML code for the TermArg arguments */ - - Status = AcpiDsExecuteArguments (Node, Node, - ObjDesc->Buffer.AmlLength, ObjDesc->Buffer.AmlStart); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsGetPackageArguments - * - * PARAMETERS: ObjDesc - A valid Package object - * - * RETURN: Status. - * - * DESCRIPTION: Get Package length and initializer byte list. This implements - * the late evaluation of these attributes. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsGetPackageArguments ( - ACPI_OPERAND_OBJECT *ObjDesc) -{ - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE_PTR (DsGetPackageArguments, ObjDesc); - - - if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID) - { - return_ACPI_STATUS (AE_OK); - } - - /* Get the Package node */ - - Node = ObjDesc->Package.Node; - if (!Node) - { - ACPI_ERROR ((AE_INFO, - "No pointer back to NS node in package %p", ObjDesc)); - return_ACPI_STATUS (AE_AML_INTERNAL); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Package Arg Init\n")); - - /* Execute the AML code for the TermArg arguments */ - - Status = AcpiDsExecuteArguments (Node, Node, - ObjDesc->Package.AmlLength, ObjDesc->Package.AmlStart); - return_ACPI_STATUS (Status); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiDsGetRegionArguments - * - * PARAMETERS: ObjDesc - A valid region object - * - * RETURN: Status. - * - * DESCRIPTION: Get region address and length. This implements the late - * evaluation of these region attributes. - * - ****************************************************************************/ - -ACPI_STATUS -AcpiDsGetRegionArguments ( - ACPI_OPERAND_OBJECT *ObjDesc) -{ - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *ExtraDesc; - - - ACPI_FUNCTION_TRACE_PTR (DsGetRegionArguments, ObjDesc); - - - if (ObjDesc->Region.Flags & AOPOBJ_DATA_VALID) - { - return_ACPI_STATUS (AE_OK); - } - - ExtraDesc = AcpiNsGetSecondaryObject (ObjDesc); - if (!ExtraDesc) - { - return_ACPI_STATUS (AE_NOT_EXIST); - } - - /* Get the Region node */ - - Node = ObjDesc->Region.Node; - - ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname (ACPI_TYPE_REGION, Node, NULL)); - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] OpRegion Arg Init at AML %p\n", - AcpiUtGetNodeName (Node), ExtraDesc->Extra.AmlStart)); - - /* Execute the argument AML */ - - Status = AcpiDsExecuteArguments (Node, AcpiNsGetParentNode (Node), - ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Validate the region address/length via the host OS */ - - Status = AcpiOsValidateAddress (ObjDesc->Region.SpaceId, - ObjDesc->Region.Address, (ACPI_SIZE) ObjDesc->Region.Length); - if (ACPI_FAILURE (Status)) - { - /* - * Invalid address/length. We will emit an error message and mark - * the region as invalid, so that it will cause an additional error if - * it is ever used. Then return AE_OK. - */ - ACPI_EXCEPTION ((AE_INFO, Status, - "During address validation of OpRegion [%4.4s]", Node->Name.Ascii)); - ObjDesc->Common.Flags |= AOPOBJ_INVALID; - Status = AE_OK; - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsInitializeRegion - * - * PARAMETERS: ObjHandle - Region namespace node - * - * RETURN: Status - * - * DESCRIPTION: Front end to EvInitializeRegion - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsInitializeRegion ( - ACPI_HANDLE ObjHandle) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - - - ObjDesc = AcpiNsGetAttachedObject (ObjHandle); - - /* Namespace is NOT locked */ - - Status = AcpiEvInitializeRegion (ObjDesc, FALSE); - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsInitBufferField - * - * PARAMETERS: AmlOpcode - CreateXxxField - * ObjDesc - BufferField object - * BufferDesc - Host Buffer - * OffsetDesc - Offset into buffer - * LengthDesc - Length of field (CREATE_FIELD_OP only) - * ResultDesc - Where to store the result - * - * RETURN: Status - * - * DESCRIPTION: Perform actual initialization of a buffer field - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDsInitBufferField ( - UINT16 AmlOpcode, - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT *BufferDesc, - ACPI_OPERAND_OBJECT *OffsetDesc, - ACPI_OPERAND_OBJECT *LengthDesc, - ACPI_OPERAND_OBJECT *ResultDesc) -{ - UINT32 Offset; - UINT32 BitOffset; - UINT32 BitCount; - UINT8 FieldFlags; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE_PTR (DsInitBufferField, ObjDesc); - - - /* Host object must be a Buffer */ - - if (ACPI_GET_OBJECT_TYPE (BufferDesc) != ACPI_TYPE_BUFFER) - { - ACPI_ERROR ((AE_INFO, - "Target of Create Field is not a Buffer object - %s", - AcpiUtGetObjectTypeName (BufferDesc))); - - Status = AE_AML_OPERAND_TYPE; - goto Cleanup; - } - - /* - * The last parameter to all of these opcodes (ResultDesc) started - * out as a NameString, and should therefore now be a NS node - * after resolution in AcpiExResolveOperands(). - */ - if (ACPI_GET_DESCRIPTOR_TYPE (ResultDesc) != ACPI_DESC_TYPE_NAMED) - { - ACPI_ERROR ((AE_INFO, - "(%s) destination not a NS Node [%s]", - AcpiPsGetOpcodeName (AmlOpcode), - AcpiUtGetDescriptorName (ResultDesc))); - - Status = AE_AML_OPERAND_TYPE; - goto Cleanup; - } - - Offset = (UINT32) OffsetDesc->Integer.Value; - - /* - * Setup the Bit offsets and counts, according to the opcode - */ - switch (AmlOpcode) - { - case AML_CREATE_FIELD_OP: - - /* Offset is in bits, count is in bits */ - - FieldFlags = AML_FIELD_ACCESS_BYTE; - BitOffset = Offset; - BitCount = (UINT32) LengthDesc->Integer.Value; - - /* Must have a valid (>0) bit count */ - - if (BitCount == 0) - { - ACPI_ERROR ((AE_INFO, - "Attempt to CreateField of length zero")); - Status = AE_AML_OPERAND_VALUE; - goto Cleanup; - } - break; - - case AML_CREATE_BIT_FIELD_OP: - - /* Offset is in bits, Field is one bit */ - - BitOffset = Offset; - BitCount = 1; - FieldFlags = AML_FIELD_ACCESS_BYTE; - break; - - case AML_CREATE_BYTE_FIELD_OP: - - /* Offset is in bytes, field is one byte */ - - BitOffset = 8 * Offset; - BitCount = 8; - FieldFlags = AML_FIELD_ACCESS_BYTE; - break; - - case AML_CREATE_WORD_FIELD_OP: - - /* Offset is in bytes, field is one word */ - - BitOffset = 8 * Offset; - BitCount = 16; - FieldFlags = AML_FIELD_ACCESS_WORD; - break; - - case AML_CREATE_DWORD_FIELD_OP: - - /* Offset is in bytes, field is one dword */ - - BitOffset = 8 * Offset; - BitCount = 32; - FieldFlags = AML_FIELD_ACCESS_DWORD; - break; - - case AML_CREATE_QWORD_FIELD_OP: - - /* Offset is in bytes, field is one qword */ - - BitOffset = 8 * Offset; - BitCount = 64; - FieldFlags = AML_FIELD_ACCESS_QWORD; - break; - - default: - - ACPI_ERROR ((AE_INFO, - "Unknown field creation opcode %02x", - AmlOpcode)); - Status = AE_AML_BAD_OPCODE; - goto Cleanup; - } - - /* Entire field must fit within the current length of the buffer */ - - if ((BitOffset + BitCount) > - (8 * (UINT32) BufferDesc->Buffer.Length)) - { - ACPI_ERROR ((AE_INFO, - "Field [%4.4s] at %d exceeds Buffer [%4.4s] size %d (bits)", - AcpiUtGetNodeName (ResultDesc), - BitOffset + BitCount, - AcpiUtGetNodeName (BufferDesc->Buffer.Node), - 8 * (UINT32) BufferDesc->Buffer.Length)); - Status = AE_AML_BUFFER_LIMIT; - goto Cleanup; - } - - /* - * Initialize areas of the field object that are common to all fields - * For FieldFlags, use LOCK_RULE = 0 (NO_LOCK), - * UPDATE_RULE = 0 (UPDATE_PRESERVE) - */ - Status = AcpiExPrepCommonFieldObject (ObjDesc, FieldFlags, 0, - BitOffset, BitCount); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - ObjDesc->BufferField.BufferObj = BufferDesc; - - /* Reference count for BufferDesc inherits ObjDesc count */ - - BufferDesc->Common.ReferenceCount = (UINT16) - (BufferDesc->Common.ReferenceCount + ObjDesc->Common.ReferenceCount); - - -Cleanup: - - /* Always delete the operands */ - - AcpiUtRemoveReference (OffsetDesc); - AcpiUtRemoveReference (BufferDesc); - - if (AmlOpcode == AML_CREATE_FIELD_OP) - { - AcpiUtRemoveReference (LengthDesc); - } - - /* On failure, delete the result descriptor */ - - if (ACPI_FAILURE (Status)) - { - AcpiUtRemoveReference (ResultDesc); /* Result descriptor */ - } - else - { - /* Now the address and length are valid for this BufferField */ - - ObjDesc->BufferField.Flags |= AOPOBJ_DATA_VALID; - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsEvalBufferFieldOperands - * - * PARAMETERS: WalkState - Current walk - * Op - A valid BufferField Op object - * - * RETURN: Status - * - * DESCRIPTION: Get BufferField Buffer and Index - * Called from AcpiDsExecEndOp during BufferField parse tree walk - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsEvalBufferFieldOperands ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_NAMESPACE_NODE *Node; - ACPI_PARSE_OBJECT *NextOp; - - - ACPI_FUNCTION_TRACE_PTR (DsEvalBufferFieldOperands, Op); - - - /* - * This is where we evaluate the address and length fields of the - * CreateXxxField declaration - */ - Node = Op->Common.Node; - - /* NextOp points to the op that holds the Buffer */ - - NextOp = Op->Common.Value.Arg; - - /* Evaluate/create the address and length operands */ - - Status = AcpiDsCreateOperands (WalkState, NextOp); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - ObjDesc = AcpiNsGetAttachedObject (Node); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NOT_EXIST); - } - - /* Resolve the operands */ - - Status = AcpiExResolveOperands (Op->Common.AmlOpcode, - ACPI_WALK_OPERANDS, WalkState); - - ACPI_DUMP_OPERANDS (ACPI_WALK_OPERANDS, ACPI_IMODE_EXECUTE, - AcpiPsGetOpcodeName (Op->Common.AmlOpcode), - WalkState->NumOperands, "after AcpiExResolveOperands"); - - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR ((AE_INFO, "(%s) bad operand(s) (%X)", - AcpiPsGetOpcodeName (Op->Common.AmlOpcode), Status)); - - return_ACPI_STATUS (Status); - } - - /* Initialize the Buffer Field */ - - if (Op->Common.AmlOpcode == AML_CREATE_FIELD_OP) - { - /* NOTE: Slightly different operands for this opcode */ - - Status = AcpiDsInitBufferField (Op->Common.AmlOpcode, ObjDesc, - WalkState->Operands[0], WalkState->Operands[1], - WalkState->Operands[2], WalkState->Operands[3]); - } - else - { - /* All other, CreateXxxField opcodes */ - - Status = AcpiDsInitBufferField (Op->Common.AmlOpcode, ObjDesc, - WalkState->Operands[0], WalkState->Operands[1], - NULL, WalkState->Operands[2]); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsEvalRegionOperands - * - * PARAMETERS: WalkState - Current walk - * Op - A valid region Op object - * - * RETURN: Status - * - * DESCRIPTION: Get region address and length - * Called from AcpiDsExecEndOp during OpRegion parse tree walk - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsEvalRegionOperands ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *OperandDesc; - ACPI_NAMESPACE_NODE *Node; - ACPI_PARSE_OBJECT *NextOp; - - - ACPI_FUNCTION_TRACE_PTR (DsEvalRegionOperands, Op); - - - /* - * This is where we evaluate the address and length fields of the - * OpRegion declaration - */ - Node = Op->Common.Node; - - /* NextOp points to the op that holds the SpaceID */ - - NextOp = Op->Common.Value.Arg; - - /* NextOp points to address op */ - - NextOp = NextOp->Common.Next; - - /* Evaluate/create the address and length operands */ - - Status = AcpiDsCreateOperands (WalkState, NextOp); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Resolve the length and address operands to numbers */ - - Status = AcpiExResolveOperands (Op->Common.AmlOpcode, - ACPI_WALK_OPERANDS, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - ACPI_DUMP_OPERANDS (ACPI_WALK_OPERANDS, ACPI_IMODE_EXECUTE, - AcpiPsGetOpcodeName (Op->Common.AmlOpcode), - 1, "after AcpiExResolveOperands"); - - ObjDesc = AcpiNsGetAttachedObject (Node); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NOT_EXIST); - } - - /* - * Get the length operand and save it - * (at Top of stack) - */ - OperandDesc = WalkState->Operands[WalkState->NumOperands - 1]; - - ObjDesc->Region.Length = (UINT32) OperandDesc->Integer.Value; - AcpiUtRemoveReference (OperandDesc); - - /* - * Get the address and save it - * (at top of stack - 1) - */ - OperandDesc = WalkState->Operands[WalkState->NumOperands - 2]; - - ObjDesc->Region.Address = (ACPI_PHYSICAL_ADDRESS) - OperandDesc->Integer.Value; - AcpiUtRemoveReference (OperandDesc); - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "RgnObj %p Addr %8.8X%8.8X Len %X\n", - ObjDesc, - ACPI_FORMAT_UINT64 (ObjDesc->Region.Address), - ObjDesc->Region.Length)); - - /* Now the address and length are valid for this opregion */ - - ObjDesc->Region.Flags |= AOPOBJ_DATA_VALID; - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsEvalDataObjectOperands - * - * PARAMETERS: WalkState - Current walk - * Op - A valid DataObject Op object - * ObjDesc - DataObject - * - * RETURN: Status - * - * DESCRIPTION: Get the operands and complete the following data object types: - * Buffer, Package. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsEvalDataObjectOperands ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - ACPI_OPERAND_OBJECT *ObjDesc) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *ArgDesc; - UINT32 Length; - - - ACPI_FUNCTION_TRACE (DsEvalDataObjectOperands); - - - /* The first operand (for all of these data objects) is the length */ - - Status = AcpiDsCreateOperand (WalkState, Op->Common.Value.Arg, 1); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - Status = AcpiExResolveOperands (WalkState->Opcode, - &(WalkState->Operands [WalkState->NumOperands -1]), - WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Extract length operand */ - - ArgDesc = WalkState->Operands [WalkState->NumOperands - 1]; - Length = (UINT32) ArgDesc->Integer.Value; - - /* Cleanup for length operand */ - - Status = AcpiDsObjStackPop (1, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - AcpiUtRemoveReference (ArgDesc); - - /* - * Create the actual data object - */ - switch (Op->Common.AmlOpcode) - { - case AML_BUFFER_OP: - - Status = AcpiDsBuildInternalBufferObj (WalkState, Op, Length, &ObjDesc); - break; - - case AML_PACKAGE_OP: - case AML_VAR_PACKAGE_OP: - - Status = AcpiDsBuildInternalPackageObj (WalkState, Op, Length, &ObjDesc); - break; - - default: - return_ACPI_STATUS (AE_AML_BAD_OPCODE); - } - - if (ACPI_SUCCESS (Status)) - { - /* - * Return the object in the WalkState, unless the parent is a package - - * in this case, the return object will be stored in the parse tree - * for the package. - */ - if ((!Op->Common.Parent) || - ((Op->Common.Parent->Common.AmlOpcode != AML_PACKAGE_OP) && - (Op->Common.Parent->Common.AmlOpcode != AML_VAR_PACKAGE_OP) && - (Op->Common.Parent->Common.AmlOpcode != AML_NAME_OP))) - { - WalkState->ResultObj = ObjDesc; - } - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsExecBeginControlOp - * - * PARAMETERS: WalkList - The list that owns the walk stack - * Op - The control Op - * - * RETURN: Status - * - * DESCRIPTION: Handles all control ops encountered during control method - * execution. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsExecBeginControlOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_STATUS Status = AE_OK; - ACPI_GENERIC_STATE *ControlState; - - - ACPI_FUNCTION_NAME (DsExecBeginControlOp); - - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p Opcode=%2.2X State=%p\n", Op, - Op->Common.AmlOpcode, WalkState)); - - switch (Op->Common.AmlOpcode) - { - case AML_IF_OP: - case AML_WHILE_OP: - - /* - * IF/WHILE: Create a new control state to manage these - * constructs. We need to manage these as a stack, in order - * to handle nesting. - */ - ControlState = AcpiUtCreateControlState (); - if (!ControlState) - { - Status = AE_NO_MEMORY; - break; - } - /* - * Save a pointer to the predicate for multiple executions - * of a loop - */ - ControlState->Control.AmlPredicateStart = WalkState->ParserState.Aml - 1; - ControlState->Control.PackageEnd = WalkState->ParserState.PkgEnd; - ControlState->Control.Opcode = Op->Common.AmlOpcode; - - - /* Push the control state on this walk's control stack */ - - AcpiUtPushGenericState (&WalkState->ControlState, ControlState); - break; - - case AML_ELSE_OP: - - /* Predicate is in the state object */ - /* If predicate is true, the IF was executed, ignore ELSE part */ - - if (WalkState->LastPredicate) - { - Status = AE_CTRL_TRUE; - } - - break; - - case AML_RETURN_OP: - - break; - - default: - break; - } - - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsExecEndControlOp - * - * PARAMETERS: WalkList - The list that owns the walk stack - * Op - The control Op - * - * RETURN: Status - * - * DESCRIPTION: Handles all control ops encountered during control method - * execution. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsExecEndControlOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_STATUS Status = AE_OK; - ACPI_GENERIC_STATE *ControlState; - - - ACPI_FUNCTION_NAME (DsExecEndControlOp); - - - switch (Op->Common.AmlOpcode) - { - case AML_IF_OP: - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[IF_OP] Op=%p\n", Op)); - - /* - * Save the result of the predicate in case there is an - * ELSE to come - */ - WalkState->LastPredicate = - (BOOLEAN) WalkState->ControlState->Common.Value; - - /* - * Pop the control state that was created at the start - * of the IF and free it - */ - ControlState = AcpiUtPopGenericState (&WalkState->ControlState); - AcpiUtDeleteGenericState (ControlState); - break; - - - case AML_ELSE_OP: - - break; - - - case AML_WHILE_OP: - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[WHILE_OP] Op=%p\n", Op)); - - if (WalkState->ControlState->Common.Value) - { - /* Predicate was true, go back and evaluate it again! */ - - Status = AE_CTRL_PENDING; - } - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "[WHILE_OP] termination! Op=%p\n",Op)); - - /* Pop this control state and free it */ - - ControlState = AcpiUtPopGenericState (&WalkState->ControlState); - - WalkState->AmlLastWhile = ControlState->Control.AmlPredicateStart; - AcpiUtDeleteGenericState (ControlState); - break; - - - case AML_RETURN_OP: - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "[RETURN_OP] Op=%p Arg=%p\n",Op, Op->Common.Value.Arg)); - - /* - * One optional operand -- the return value - * It can be either an immediate operand or a result that - * has been bubbled up the tree - */ - if (Op->Common.Value.Arg) - { - /* Since we have a real Return(), delete any implicit return */ - - AcpiDsClearImplicitReturn (WalkState); - - /* Return statement has an immediate operand */ - - Status = AcpiDsCreateOperands (WalkState, Op->Common.Value.Arg); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* - * If value being returned is a Reference (such as - * an arg or local), resolve it now because it may - * cease to exist at the end of the method. - */ - Status = AcpiExResolveToValue (&WalkState->Operands [0], WalkState); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* - * Get the return value and save as the last result - * value. This is the only place where WalkState->ReturnDesc - * is set to anything other than zero! - */ - WalkState->ReturnDesc = WalkState->Operands[0]; - } - else if ((WalkState->Results) && - (WalkState->Results->Results.NumResults > 0)) - { - /* Since we have a real Return(), delete any implicit return */ - - AcpiDsClearImplicitReturn (WalkState); - - /* - * The return value has come from a previous calculation. - * - * If value being returned is a Reference (such as - * an arg or local), resolve it now because it may - * cease to exist at the end of the method. - * - * Allow references created by the Index operator to return unchanged. - */ - if ((ACPI_GET_DESCRIPTOR_TYPE (WalkState->Results->Results.ObjDesc[0]) == ACPI_DESC_TYPE_OPERAND) && - (ACPI_GET_OBJECT_TYPE (WalkState->Results->Results.ObjDesc [0]) == ACPI_TYPE_LOCAL_REFERENCE) && - ((WalkState->Results->Results.ObjDesc [0])->Reference.Opcode != AML_INDEX_OP)) - { - Status = AcpiExResolveToValue (&WalkState->Results->Results.ObjDesc [0], WalkState); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - } - - WalkState->ReturnDesc = WalkState->Results->Results.ObjDesc [0]; - } - else - { - /* No return operand */ - - if (WalkState->NumOperands) - { - AcpiUtRemoveReference (WalkState->Operands [0]); - } - - WalkState->Operands [0] = NULL; - WalkState->NumOperands = 0; - WalkState->ReturnDesc = NULL; - } - - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "Completed RETURN_OP State=%p, RetVal=%p\n", - WalkState, WalkState->ReturnDesc)); - - /* End the control method execution right now */ - - Status = AE_CTRL_TERMINATE; - break; - - - case AML_NOOP_OP: - - /* Just do nothing! */ - break; - - - case AML_BREAK_POINT_OP: - - /* Call up to the OS service layer to handle this */ - - Status = AcpiOsSignal (ACPI_SIGNAL_BREAKPOINT, "Executed AML Breakpoint opcode"); - - /* If and when it returns, all done. */ - - break; - - - case AML_BREAK_OP: - case AML_CONTINUE_OP: /* ACPI 2.0 */ - - - /* Pop and delete control states until we find a while */ - - while (WalkState->ControlState && - (WalkState->ControlState->Control.Opcode != AML_WHILE_OP)) - { - ControlState = AcpiUtPopGenericState (&WalkState->ControlState); - AcpiUtDeleteGenericState (ControlState); - } - - /* No while found? */ - - if (!WalkState->ControlState) - { - return (AE_AML_NO_WHILE); - } - - /* Was: WalkState->AmlLastWhile = WalkState->ControlState->Control.AmlPredicateStart; */ - - WalkState->AmlLastWhile = WalkState->ControlState->Control.PackageEnd; - - /* Return status depending on opcode */ - - if (Op->Common.AmlOpcode == AML_BREAK_OP) - { - Status = AE_CTRL_BREAK; - } - else - { - Status = AE_CTRL_CONTINUE; - } - break; - - - default: - - ACPI_ERROR ((AE_INFO, "Unknown control opcode=%X Op=%p", - Op->Common.AmlOpcode, Op)); - - Status = AE_AML_BAD_OPCODE; - break; - } - - return (Status); -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsutils.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsutils.c deleted file mode 100644 index 496df6767b..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dsutils.c +++ /dev/null @@ -1,868 +0,0 @@ -/******************************************************************************* - * - * Module Name: dsutils - Dispatcher utilities - * $Revision: 1.121 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __DSUTILS_C__ - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" -#include "acdispat.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "acdebug.h" - -#define _COMPONENT ACPI_DISPATCHER - ACPI_MODULE_NAME ("dsutils") - - -/******************************************************************************* - * - * FUNCTION: AcpiDsClearImplicitReturn - * - * PARAMETERS: WalkState - Current State - * - * RETURN: None. - * - * DESCRIPTION: Clear and remove a reference on an implicit return value. Used - * to delete "stale" return values (if enabled, the return value - * from every operator is saved at least momentarily, in case the - * parent method exits.) - * - ******************************************************************************/ - -void -AcpiDsClearImplicitReturn ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_FUNCTION_NAME (DsClearImplicitReturn); - - - /* - * Slack must be enabled for this feature - */ - if (!AcpiGbl_EnableInterpreterSlack) - { - return; - } - - if (WalkState->ImplicitReturnObj) - { - /* - * Delete any "stale" implicit return. However, in - * complex statements, the implicit return value can be - * bubbled up several levels. - */ - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "Removing reference on stale implicit return obj %p\n", - WalkState->ImplicitReturnObj)); - - AcpiUtRemoveReference (WalkState->ImplicitReturnObj); - WalkState->ImplicitReturnObj = NULL; - } -} - - -#ifndef ACPI_NO_METHOD_EXECUTION -/******************************************************************************* - * - * FUNCTION: AcpiDsDoImplicitReturn - * - * PARAMETERS: ReturnDesc - The return value - * WalkState - Current State - * AddReference - True if a reference should be added to the - * return object - * - * RETURN: TRUE if implicit return enabled, FALSE otherwise - * - * DESCRIPTION: Implements the optional "implicit return". We save the result - * of every ASL operator and control method invocation in case the - * parent method exit. Before storing a new return value, we - * delete the previous return value. - * - ******************************************************************************/ - -BOOLEAN -AcpiDsDoImplicitReturn ( - ACPI_OPERAND_OBJECT *ReturnDesc, - ACPI_WALK_STATE *WalkState, - BOOLEAN AddReference) -{ - ACPI_FUNCTION_NAME (DsDoImplicitReturn); - - - /* - * Slack must be enabled for this feature, and we must - * have a valid return object - */ - if ((!AcpiGbl_EnableInterpreterSlack) || - (!ReturnDesc)) - { - return (FALSE); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "Result %p will be implicitly returned; Prev=%p\n", - ReturnDesc, - WalkState->ImplicitReturnObj)); - - /* - * Delete any "stale" implicit return value first. However, in - * complex statements, the implicit return value can be - * bubbled up several levels, so we don't clear the value if it - * is the same as the ReturnDesc. - */ - if (WalkState->ImplicitReturnObj) - { - if (WalkState->ImplicitReturnObj == ReturnDesc) - { - return (TRUE); - } - AcpiDsClearImplicitReturn (WalkState); - } - - /* Save the implicit return value, add a reference if requested */ - - WalkState->ImplicitReturnObj = ReturnDesc; - if (AddReference) - { - AcpiUtAddReference (ReturnDesc); - } - - return (TRUE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsIsResultUsed - * - * PARAMETERS: Op - Current Op - * WalkState - Current State - * - * RETURN: TRUE if result is used, FALSE otherwise - * - * DESCRIPTION: Check if a result object will be used by the parent - * - ******************************************************************************/ - -BOOLEAN -AcpiDsIsResultUsed ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState) -{ - const ACPI_OPCODE_INFO *ParentInfo; - - ACPI_FUNCTION_TRACE_PTR (DsIsResultUsed, Op); - - - /* Must have both an Op and a Result Object */ - - if (!Op) - { - ACPI_ERROR ((AE_INFO, "Null Op")); - return_UINT8 (TRUE); - } - - /* - * We know that this operator is not a - * Return() operator (would not come here.) The following code is the - * optional support for a so-called "implicit return". Some AML code - * assumes that the last value of the method is "implicitly" returned - * to the caller. Just save the last result as the return value. - * NOTE: this is optional because the ASL language does not actually - * support this behavior. - */ - (void) AcpiDsDoImplicitReturn (WalkState->ResultObj, WalkState, TRUE); - - /* - * Now determine if the parent will use the result - * - * If there is no parent, or the parent is a ScopeOp, we are executing - * at the method level. An executing method typically has no parent, - * since each method is parsed separately. A method invoked externally - * via ExecuteControlMethod has a ScopeOp as the parent. - */ - if ((!Op->Common.Parent) || - (Op->Common.Parent->Common.AmlOpcode == AML_SCOPE_OP)) - { - /* No parent, the return value cannot possibly be used */ - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "At Method level, result of [%s] not used\n", - AcpiPsGetOpcodeName (Op->Common.AmlOpcode))); - return_UINT8 (FALSE); - } - - /* Get info on the parent. The RootOp is AML_SCOPE */ - - ParentInfo = AcpiPsGetOpcodeInfo (Op->Common.Parent->Common.AmlOpcode); - if (ParentInfo->Class == AML_CLASS_UNKNOWN) - { - ACPI_ERROR ((AE_INFO, - "Unknown parent opcode Op=%p", Op)); - return_UINT8 (FALSE); - } - - /* - * Decide what to do with the result based on the parent. If - * the parent opcode will not use the result, delete the object. - * Otherwise leave it as is, it will be deleted when it is used - * as an operand later. - */ - switch (ParentInfo->Class) - { - case AML_CLASS_CONTROL: - - switch (Op->Common.Parent->Common.AmlOpcode) - { - case AML_RETURN_OP: - - /* Never delete the return value associated with a return opcode */ - - goto ResultUsed; - - case AML_IF_OP: - case AML_WHILE_OP: - - /* - * If we are executing the predicate AND this is the predicate op, - * we will use the return value - */ - if ((WalkState->ControlState->Common.State == ACPI_CONTROL_PREDICATE_EXECUTING) && - (WalkState->ControlState->Control.PredicateOp == Op)) - { - goto ResultUsed; - } - break; - - default: - /* Ignore other control opcodes */ - break; - } - - /* The general control opcode returns no result */ - - goto ResultNotUsed; - - - case AML_CLASS_CREATE: - - /* - * These opcodes allow TermArg(s) as operands and therefore - * the operands can be method calls. The result is used. - */ - goto ResultUsed; - - - case AML_CLASS_NAMED_OBJECT: - - if ((Op->Common.Parent->Common.AmlOpcode == AML_REGION_OP) || - (Op->Common.Parent->Common.AmlOpcode == AML_DATA_REGION_OP) || - (Op->Common.Parent->Common.AmlOpcode == AML_PACKAGE_OP) || - (Op->Common.Parent->Common.AmlOpcode == AML_VAR_PACKAGE_OP) || - (Op->Common.Parent->Common.AmlOpcode == AML_BUFFER_OP) || - (Op->Common.Parent->Common.AmlOpcode == AML_INT_EVAL_SUBTREE_OP)) - { - /* - * These opcodes allow TermArg(s) as operands and therefore - * the operands can be method calls. The result is used. - */ - goto ResultUsed; - } - - goto ResultNotUsed; - - - default: - - /* - * In all other cases. the parent will actually use the return - * object, so keep it. - */ - goto ResultUsed; - } - - -ResultUsed: - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "Result of [%s] used by Parent [%s] Op=%p\n", - AcpiPsGetOpcodeName (Op->Common.AmlOpcode), - AcpiPsGetOpcodeName (Op->Common.Parent->Common.AmlOpcode), Op)); - - return_UINT8 (TRUE); - - -ResultNotUsed: - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "Result of [%s] not used by Parent [%s] Op=%p\n", - AcpiPsGetOpcodeName (Op->Common.AmlOpcode), - AcpiPsGetOpcodeName (Op->Common.Parent->Common.AmlOpcode), Op)); - - return_UINT8 (FALSE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsDeleteResultIfNotUsed - * - * PARAMETERS: Op - Current parse Op - * ResultObj - Result of the operation - * WalkState - Current state - * - * RETURN: Status - * - * DESCRIPTION: Used after interpretation of an opcode. If there is an internal - * result descriptor, check if the parent opcode will actually use - * this result. If not, delete the result now so that it will - * not become orphaned. - * - ******************************************************************************/ - -void -AcpiDsDeleteResultIfNotUsed ( - ACPI_PARSE_OBJECT *Op, - ACPI_OPERAND_OBJECT *ResultObj, - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE_PTR (DsDeleteResultIfNotUsed, ResultObj); - - - if (!Op) - { - ACPI_ERROR ((AE_INFO, "Null Op")); - return_VOID; - } - - if (!ResultObj) - { - return_VOID; - } - - if (!AcpiDsIsResultUsed (Op, WalkState)) - { - /* Must pop the result stack (ObjDesc should be equal to ResultObj) */ - - Status = AcpiDsResultPop (&ObjDesc, WalkState); - if (ACPI_SUCCESS (Status)) - { - AcpiUtRemoveReference (ResultObj); - } - } - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsResolveOperands - * - * PARAMETERS: WalkState - Current walk state with operands on stack - * - * RETURN: Status - * - * DESCRIPTION: Resolve all operands to their values. Used to prepare - * arguments to a control method invocation (a call from one - * method to another.) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsResolveOperands ( - ACPI_WALK_STATE *WalkState) -{ - UINT32 i; - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE_PTR (DsResolveOperands, WalkState); - - - /* - * Attempt to resolve each of the valid operands - * Method arguments are passed by reference, not by value. This means - * that the actual objects are passed, not copies of the objects. - */ - for (i = 0; i < WalkState->NumOperands; i++) - { - Status = AcpiExResolveToValue (&WalkState->Operands[i], WalkState); - if (ACPI_FAILURE (Status)) - { - break; - } - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsClearOperands - * - * PARAMETERS: WalkState - Current walk state with operands on stack - * - * RETURN: None - * - * DESCRIPTION: Clear all operands on the current walk state operand stack. - * - ******************************************************************************/ - -void -AcpiDsClearOperands ( - ACPI_WALK_STATE *WalkState) -{ - UINT32 i; - - - ACPI_FUNCTION_TRACE_PTR (DsClearOperands, WalkState); - - - /* Remove a reference on each operand on the stack */ - - for (i = 0; i < WalkState->NumOperands; i++) - { - /* - * Remove a reference to all operands, including both - * "Arguments" and "Targets". - */ - AcpiUtRemoveReference (WalkState->Operands[i]); - WalkState->Operands[i] = NULL; - } - - WalkState->NumOperands = 0; - return_VOID; -} -#endif - - -/******************************************************************************* - * - * FUNCTION: AcpiDsCreateOperand - * - * PARAMETERS: WalkState - Current walk state - * Arg - Parse object for the argument - * ArgIndex - Which argument (zero based) - * - * RETURN: Status - * - * DESCRIPTION: Translate a parse tree object that is an argument to an AML - * opcode to the equivalent interpreter object. This may include - * looking up a name or entering a new name into the internal - * namespace. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsCreateOperand ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Arg, - UINT32 ArgIndex) -{ - ACPI_STATUS Status = AE_OK; - char *NameString; - UINT32 NameLength; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_PARSE_OBJECT *ParentOp; - UINT16 Opcode; - ACPI_INTERPRETER_MODE InterpreterMode; - const ACPI_OPCODE_INFO *OpInfo; - - - ACPI_FUNCTION_TRACE_PTR (DsCreateOperand, Arg); - - - /* A valid name must be looked up in the namespace */ - - if ((Arg->Common.AmlOpcode == AML_INT_NAMEPATH_OP) && - (Arg->Common.Value.String)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Getting a name: Arg=%p\n", Arg)); - - /* Get the entire name string from the AML stream */ - - Status = AcpiExGetNameString (ACPI_TYPE_ANY, Arg->Common.Value.Buffer, - &NameString, &NameLength); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* All prefixes have been handled, and the name is in NameString */ - - /* - * Special handling for BufferField declarations. This is a deferred - * opcode that unfortunately defines the field name as the last - * parameter instead of the first. We get here when we are performing - * the deferred execution, so the actual name of the field is already - * in the namespace. We don't want to attempt to look it up again - * because we may be executing in a different scope than where the - * actual opcode exists. - */ - if ((WalkState->DeferredNode) && - (WalkState->DeferredNode->Type == ACPI_TYPE_BUFFER_FIELD) && - (ArgIndex == (UINT32) ((WalkState->Opcode == AML_CREATE_FIELD_OP) ? 3 : 2))) - { - ObjDesc = ACPI_CAST_PTR ( - ACPI_OPERAND_OBJECT, WalkState->DeferredNode); - Status = AE_OK; - } - else /* All other opcodes */ - { - /* - * Differentiate between a namespace "create" operation - * versus a "lookup" operation (IMODE_LOAD_PASS2 vs. - * IMODE_EXECUTE) in order to support the creation of - * namespace objects during the execution of control methods. - */ - ParentOp = Arg->Common.Parent; - OpInfo = AcpiPsGetOpcodeInfo (ParentOp->Common.AmlOpcode); - if ((OpInfo->Flags & AML_NSNODE) && - (ParentOp->Common.AmlOpcode != AML_INT_METHODCALL_OP) && - (ParentOp->Common.AmlOpcode != AML_REGION_OP) && - (ParentOp->Common.AmlOpcode != AML_INT_NAMEPATH_OP)) - { - /* Enter name into namespace if not found */ - - InterpreterMode = ACPI_IMODE_LOAD_PASS2; - } - else - { - /* Return a failure if name not found */ - - InterpreterMode = ACPI_IMODE_EXECUTE; - } - - Status = AcpiNsLookup (WalkState->ScopeInfo, NameString, - ACPI_TYPE_ANY, InterpreterMode, - ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, - WalkState, - ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &ObjDesc)); - /* - * The only case where we pass through (ignore) a NOT_FOUND - * error is for the CondRefOf opcode. - */ - if (Status == AE_NOT_FOUND) - { - if (ParentOp->Common.AmlOpcode == AML_COND_REF_OF_OP) - { - /* - * For the Conditional Reference op, it's OK if - * the name is not found; We just need a way to - * indicate this to the interpreter, set the - * object to the root - */ - ObjDesc = ACPI_CAST_PTR ( - ACPI_OPERAND_OBJECT, AcpiGbl_RootNode); - Status = AE_OK; - } - else - { - /* - * We just plain didn't find it -- which is a - * very serious error at this point - */ - Status = AE_AML_NAME_NOT_FOUND; - } - } - - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR_NAMESPACE (NameString, Status); - } - } - - /* Free the namestring created above */ - - ACPI_FREE (NameString); - - /* Check status from the lookup */ - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Put the resulting object onto the current object stack */ - - Status = AcpiDsObjStackPush (ObjDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - ACPI_DEBUGGER_EXEC (AcpiDbDisplayArgumentObject (ObjDesc, WalkState)); - } - else - { - /* Check for null name case */ - - if (Arg->Common.AmlOpcode == AML_INT_NAMEPATH_OP) - { - /* - * If the name is null, this means that this is an - * optional result parameter that was not specified - * in the original ASL. Create a Zero Constant for a - * placeholder. (Store to a constant is a Noop.) - */ - Opcode = AML_ZERO_OP; /* Has no arguments! */ - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "Null namepath: Arg=%p\n", Arg)); - } - else - { - Opcode = Arg->Common.AmlOpcode; - } - - /* Get the object type of the argument */ - - OpInfo = AcpiPsGetOpcodeInfo (Opcode); - if (OpInfo->ObjectType == ACPI_TYPE_INVALID) - { - return_ACPI_STATUS (AE_NOT_IMPLEMENTED); - } - - if (OpInfo->Flags & AML_HAS_RETVAL) - { - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "Argument previously created, already stacked\n")); - - ACPI_DEBUGGER_EXEC (AcpiDbDisplayArgumentObject ( - WalkState->Operands [WalkState->NumOperands - 1], WalkState)); - - /* - * Use value that was already previously returned - * by the evaluation of this argument - */ - Status = AcpiDsResultPopFromBottom (&ObjDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - /* - * Only error is underflow, and this indicates - * a missing or null operand! - */ - ACPI_EXCEPTION ((AE_INFO, Status, - "Missing or null operand")); - return_ACPI_STATUS (Status); - } - } - else - { - /* Create an ACPI_INTERNAL_OBJECT for the argument */ - - ObjDesc = AcpiUtCreateInternalObject (OpInfo->ObjectType); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Initialize the new object */ - - Status = AcpiDsInitObjectFromOp ( - WalkState, Arg, Opcode, &ObjDesc); - if (ACPI_FAILURE (Status)) - { - AcpiUtDeleteObjectDesc (ObjDesc); - return_ACPI_STATUS (Status); - } - } - - /* Put the operand object on the object stack */ - - Status = AcpiDsObjStackPush (ObjDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - ACPI_DEBUGGER_EXEC (AcpiDbDisplayArgumentObject (ObjDesc, WalkState)); - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsCreateOperands - * - * PARAMETERS: WalkState - Current state - * FirstArg - First argument of a parser argument tree - * - * RETURN: Status - * - * DESCRIPTION: Convert an operator's arguments from a parse tree format to - * namespace objects and place those argument object on the object - * stack in preparation for evaluation by the interpreter. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsCreateOperands ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *FirstArg) -{ - ACPI_STATUS Status = AE_OK; - ACPI_PARSE_OBJECT *Arg; - UINT32 ArgCount = 0; - - - ACPI_FUNCTION_TRACE_PTR (DsCreateOperands, FirstArg); - - - /* For all arguments in the list... */ - - Arg = FirstArg; - while (Arg) - { - Status = AcpiDsCreateOperand (WalkState, Arg, ArgCount); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Arg #%d (%p) done, Arg1=%p\n", - ArgCount, Arg, FirstArg)); - - /* Move on to next argument, if any */ - - Arg = Arg->Common.Next; - ArgCount++; - } - - return_ACPI_STATUS (Status); - - -Cleanup: - /* - * We must undo everything done above; meaning that we must - * pop everything off of the operand stack and delete those - * objects - */ - (void) AcpiDsObjStackPopAndDelete (ArgCount, WalkState); - - ACPI_EXCEPTION ((AE_INFO, Status, "While creating Arg %d", - (ArgCount + 1))); - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dswexec.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dswexec.c deleted file mode 100644 index 7f87d6edfe..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dswexec.c +++ /dev/null @@ -1,872 +0,0 @@ -/****************************************************************************** - * - * Module Name: dswexec - Dispatcher method execution callbacks; - * dispatch to interpreter. - * $Revision: 1.131 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __DSWEXEC_C__ - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" -#include "acdispat.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "acdebug.h" - - -#define _COMPONENT ACPI_DISPATCHER - ACPI_MODULE_NAME ("dswexec") - -/* - * Dispatch table for opcode classes - */ -static ACPI_EXECUTE_OP AcpiGbl_OpTypeDispatch [] = -{ - AcpiExOpcode_0A_0T_1R, - AcpiExOpcode_1A_0T_0R, - AcpiExOpcode_1A_0T_1R, - AcpiExOpcode_1A_1T_0R, - AcpiExOpcode_1A_1T_1R, - AcpiExOpcode_2A_0T_0R, - AcpiExOpcode_2A_0T_1R, - AcpiExOpcode_2A_1T_1R, - AcpiExOpcode_2A_2T_1R, - AcpiExOpcode_3A_0T_0R, - AcpiExOpcode_3A_1T_1R, - AcpiExOpcode_6A_0T_1R -}; - - -/***************************************************************************** - * - * FUNCTION: AcpiDsGetPredicateValue - * - * PARAMETERS: WalkState - Current state of the parse tree walk - * ResultObj - if non-zero, pop result from result stack - * - * RETURN: Status - * - * DESCRIPTION: Get the result of a predicate evaluation - * - ****************************************************************************/ - -ACPI_STATUS -AcpiDsGetPredicateValue ( - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT *ResultObj) -{ - ACPI_STATUS Status = AE_OK; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *LocalObjDesc = NULL; - - - ACPI_FUNCTION_TRACE_PTR (DsGetPredicateValue, WalkState); - - - WalkState->ControlState->Common.State = 0; - - if (ResultObj) - { - Status = AcpiDsResultPop (&ObjDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Could not get result from predicate evaluation")); - - return_ACPI_STATUS (Status); - } - } - else - { - Status = AcpiDsCreateOperand (WalkState, WalkState->Op, 0); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - Status = AcpiExResolveToValue (&WalkState->Operands [0], WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - ObjDesc = WalkState->Operands [0]; - } - - if (!ObjDesc) - { - ACPI_ERROR ((AE_INFO, - "No predicate ObjDesc=%p State=%p", - ObjDesc, WalkState)); - - return_ACPI_STATUS (AE_AML_NO_OPERAND); - } - - /* - * Result of predicate evaluation must be an Integer - * object. Implicitly convert the argument if necessary. - */ - Status = AcpiExConvertToInteger (ObjDesc, &LocalObjDesc, 16); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - if (ACPI_GET_OBJECT_TYPE (LocalObjDesc) != ACPI_TYPE_INTEGER) - { - ACPI_ERROR ((AE_INFO, - "Bad predicate (not an integer) ObjDesc=%p State=%p Type=%X", - ObjDesc, WalkState, ACPI_GET_OBJECT_TYPE (ObjDesc))); - - Status = AE_AML_OPERAND_TYPE; - goto Cleanup; - } - - /* Truncate the predicate to 32-bits if necessary */ - - AcpiExTruncateFor32bitTable (LocalObjDesc); - - /* - * Save the result of the predicate evaluation on - * the control stack - */ - if (LocalObjDesc->Integer.Value) - { - WalkState->ControlState->Common.Value = TRUE; - } - else - { - /* - * Predicate is FALSE, we will just toss the - * rest of the package - */ - WalkState->ControlState->Common.Value = FALSE; - Status = AE_CTRL_FALSE; - } - - -Cleanup: - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Completed a predicate eval=%X Op=%p\n", - WalkState->ControlState->Common.Value, WalkState->Op)); - - /* Break to debugger to display result */ - - ACPI_DEBUGGER_EXEC (AcpiDbDisplayResultObject (LocalObjDesc, WalkState)); - - /* - * Delete the predicate result object (we know that - * we don't need it anymore) - */ - if (LocalObjDesc != ObjDesc) - { - AcpiUtRemoveReference (LocalObjDesc); - } - AcpiUtRemoveReference (ObjDesc); - - WalkState->ControlState->Common.State = ACPI_CONTROL_NORMAL; - return_ACPI_STATUS (Status); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiDsExecBeginOp - * - * PARAMETERS: WalkState - Current state of the parse tree walk - * OutOp - Where to return op if a new one is created - * - * RETURN: Status - * - * DESCRIPTION: Descending callback used during the execution of control - * methods. This is where most operators and operands are - * dispatched to the interpreter. - * - ****************************************************************************/ - -ACPI_STATUS -AcpiDsExecBeginOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT **OutOp) -{ - ACPI_PARSE_OBJECT *Op; - ACPI_STATUS Status = AE_OK; - UINT32 OpcodeClass; - - - ACPI_FUNCTION_TRACE_PTR (DsExecBeginOp, WalkState); - - - Op = WalkState->Op; - if (!Op) - { - Status = AcpiDsLoad2BeginOp (WalkState, OutOp); - if (ACPI_FAILURE (Status)) - { - goto ErrorExit; - } - - Op = *OutOp; - WalkState->Op = Op; - WalkState->Opcode = Op->Common.AmlOpcode; - WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - - if (AcpiNsOpensScope (WalkState->OpInfo->ObjectType)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "(%s) Popping scope for Op %p\n", - AcpiUtGetTypeName (WalkState->OpInfo->ObjectType), Op)); - - Status = AcpiDsScopeStackPop (WalkState); - if (ACPI_FAILURE (Status)) - { - goto ErrorExit; - } - } - } - - if (Op == WalkState->Origin) - { - if (OutOp) - { - *OutOp = Op; - } - - return_ACPI_STATUS (AE_OK); - } - - /* - * If the previous opcode was a conditional, this opcode - * must be the beginning of the associated predicate. - * Save this knowledge in the current scope descriptor - */ - if ((WalkState->ControlState) && - (WalkState->ControlState->Common.State == - ACPI_CONTROL_CONDITIONAL_EXECUTING)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Exec predicate Op=%p State=%p\n", - Op, WalkState)); - - WalkState->ControlState->Common.State = ACPI_CONTROL_PREDICATE_EXECUTING; - - /* Save start of predicate */ - - WalkState->ControlState->Control.PredicateOp = Op; - } - - - OpcodeClass = WalkState->OpInfo->Class; - - /* We want to send namepaths to the load code */ - - if (Op->Common.AmlOpcode == AML_INT_NAMEPATH_OP) - { - OpcodeClass = AML_CLASS_NAMED_OBJECT; - } - - /* - * Handle the opcode based upon the opcode type - */ - switch (OpcodeClass) - { - case AML_CLASS_CONTROL: - - Status = AcpiDsResultStackPush (WalkState); - if (ACPI_FAILURE (Status)) - { - goto ErrorExit; - } - - Status = AcpiDsExecBeginControlOp (WalkState, Op); - break; - - - case AML_CLASS_NAMED_OBJECT: - - if (WalkState->WalkType & ACPI_WALK_METHOD) - { - /* - * Found a named object declaration during method execution; - * we must enter this object into the namespace. The created - * object is temporary and will be deleted upon completion of - * the execution of this method. - */ - Status = AcpiDsLoad2BeginOp (WalkState, NULL); - } - - if (Op->Common.AmlOpcode == AML_REGION_OP) - { - Status = AcpiDsResultStackPush (WalkState); - } - break; - - - case AML_CLASS_EXECUTE: - case AML_CLASS_CREATE: - /* - * Most operators with arguments (except CreateXxxField operators) - * Start a new result/operand state - */ - if (WalkState->OpInfo->ObjectType != ACPI_TYPE_BUFFER_FIELD) - { - Status = AcpiDsResultStackPush (WalkState); - } - break; - - - default: - break; - } - - /* Nothing to do here during method execution */ - - return_ACPI_STATUS (Status); - - -ErrorExit: - Status = AcpiDsMethodError (Status, WalkState); - return_ACPI_STATUS (Status); -} - - -/***************************************************************************** - * - * FUNCTION: AcpiDsExecEndOp - * - * PARAMETERS: WalkState - Current state of the parse tree walk - * - * RETURN: Status - * - * DESCRIPTION: Ascending callback used during the execution of control - * methods. The only thing we really need to do here is to - * notice the beginning of IF, ELSE, and WHILE blocks. - * - ****************************************************************************/ - -ACPI_STATUS -AcpiDsExecEndOp ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_PARSE_OBJECT *Op; - ACPI_STATUS Status = AE_OK; - UINT32 OpType; - UINT32 OpClass; - ACPI_PARSE_OBJECT *NextOp; - ACPI_PARSE_OBJECT *FirstArg; - - - ACPI_FUNCTION_TRACE_PTR (DsExecEndOp, WalkState); - - - Op = WalkState->Op; - OpType = WalkState->OpInfo->Type; - OpClass = WalkState->OpInfo->Class; - - if (OpClass == AML_CLASS_UNKNOWN) - { - ACPI_ERROR ((AE_INFO, "Unknown opcode %X", Op->Common.AmlOpcode)); - return_ACPI_STATUS (AE_NOT_IMPLEMENTED); - } - - FirstArg = Op->Common.Value.Arg; - - /* Init the walk state */ - - WalkState->NumOperands = 0; - WalkState->ReturnDesc = NULL; - WalkState->ResultObj = NULL; - - /* Call debugger for single step support (DEBUG build only) */ - - ACPI_DEBUGGER_EXEC (Status = AcpiDbSingleStep (WalkState, Op, OpClass)); - ACPI_DEBUGGER_EXEC (if (ACPI_FAILURE (Status)) {return_ACPI_STATUS (Status);}); - - /* Decode the Opcode Class */ - - switch (OpClass) - { - case AML_CLASS_ARGUMENT: /* constants, literals, etc. - do nothing */ - break; - - - case AML_CLASS_EXECUTE: /* most operators with arguments */ - - /* Build resolved operand stack */ - - Status = AcpiDsCreateOperands (WalkState, FirstArg); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* Done with this result state (Now that operand stack is built) */ - - Status = AcpiDsResultStackPop (WalkState); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* - * All opcodes require operand resolution, with the only exceptions - * being the ObjectType and SizeOf operators. - */ - if (!(WalkState->OpInfo->Flags & AML_NO_OPERAND_RESOLVE)) - { - /* Resolve all operands */ - - Status = AcpiExResolveOperands (WalkState->Opcode, - &(WalkState->Operands [WalkState->NumOperands -1]), - WalkState); - if (ACPI_SUCCESS (Status)) - { - ACPI_DUMP_OPERANDS (ACPI_WALK_OPERANDS, ACPI_IMODE_EXECUTE, - AcpiPsGetOpcodeName (WalkState->Opcode), - WalkState->NumOperands, "after ExResolveOperands"); - } - } - - if (ACPI_SUCCESS (Status)) - { - /* - * Dispatch the request to the appropriate interpreter handler - * routine. There is one routine per opcode "type" based upon the - * number of opcode arguments and return type. - */ - Status = AcpiGbl_OpTypeDispatch[OpType] (WalkState); - } - else - { - /* - * Treat constructs of the form "Store(LocalX,LocalX)" as noops when the - * Local is uninitialized. - */ - if ((Status == AE_AML_UNINITIALIZED_LOCAL) && - (WalkState->Opcode == AML_STORE_OP) && - (WalkState->Operands[0]->Common.Type == ACPI_TYPE_LOCAL_REFERENCE) && - (WalkState->Operands[1]->Common.Type == ACPI_TYPE_LOCAL_REFERENCE) && - (WalkState->Operands[0]->Reference.Opcode == - WalkState->Operands[1]->Reference.Opcode) && - (WalkState->Operands[0]->Reference.Offset == - WalkState->Operands[1]->Reference.Offset)) - { - Status = AE_OK; - } - else - { - ACPI_EXCEPTION ((AE_INFO, Status, - "While resolving operands for [%s]", - AcpiPsGetOpcodeName (WalkState->Opcode))); - } - } - - /* Always delete the argument objects and clear the operand stack */ - - AcpiDsClearOperands (WalkState); - - /* - * If a result object was returned from above, push it on the - * current result stack - */ - if (ACPI_SUCCESS (Status) && - WalkState->ResultObj) - { - Status = AcpiDsResultPush (WalkState->ResultObj, WalkState); - } - break; - - - default: - - switch (OpType) - { - case AML_TYPE_CONTROL: /* Type 1 opcode, IF/ELSE/WHILE/NOOP */ - - /* 1 Operand, 0 ExternalResult, 0 InternalResult */ - - Status = AcpiDsExecEndControlOp (WalkState, Op); - - /* Make sure to properly pop the result stack */ - - if (ACPI_SUCCESS (Status)) - { - Status = AcpiDsResultStackPop (WalkState); - } - else if (Status == AE_CTRL_PENDING) - { - Status = AcpiDsResultStackPop (WalkState); - if (ACPI_SUCCESS (Status)) - { - Status = AE_CTRL_PENDING; - } - } - break; - - - case AML_TYPE_METHOD_CALL: - - /* - * If the method is referenced from within a package - * declaration, it is not a invocation of the method, just - * a reference to it. - */ - if ((Op->Asl.Parent) && - ((Op->Asl.Parent->Asl.AmlOpcode == AML_PACKAGE_OP) || - (Op->Asl.Parent->Asl.AmlOpcode == AML_VAR_PACKAGE_OP))) - { - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "Method Reference in a Package, Op=%p\n", Op)); - - Op->Common.Node = (ACPI_NAMESPACE_NODE *) Op->Asl.Value.Arg->Asl.Node->Object; - AcpiUtAddReference (Op->Asl.Value.Arg->Asl.Node->Object); - return_ACPI_STATUS (AE_OK); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Method invocation, Op=%p\n", Op)); - - /* - * (AML_METHODCALL) Op->Asl.Value.Arg->Asl.Node contains - * the method Node pointer - */ - /* NextOp points to the op that holds the method name */ - - NextOp = FirstArg; - - /* NextOp points to first argument op */ - - NextOp = NextOp->Common.Next; - - /* - * Get the method's arguments and put them on the operand stack - */ - Status = AcpiDsCreateOperands (WalkState, NextOp); - if (ACPI_FAILURE (Status)) - { - break; - } - - /* - * Since the operands will be passed to another control method, - * we must resolve all local references here (Local variables, - * arguments to *this* method, etc.) - */ - Status = AcpiDsResolveOperands (WalkState); - if (ACPI_FAILURE (Status)) - { - /* On error, clear all resolved operands */ - - AcpiDsClearOperands (WalkState); - break; - } - - /* - * Tell the walk loop to preempt this running method and - * execute the new method - */ - Status = AE_CTRL_TRANSFER; - - /* - * Return now; we don't want to disturb anything, - * especially the operand count! - */ - return_ACPI_STATUS (Status); - - - case AML_TYPE_CREATE_FIELD: - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Executing CreateField Buffer/Index Op=%p\n", Op)); - - Status = AcpiDsLoad2EndOp (WalkState); - if (ACPI_FAILURE (Status)) - { - break; - } - - Status = AcpiDsEvalBufferFieldOperands (WalkState, Op); - break; - - - case AML_TYPE_CREATE_OBJECT: - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Executing CreateObject (Buffer/Package) Op=%p\n", Op)); - - switch (Op->Common.Parent->Common.AmlOpcode) - { - case AML_NAME_OP: - - /* - * Put the Node on the object stack (Contains the ACPI Name - * of this object) - */ - WalkState->Operands[0] = (void *) Op->Common.Parent->Common.Node; - WalkState->NumOperands = 1; - - Status = AcpiDsCreateNode (WalkState, - Op->Common.Parent->Common.Node, - Op->Common.Parent); - if (ACPI_FAILURE (Status)) - { - break; - } - - /* Fall through */ - /*lint -fallthrough */ - - case AML_INT_EVAL_SUBTREE_OP: - - Status = AcpiDsEvalDataObjectOperands (WalkState, Op, - AcpiNsGetAttachedObject (Op->Common.Parent->Common.Node)); - break; - - default: - - Status = AcpiDsEvalDataObjectOperands (WalkState, Op, NULL); - break; - } - - /* Done with result state (Now that operand stack is built) */ - - Status = AcpiDsResultStackPop (WalkState); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* - * If a result object was returned from above, push it on the - * current result stack - */ - if (WalkState->ResultObj) - { - Status = AcpiDsResultPush (WalkState->ResultObj, WalkState); - } - break; - - - case AML_TYPE_NAMED_FIELD: - case AML_TYPE_NAMED_COMPLEX: - case AML_TYPE_NAMED_SIMPLE: - case AML_TYPE_NAMED_NO_OBJ: - - Status = AcpiDsLoad2EndOp (WalkState); - if (ACPI_FAILURE (Status)) - { - break; - } - - if (Op->Common.AmlOpcode == AML_REGION_OP) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Executing OpRegion Address/Length Op=%p\n", Op)); - - Status = AcpiDsEvalRegionOperands (WalkState, Op); - if (ACPI_FAILURE (Status)) - { - break; - } - - Status = AcpiDsResultStackPop (WalkState); - } - break; - - - case AML_TYPE_UNDEFINED: - - ACPI_ERROR ((AE_INFO, - "Undefined opcode type Op=%p", Op)); - return_ACPI_STATUS (AE_NOT_IMPLEMENTED); - - - case AML_TYPE_BOGUS: - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "Internal opcode=%X type Op=%p\n", - WalkState->Opcode, Op)); - break; - - - default: - - ACPI_ERROR ((AE_INFO, - "Unimplemented opcode, class=%X type=%X Opcode=%X Op=%p", - OpClass, OpType, Op->Common.AmlOpcode, Op)); - - Status = AE_NOT_IMPLEMENTED; - break; - } - } - - /* - * ACPI 2.0 support for 64-bit integers: Truncate numeric - * result value if we are executing from a 32-bit ACPI table - */ - AcpiExTruncateFor32bitTable (WalkState->ResultObj); - - /* - * Check if we just completed the evaluation of a - * conditional predicate - */ - if ((ACPI_SUCCESS (Status)) && - (WalkState->ControlState) && - (WalkState->ControlState->Common.State == - ACPI_CONTROL_PREDICATE_EXECUTING) && - (WalkState->ControlState->Control.PredicateOp == Op)) - { - Status = AcpiDsGetPredicateValue (WalkState, WalkState->ResultObj); - WalkState->ResultObj = NULL; - } - - -Cleanup: - - if (WalkState->ResultObj) - { - /* Break to debugger to display result */ - - ACPI_DEBUGGER_EXEC (AcpiDbDisplayResultObject (WalkState->ResultObj, - WalkState)); - - /* - * Delete the result op if and only if: - * Parent will not use the result -- such as any - * non-nested type2 op in a method (parent will be method) - */ - AcpiDsDeleteResultIfNotUsed (Op, WalkState->ResultObj, WalkState); - } - -#ifdef _UNDER_DEVELOPMENT - - if (WalkState->ParserState.Aml == WalkState->ParserState.AmlEnd) - { - AcpiDbMethodEnd (WalkState); - } -#endif - - /* Invoke exception handler on error */ - - if (ACPI_FAILURE (Status)) - { - Status = AcpiDsMethodError (Status, WalkState); - } - - /* Always clear the object stack */ - - WalkState->NumOperands = 0; - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dswload.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dswload.c deleted file mode 100644 index c6a6d52472..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dswload.c +++ /dev/null @@ -1,1294 +0,0 @@ -/****************************************************************************** - * - * Module Name: dswload - Dispatcher namespace load callbacks - * $Revision: 1.116 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __DSWLOAD_C__ - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" -#include "acdispat.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "acevents.h" - -#ifdef ACPI_ASL_COMPILER -#include "acdisasm.h" -#endif - -#define _COMPONENT ACPI_DISPATCHER - ACPI_MODULE_NAME ("dswload") - - -/******************************************************************************* - * - * FUNCTION: AcpiDsInitCallbacks - * - * PARAMETERS: WalkState - Current state of the parse tree walk - * PassNumber - 1, 2, or 3 - * - * RETURN: Status - * - * DESCRIPTION: Init walk state callbacks - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsInitCallbacks ( - ACPI_WALK_STATE *WalkState, - UINT32 PassNumber) -{ - - switch (PassNumber) - { - case 1: - WalkState->ParseFlags = ACPI_PARSE_LOAD_PASS1 | - ACPI_PARSE_DELETE_TREE; - WalkState->DescendingCallback = AcpiDsLoad1BeginOp; - WalkState->AscendingCallback = AcpiDsLoad1EndOp; - break; - - case 2: - WalkState->ParseFlags = ACPI_PARSE_LOAD_PASS1 | - ACPI_PARSE_DELETE_TREE; - WalkState->DescendingCallback = AcpiDsLoad2BeginOp; - WalkState->AscendingCallback = AcpiDsLoad2EndOp; - break; - - case 3: -#ifndef ACPI_NO_METHOD_EXECUTION - WalkState->ParseFlags |= ACPI_PARSE_EXECUTE | - ACPI_PARSE_DELETE_TREE; - WalkState->DescendingCallback = AcpiDsExecBeginOp; - WalkState->AscendingCallback = AcpiDsExecEndOp; -#endif - break; - - default: - return (AE_BAD_PARAMETER); - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsLoad1BeginOp - * - * PARAMETERS: WalkState - Current state of the parse tree walk - * OutOp - Where to return op if a new one is created - * - * RETURN: Status - * - * DESCRIPTION: Descending callback used during the loading of ACPI tables. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsLoad1BeginOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT **OutOp) -{ - ACPI_PARSE_OBJECT *Op; - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - ACPI_OBJECT_TYPE ObjectType; - char *Path; - UINT32 Flags; - - - ACPI_FUNCTION_TRACE (DsLoad1BeginOp); - - - Op = WalkState->Op; - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p State=%p\n", Op, WalkState)); - - /* We are only interested in opcodes that have an associated name */ - - if (Op) - { - if (!(WalkState->OpInfo->Flags & AML_NAMED)) - { - *OutOp = Op; - return_ACPI_STATUS (AE_OK); - } - - /* Check if this object has already been installed in the namespace */ - - if (Op->Common.Node) - { - *OutOp = Op; - return_ACPI_STATUS (AE_OK); - } - } - - Path = AcpiPsGetNextNamestring (&WalkState->ParserState); - - /* Map the raw opcode into an internal object type */ - - ObjectType = WalkState->OpInfo->ObjectType; - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "State=%p Op=%p [%s]\n", WalkState, Op, AcpiUtGetTypeName (ObjectType))); - - switch (WalkState->Opcode) - { - case AML_SCOPE_OP: - - /* - * The target name of the Scope() operator must exist at this point so - * that we can actually open the scope to enter new names underneath it. - * Allow search-to-root for single namesegs. - */ - Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, - ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &(Node)); -#ifdef ACPI_ASL_COMPILER - if (Status == AE_NOT_FOUND) - { - /* - * Table disassembly: - * Target of Scope() not found. Generate an External for it, and - * insert the name into the namespace. - */ - AcpiDmAddToExternalList (Path, ACPI_TYPE_DEVICE, 0); - Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, - ACPI_IMODE_LOAD_PASS1, ACPI_NS_SEARCH_PARENT, - WalkState, &Node); - } -#endif - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR_NAMESPACE (Path, Status); - return_ACPI_STATUS (Status); - } - - /* - * Check to make sure that the target is - * one of the opcodes that actually opens a scope - */ - switch (Node->Type) - { - case ACPI_TYPE_ANY: - case ACPI_TYPE_LOCAL_SCOPE: /* Scope */ - case ACPI_TYPE_DEVICE: - case ACPI_TYPE_POWER: - case ACPI_TYPE_PROCESSOR: - case ACPI_TYPE_THERMAL: - - /* These are acceptable types */ - break; - - case ACPI_TYPE_INTEGER: - case ACPI_TYPE_STRING: - case ACPI_TYPE_BUFFER: - - /* - * These types we will allow, but we will change the type. This - * enables some existing code of the form: - * - * Name (DEB, 0) - * Scope (DEB) { ... } - * - * Note: silently change the type here. On the second pass, we will report - * a warning - */ - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Type override - [%4.4s] had invalid type (%s) for Scope operator, changed to (Scope)\n", - Path, AcpiUtGetTypeName (Node->Type))); - - Node->Type = ACPI_TYPE_ANY; - WalkState->ScopeInfo->Common.Value = ACPI_TYPE_ANY; - break; - - default: - - /* All other types are an error */ - - ACPI_ERROR ((AE_INFO, - "Invalid type (%s) for target of Scope operator [%4.4s] (Cannot override)", - AcpiUtGetTypeName (Node->Type), Path)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - break; - - - default: - /* - * For all other named opcodes, we will enter the name into - * the namespace. - * - * Setup the search flags. - * Since we are entering a name into the namespace, we do not want to - * enable the search-to-root upsearch. - * - * There are only two conditions where it is acceptable that the name - * already exists: - * 1) the Scope() operator can reopen a scoping object that was - * previously defined (Scope, Method, Device, etc.) - * 2) Whenever we are parsing a deferred opcode (OpRegion, Buffer, - * BufferField, or Package), the name of the object is already - * in the namespace. - */ - if (WalkState->DeferredNode) - { - /* This name is already in the namespace, get the node */ - - Node = WalkState->DeferredNode; - Status = AE_OK; - break; - } - - /* - * If we are executing a method, do not create any namespace objects - * during the load phase, only during execution. - */ - if (WalkState->MethodNode) - { - Node = NULL; - Status = AE_OK; - break; - } - - Flags = ACPI_NS_NO_UPSEARCH; - if ((WalkState->Opcode != AML_SCOPE_OP) && - (!(WalkState->ParseFlags & ACPI_PARSE_DEFERRED_OP))) - { - Flags |= ACPI_NS_ERROR_IF_FOUND; - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[%s] Cannot already exist\n", - AcpiUtGetTypeName (ObjectType))); - } - else - { - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "[%s] Both Find or Create allowed\n", - AcpiUtGetTypeName (ObjectType))); - } - - /* - * Enter the named type into the internal namespace. We enter the name - * as we go downward in the parse tree. Any necessary subobjects that - * involve arguments to the opcode must be created as we go back up the - * parse tree later. - */ - Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, - ACPI_IMODE_LOAD_PASS1, Flags, WalkState, &Node); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_ALREADY_EXISTS) - { - /* The name already exists in this scope */ - - if (Node->Flags & ANOBJ_IS_EXTERNAL) - { - /* - * Allow one create on an object or segment that was - * previously declared External - */ - Node->Flags &= ~ANOBJ_IS_EXTERNAL; - Node->Type = (UINT8) ObjectType; - - /* Just retyped a node, probably will need to open a scope */ - - if (AcpiNsOpensScope (ObjectType)) - { - Status = AcpiDsScopeStackPush (Node, ObjectType, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - Status = AE_OK; - } - } - - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR_NAMESPACE (Path, Status); - return_ACPI_STATUS (Status); - } - } - break; - } - - /* Common exit */ - - if (!Op) - { - /* Create a new op */ - - Op = AcpiPsAllocOp (WalkState->Opcode); - if (!Op) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - } - - /* Initialize the op */ - -#if (defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY)) - Op->Named.Path = ACPI_CAST_PTR (UINT8, Path); -#endif - - if (Node) - { - /* - * Put the Node in the "op" object that the parser uses, so we - * can get it again quickly when this scope is closed - */ - Op->Common.Node = Node; - Op->Named.Name = Node->Name.Integer; - } - - AcpiPsAppendArg (AcpiPsGetParentScope (&WalkState->ParserState), Op); - *OutOp = Op; - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsLoad1EndOp - * - * PARAMETERS: WalkState - Current state of the parse tree walk - * - * RETURN: Status - * - * DESCRIPTION: Ascending callback used during the loading of the namespace, - * both control methods and everything else. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsLoad1EndOp ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_PARSE_OBJECT *Op; - ACPI_OBJECT_TYPE ObjectType; - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE (DsLoad1EndOp); - - - Op = WalkState->Op; - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p State=%p\n", Op, WalkState)); - - /* We are only interested in opcodes that have an associated name */ - - if (!(WalkState->OpInfo->Flags & (AML_NAMED | AML_FIELD))) - { - return_ACPI_STATUS (AE_OK); - } - - /* Get the object type to determine if we should pop the scope */ - - ObjectType = WalkState->OpInfo->ObjectType; - -#ifndef ACPI_NO_METHOD_EXECUTION - if (WalkState->OpInfo->Flags & AML_FIELD) - { - /* - * If we are executing a method, do not create any namespace objects - * during the load phase, only during execution. - */ - if (!WalkState->MethodNode) - { - if (WalkState->Opcode == AML_FIELD_OP || - WalkState->Opcode == AML_BANK_FIELD_OP || - WalkState->Opcode == AML_INDEX_FIELD_OP) - { - Status = AcpiDsInitFieldObjects (Op, WalkState); - } - } - return_ACPI_STATUS (Status); - } - - /* - * If we are executing a method, do not create any namespace objects - * during the load phase, only during execution. - */ - if (!WalkState->MethodNode) - { - if (Op->Common.AmlOpcode == AML_REGION_OP) - { - Status = AcpiExCreateRegion (Op->Named.Data, Op->Named.Length, - (ACPI_ADR_SPACE_TYPE) ((Op->Common.Value.Arg)->Common.Value.Integer), - WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - } -#endif - - if (Op->Common.AmlOpcode == AML_NAME_OP) - { - /* For Name opcode, get the object type from the argument */ - - if (Op->Common.Value.Arg) - { - ObjectType = (AcpiPsGetOpcodeInfo ( - (Op->Common.Value.Arg)->Common.AmlOpcode))->ObjectType; - - /* Set node type if we have a namespace node */ - - if (Op->Common.Node) - { - Op->Common.Node->Type = (UINT8) ObjectType; - } - } - } - - /* - * If we are executing a method, do not create any namespace objects - * during the load phase, only during execution. - */ - if (!WalkState->MethodNode) - { - if (Op->Common.AmlOpcode == AML_METHOD_OP) - { - /* - * MethodOp PkgLength NameString MethodFlags TermList - * - * Note: We must create the method node/object pair as soon as we - * see the method declaration. This allows later pass1 parsing - * of invocations of the method (need to know the number of - * arguments.) - */ - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "LOADING-Method: State=%p Op=%p NamedObj=%p\n", - WalkState, Op, Op->Named.Node)); - - if (!AcpiNsGetAttachedObject (Op->Named.Node)) - { - WalkState->Operands[0] = ACPI_CAST_PTR (void, Op->Named.Node); - WalkState->NumOperands = 1; - - Status = AcpiDsCreateOperands (WalkState, Op->Common.Value.Arg); - if (ACPI_SUCCESS (Status)) - { - Status = AcpiExCreateMethod (Op->Named.Data, - Op->Named.Length, WalkState); - } - - WalkState->Operands[0] = NULL; - WalkState->NumOperands = 0; - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - } - } - - /* Pop the scope stack (only if loading a table) */ - - if (!WalkState->MethodNode && - AcpiNsOpensScope (ObjectType)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "(%s): Popping scope for Op %p\n", - AcpiUtGetTypeName (ObjectType), Op)); - - Status = AcpiDsScopeStackPop (WalkState); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsLoad2BeginOp - * - * PARAMETERS: WalkState - Current state of the parse tree walk - * OutOp - Wher to return op if a new one is created - * - * RETURN: Status - * - * DESCRIPTION: Descending callback used during the loading of ACPI tables. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsLoad2BeginOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT **OutOp) -{ - ACPI_PARSE_OBJECT *Op; - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - ACPI_OBJECT_TYPE ObjectType; - char *BufferPtr; - UINT32 Flags; - - - ACPI_FUNCTION_TRACE (DsLoad2BeginOp); - - - Op = WalkState->Op; - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p State=%p\n", Op, WalkState)); - - if (Op) - { - if ((WalkState->ControlState) && - (WalkState->ControlState->Common.State == - ACPI_CONTROL_CONDITIONAL_EXECUTING)) - { - /* We are executing a while loop outside of a method */ - - Status = AcpiDsExecBeginOp (WalkState, OutOp); - return_ACPI_STATUS (Status); - } - - /* We only care about Namespace opcodes here */ - - if ((!(WalkState->OpInfo->Flags & AML_NSOPCODE) && - (WalkState->Opcode != AML_INT_NAMEPATH_OP)) || - (!(WalkState->OpInfo->Flags & AML_NAMED))) - { -#ifdef ACPI_ENABLE_MODULE_LEVEL_CODE - if ((WalkState->OpInfo->Class == AML_CLASS_EXECUTE) || - (WalkState->OpInfo->Class == AML_CLASS_CONTROL)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "Begin/EXEC: %s (fl %8.8X)\n", WalkState->OpInfo->Name, - WalkState->OpInfo->Flags)); - - /* Executing a type1 or type2 opcode outside of a method */ - - Status = AcpiDsExecBeginOp (WalkState, OutOp); - return_ACPI_STATUS (Status); - } -#endif - return_ACPI_STATUS (AE_OK); - } - - /* Get the name we are going to enter or lookup in the namespace */ - - if (WalkState->Opcode == AML_INT_NAMEPATH_OP) - { - /* For Namepath op, get the path string */ - - BufferPtr = Op->Common.Value.String; - if (!BufferPtr) - { - /* No name, just exit */ - - return_ACPI_STATUS (AE_OK); - } - } - else - { - /* Get name from the op */ - - BufferPtr = ACPI_CAST_PTR (char, &Op->Named.Name); - } - } - else - { - /* Get the namestring from the raw AML */ - - BufferPtr = AcpiPsGetNextNamestring (&WalkState->ParserState); - } - - /* Map the opcode into an internal object type */ - - ObjectType = WalkState->OpInfo->ObjectType; - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "State=%p Op=%p Type=%X\n", WalkState, Op, ObjectType)); - - switch (WalkState->Opcode) - { - case AML_FIELD_OP: - case AML_BANK_FIELD_OP: - case AML_INDEX_FIELD_OP: - - Node = NULL; - Status = AE_OK; - break; - - case AML_INT_NAMEPATH_OP: - /* - * The NamePath is an object reference to an existing object. - * Don't enter the name into the namespace, but look it up - * for use later. - */ - Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType, - ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, - WalkState, &(Node)); - break; - - case AML_SCOPE_OP: - /* - * The Path is an object reference to an existing object. - * Don't enter the name into the namespace, but look it up - * for use later. - */ - Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType, - ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, - WalkState, &(Node)); - if (ACPI_FAILURE (Status)) - { -#ifdef ACPI_ASL_COMPILER - if (Status == AE_NOT_FOUND) - { - Status = AE_OK; - } - else - { - ACPI_ERROR_NAMESPACE (BufferPtr, Status); - } -#else - ACPI_ERROR_NAMESPACE (BufferPtr, Status); -#endif - return_ACPI_STATUS (Status); - } - - /* - * We must check to make sure that the target is - * one of the opcodes that actually opens a scope - */ - switch (Node->Type) - { - case ACPI_TYPE_ANY: - case ACPI_TYPE_LOCAL_SCOPE: /* Scope */ - case ACPI_TYPE_DEVICE: - case ACPI_TYPE_POWER: - case ACPI_TYPE_PROCESSOR: - case ACPI_TYPE_THERMAL: - - /* These are acceptable types */ - break; - - case ACPI_TYPE_INTEGER: - case ACPI_TYPE_STRING: - case ACPI_TYPE_BUFFER: - - /* - * These types we will allow, but we will change the type. This - * enables some existing code of the form: - * - * Name (DEB, 0) - * Scope (DEB) { ... } - */ - ACPI_WARNING ((AE_INFO, - "Type override - [%4.4s] had invalid type (%s) for Scope operator, changed to (Scope)", - BufferPtr, AcpiUtGetTypeName (Node->Type))); - - Node->Type = ACPI_TYPE_ANY; - WalkState->ScopeInfo->Common.Value = ACPI_TYPE_ANY; - break; - - default: - - /* All other types are an error */ - - ACPI_ERROR ((AE_INFO, - "Invalid type (%s) for target of Scope operator [%4.4s]", - AcpiUtGetTypeName (Node->Type), BufferPtr)); - - return (AE_AML_OPERAND_TYPE); - } - break; - - default: - - /* All other opcodes */ - - if (Op && Op->Common.Node) - { - /* This op/node was previously entered into the namespace */ - - Node = Op->Common.Node; - - if (AcpiNsOpensScope (ObjectType)) - { - Status = AcpiDsScopeStackPush (Node, ObjectType, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - return_ACPI_STATUS (AE_OK); - } - - /* - * Enter the named type into the internal namespace. We enter the name - * as we go downward in the parse tree. Any necessary subobjects that - * involve arguments to the opcode must be created as we go back up the - * parse tree later. - * - * Note: Name may already exist if we are executing a deferred opcode. - */ - if (WalkState->DeferredNode) - { - /* This name is already in the namespace, get the node */ - - Node = WalkState->DeferredNode; - Status = AE_OK; - break; - } - - Flags = ACPI_NS_NO_UPSEARCH; - if (WalkState->PassNumber == ACPI_IMODE_EXECUTE) - { - /* Execution mode, node cannot already exist, node is temporary */ - - Flags |= (ACPI_NS_ERROR_IF_FOUND | ACPI_NS_TEMPORARY); - } - - /* Add new entry or lookup existing entry */ - - Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType, - ACPI_IMODE_LOAD_PASS2, Flags, WalkState, &Node); - break; - } - - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR_NAMESPACE (BufferPtr, Status); - return_ACPI_STATUS (Status); - } - - if (!Op) - { - /* Create a new op */ - - Op = AcpiPsAllocOp (WalkState->Opcode); - if (!Op) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Initialize the new op */ - - if (Node) - { - Op->Named.Name = Node->Name.Integer; - } - *OutOp = Op; - } - - /* - * Put the Node in the "op" object that the parser uses, so we - * can get it again quickly when this scope is closed - */ - Op->Common.Node = Node; - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsLoad2EndOp - * - * PARAMETERS: WalkState - Current state of the parse tree walk - * - * RETURN: Status - * - * DESCRIPTION: Ascending callback used during the loading of the namespace, - * both control methods and everything else. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsLoad2EndOp ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_PARSE_OBJECT *Op; - ACPI_STATUS Status = AE_OK; - ACPI_OBJECT_TYPE ObjectType; - ACPI_NAMESPACE_NODE *Node; - ACPI_PARSE_OBJECT *Arg; - ACPI_NAMESPACE_NODE *NewNode; -#ifndef ACPI_NO_METHOD_EXECUTION - UINT32 i; -#endif - - - ACPI_FUNCTION_TRACE (DsLoad2EndOp); - - Op = WalkState->Op; - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Opcode [%s] Op %p State %p\n", - WalkState->OpInfo->Name, Op, WalkState)); - - /* Check if opcode had an associated namespace object */ - - if (!(WalkState->OpInfo->Flags & AML_NSOBJECT)) - { -#ifndef ACPI_NO_METHOD_EXECUTION -#ifdef ACPI_ENABLE_MODULE_LEVEL_CODE - /* No namespace object. Executable opcode? */ - - if ((WalkState->OpInfo->Class == AML_CLASS_EXECUTE) || - (WalkState->OpInfo->Class == AML_CLASS_CONTROL)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "End/EXEC: %s (fl %8.8X)\n", WalkState->OpInfo->Name, - WalkState->OpInfo->Flags)); - - /* Executing a type1 or type2 opcode outside of a method */ - - Status = AcpiDsExecEndOp (WalkState); - return_ACPI_STATUS (Status); - } -#endif -#endif - return_ACPI_STATUS (AE_OK); - } - - if (Op->Common.AmlOpcode == AML_SCOPE_OP) - { - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "Ending scope Op=%p State=%p\n", Op, WalkState)); - } - - ObjectType = WalkState->OpInfo->ObjectType; - - /* - * Get the Node/name from the earlier lookup - * (It was saved in the *op structure) - */ - Node = Op->Common.Node; - - /* - * Put the Node on the object stack (Contains the ACPI Name of - * this object) - */ - WalkState->Operands[0] = (void *) Node; - WalkState->NumOperands = 1; - - /* Pop the scope stack */ - - if (AcpiNsOpensScope (ObjectType) && - (Op->Common.AmlOpcode != AML_INT_METHODCALL_OP)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "(%s) Popping scope for Op %p\n", - AcpiUtGetTypeName (ObjectType), Op)); - - Status = AcpiDsScopeStackPop (WalkState); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - } - - /* - * Named operations are as follows: - * - * AML_ALIAS - * AML_BANKFIELD - * AML_CREATEBITFIELD - * AML_CREATEBYTEFIELD - * AML_CREATEDWORDFIELD - * AML_CREATEFIELD - * AML_CREATEQWORDFIELD - * AML_CREATEWORDFIELD - * AML_DATA_REGION - * AML_DEVICE - * AML_EVENT - * AML_FIELD - * AML_INDEXFIELD - * AML_METHOD - * AML_METHODCALL - * AML_MUTEX - * AML_NAME - * AML_NAMEDFIELD - * AML_OPREGION - * AML_POWERRES - * AML_PROCESSOR - * AML_SCOPE - * AML_THERMALZONE - */ - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "Create-Load [%s] State=%p Op=%p NamedObj=%p\n", - AcpiPsGetOpcodeName (Op->Common.AmlOpcode), WalkState, Op, Node)); - - /* Decode the opcode */ - - Arg = Op->Common.Value.Arg; - - switch (WalkState->OpInfo->Type) - { -#ifndef ACPI_NO_METHOD_EXECUTION - - case AML_TYPE_CREATE_FIELD: - /* - * Create the field object, but the field buffer and index must - * be evaluated later during the execution phase - */ - Status = AcpiDsCreateBufferField (Op, WalkState); - break; - - - case AML_TYPE_NAMED_FIELD: - /* - * If we are executing a method, initialize the field - */ - if (WalkState->MethodNode) - { - Status = AcpiDsInitFieldObjects (Op, WalkState); - } - - switch (Op->Common.AmlOpcode) - { - case AML_INDEX_FIELD_OP: - - Status = AcpiDsCreateIndexField (Op, (ACPI_HANDLE) Arg->Common.Node, - WalkState); - break; - - case AML_BANK_FIELD_OP: - - Status = AcpiDsCreateBankField (Op, Arg->Common.Node, WalkState); - break; - - case AML_FIELD_OP: - - Status = AcpiDsCreateField (Op, Arg->Common.Node, WalkState); - break; - - default: - /* All NAMED_FIELD opcodes must be handled above */ - break; - } - break; - - - case AML_TYPE_NAMED_SIMPLE: - - Status = AcpiDsCreateOperands (WalkState, Arg); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - switch (Op->Common.AmlOpcode) - { - case AML_PROCESSOR_OP: - - Status = AcpiExCreateProcessor (WalkState); - break; - - case AML_POWER_RES_OP: - - Status = AcpiExCreatePowerResource (WalkState); - break; - - case AML_MUTEX_OP: - - Status = AcpiExCreateMutex (WalkState); - break; - - case AML_EVENT_OP: - - Status = AcpiExCreateEvent (WalkState); - break; - - case AML_DATA_REGION_OP: - - Status = AcpiExCreateTableRegion (WalkState); - break; - - case AML_ALIAS_OP: - - Status = AcpiExCreateAlias (WalkState); - break; - - default: - /* Unknown opcode */ - - Status = AE_OK; - goto Cleanup; - } - - /* Delete operands */ - - for (i = 1; i < WalkState->NumOperands; i++) - { - AcpiUtRemoveReference (WalkState->Operands[i]); - WalkState->Operands[i] = NULL; - } - - break; -#endif /* ACPI_NO_METHOD_EXECUTION */ - - case AML_TYPE_NAMED_COMPLEX: - - switch (Op->Common.AmlOpcode) - { -#ifndef ACPI_NO_METHOD_EXECUTION - case AML_REGION_OP: - - /* - * If we are executing a method, initialize the region - */ - if (WalkState->MethodNode) - { - Status = AcpiExCreateRegion (Op->Named.Data, Op->Named.Length, - (ACPI_ADR_SPACE_TYPE) - ((Op->Common.Value.Arg)->Common.Value.Integer), - WalkState); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - } - - /* - * The OpRegion is not fully parsed at this time. Only valid - * argument is the SpaceId. (We must save the address of the - * AML of the address and length operands) - */ - - /* - * If we have a valid region, initialize it - * Namespace is NOT locked at this point. - * - * TBD: need to unlock interpreter if it is locked, in order - * to allow _REG methods to be run. - */ - Status = AcpiEvInitializeRegion (AcpiNsGetAttachedObject (Node), - FALSE); - if (ACPI_FAILURE (Status)) - { - /* - * If AE_NOT_EXIST is returned, it is not fatal - * because many regions get created before a handler - * is installed for said region. - */ - if (AE_NOT_EXIST == Status) - { - Status = AE_OK; - } - } - break; - - - case AML_NAME_OP: - - Status = AcpiDsCreateNode (WalkState, Node, Op); - break; - - - case AML_METHOD_OP: - /* - * MethodOp PkgLength NameString MethodFlags TermList - * - * Note: We must create the method node/object pair as soon as we - * see the method declaration. This allows later pass1 parsing - * of invocations of the method (need to know the number of - * arguments.) - */ - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "LOADING-Method: State=%p Op=%p NamedObj=%p\n", - WalkState, Op, Op->Named.Node)); - - if (!AcpiNsGetAttachedObject (Op->Named.Node)) - { - WalkState->Operands[0] = ACPI_CAST_PTR (void, Op->Named.Node); - WalkState->NumOperands = 1; - - Status = AcpiDsCreateOperands (WalkState, Op->Common.Value.Arg); - if (ACPI_SUCCESS (Status)) - { - Status = AcpiExCreateMethod (Op->Named.Data, - Op->Named.Length, WalkState); - } - WalkState->Operands[0] = NULL; - WalkState->NumOperands = 0; - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - break; - -#endif /* ACPI_NO_METHOD_EXECUTION */ - - default: - /* All NAMED_COMPLEX opcodes must be handled above */ - break; - } - break; - - - case AML_CLASS_INTERNAL: - - /* case AML_INT_NAMEPATH_OP: */ - break; - - - case AML_CLASS_METHOD_CALL: - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "RESOLVING-MethodCall: State=%p Op=%p NamedObj=%p\n", - WalkState, Op, Node)); - - /* - * Lookup the method name and save the Node - */ - Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, - ACPI_TYPE_ANY, ACPI_IMODE_LOAD_PASS2, - ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, - WalkState, &(NewNode)); - if (ACPI_SUCCESS (Status)) - { - /* - * Make sure that what we found is indeed a method - * We didn't search for a method on purpose, to see if the name - * would resolve - */ - if (NewNode->Type != ACPI_TYPE_METHOD) - { - Status = AE_AML_OPERAND_TYPE; - } - - /* We could put the returned object (Node) on the object stack for - * later, but for now, we will put it in the "op" object that the - * parser uses, so we can get it again at the end of this scope - */ - Op->Common.Node = NewNode; - } - else - { - ACPI_ERROR_NAMESPACE (Arg->Common.Value.String, Status); - } - break; - - - default: - break; - } - -Cleanup: - - /* Remove the Node pushed at the very beginning */ - - WalkState->Operands[0] = NULL; - WalkState->NumOperands = 0; - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dswscope.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dswscope.c deleted file mode 100644 index f5d05a7496..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dswscope.c +++ /dev/null @@ -1,311 +0,0 @@ -/****************************************************************************** - * - * Module Name: dswscope - Scope stack manipulation - * $Revision: 1.68 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __DSWSCOPE_C__ - -#include "acpi.h" -#include "acdispat.h" - - -#define _COMPONENT ACPI_DISPATCHER - ACPI_MODULE_NAME ("dswscope") - - -/**************************************************************************** - * - * FUNCTION: AcpiDsScopeStackClear - * - * PARAMETERS: WalkState - Current state - * - * RETURN: None - * - * DESCRIPTION: Pop (and free) everything on the scope stack except the - * root scope object (which remains at the stack top.) - * - ***************************************************************************/ - -void -AcpiDsScopeStackClear ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_GENERIC_STATE *ScopeInfo; - - ACPI_FUNCTION_NAME (DsScopeStackClear); - - - while (WalkState->ScopeInfo) - { - /* Pop a scope off the stack */ - - ScopeInfo = WalkState->ScopeInfo; - WalkState->ScopeInfo = ScopeInfo->Scope.Next; - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Popped object type (%s)\n", - AcpiUtGetTypeName (ScopeInfo->Common.Value))); - AcpiUtDeleteGenericState (ScopeInfo); - } -} - - -/**************************************************************************** - * - * FUNCTION: AcpiDsScopeStackPush - * - * PARAMETERS: Node - Name to be made current - * Type - Type of frame being pushed - * WalkState - Current state - * - * RETURN: Status - * - * DESCRIPTION: Push the current scope on the scope stack, and make the - * passed Node current. - * - ***************************************************************************/ - -ACPI_STATUS -AcpiDsScopeStackPush ( - ACPI_NAMESPACE_NODE *Node, - ACPI_OBJECT_TYPE Type, - ACPI_WALK_STATE *WalkState) -{ - ACPI_GENERIC_STATE *ScopeInfo; - ACPI_GENERIC_STATE *OldScopeInfo; - - - ACPI_FUNCTION_TRACE (DsScopeStackPush); - - - if (!Node) - { - /* Invalid scope */ - - ACPI_ERROR ((AE_INFO, "Null scope parameter")); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Make sure object type is valid */ - - if (!AcpiUtValidObjectType (Type)) - { - ACPI_WARNING ((AE_INFO, - "Invalid object type: 0x%X", Type)); - } - - /* Allocate a new scope object */ - - ScopeInfo = AcpiUtCreateGenericState (); - if (!ScopeInfo) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Init new scope object */ - - ScopeInfo->Common.DescriptorType = ACPI_DESC_TYPE_STATE_WSCOPE; - ScopeInfo->Scope.Node = Node; - ScopeInfo->Common.Value = (UINT16) Type; - - WalkState->ScopeDepth++; - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "[%.2d] Pushed scope ", (UINT32) WalkState->ScopeDepth)); - - OldScopeInfo = WalkState->ScopeInfo; - if (OldScopeInfo) - { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC, - "[%4.4s] (%s)", - AcpiUtGetNodeName (OldScopeInfo->Scope.Node), - AcpiUtGetTypeName (OldScopeInfo->Common.Value))); - } - else - { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC, - "[\\___] (%s)", "ROOT")); - } - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC, - ", New scope -> [%4.4s] (%s)\n", - AcpiUtGetNodeName (ScopeInfo->Scope.Node), - AcpiUtGetTypeName (ScopeInfo->Common.Value))); - - /* Push new scope object onto stack */ - - AcpiUtPushGenericState (&WalkState->ScopeInfo, ScopeInfo); - return_ACPI_STATUS (AE_OK); -} - - -/**************************************************************************** - * - * FUNCTION: AcpiDsScopeStackPop - * - * PARAMETERS: WalkState - Current state - * - * RETURN: Status - * - * DESCRIPTION: Pop the scope stack once. - * - ***************************************************************************/ - -ACPI_STATUS -AcpiDsScopeStackPop ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_GENERIC_STATE *ScopeInfo; - ACPI_GENERIC_STATE *NewScopeInfo; - - - ACPI_FUNCTION_TRACE (DsScopeStackPop); - - - /* - * Pop scope info object off the stack. - */ - ScopeInfo = AcpiUtPopGenericState (&WalkState->ScopeInfo); - if (!ScopeInfo) - { - return_ACPI_STATUS (AE_STACK_UNDERFLOW); - } - - WalkState->ScopeDepth--; - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "[%.2d] Popped scope [%4.4s] (%s), New scope -> ", - (UINT32) WalkState->ScopeDepth, - AcpiUtGetNodeName (ScopeInfo->Scope.Node), - AcpiUtGetTypeName (ScopeInfo->Common.Value))); - - NewScopeInfo = WalkState->ScopeInfo; - if (NewScopeInfo) - { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC, - "[%4.4s] (%s)\n", - AcpiUtGetNodeName (NewScopeInfo->Scope.Node), - AcpiUtGetTypeName (NewScopeInfo->Common.Value))); - } - else - { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC, - "[\\___] (ROOT)\n")); - } - - AcpiUtDeleteGenericState (ScopeInfo); - return_ACPI_STATUS (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dswstate.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dswstate.c deleted file mode 100644 index 204acfc559..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/dispatcher/dswstate.c +++ /dev/null @@ -1,1235 +0,0 @@ -/****************************************************************************** - * - * Module Name: dswstate - Dispatcher parse tree walk management routines - * $Revision: 1.98 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __DSWSTATE_C__ - -#include "acpi.h" -#include "acparser.h" -#include "acdispat.h" -#include "acnamesp.h" - -#define _COMPONENT ACPI_DISPATCHER - ACPI_MODULE_NAME ("dswstate") - -/* Local prototypes */ - -#ifdef ACPI_OBSOLETE_FUNCTIONS -ACPI_STATUS -AcpiDsResultInsert ( - void *Object, - UINT32 Index, - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsObjStackDeleteAll ( - ACPI_WALK_STATE *WalkState); - -ACPI_STATUS -AcpiDsObjStackPopObject ( - ACPI_OPERAND_OBJECT **Object, - ACPI_WALK_STATE *WalkState); - -void * -AcpiDsObjStackGetValue ( - UINT32 Index, - ACPI_WALK_STATE *WalkState); -#endif - - -/******************************************************************************* - * - * FUNCTION: AcpiDsResultRemove - * - * PARAMETERS: Object - Where to return the popped object - * Index - Where to extract the object - * WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: Pop an object off the bottom of this walk's result stack. In - * other words, this is a FIFO. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsResultRemove ( - ACPI_OPERAND_OBJECT **Object, - UINT32 Index, - ACPI_WALK_STATE *WalkState) -{ - ACPI_GENERIC_STATE *State; - - - ACPI_FUNCTION_NAME (DsResultRemove); - - - State = WalkState->Results; - if (!State) - { - ACPI_ERROR ((AE_INFO, "No result object pushed! State=%p", - WalkState)); - return (AE_NOT_EXIST); - } - - if (Index >= ACPI_OBJ_MAX_OPERAND) - { - ACPI_ERROR ((AE_INFO, - "Index out of range: %X State=%p Num=%X", - Index, WalkState, State->Results.NumResults)); - } - - /* Check for a valid result object */ - - if (!State->Results.ObjDesc [Index]) - { - ACPI_ERROR ((AE_INFO, - "Null operand! State=%p #Ops=%X, Index=%X", - WalkState, State->Results.NumResults, Index)); - return (AE_AML_NO_RETURN_VALUE); - } - - /* Remove the object */ - - State->Results.NumResults--; - - *Object = State->Results.ObjDesc [Index]; - State->Results.ObjDesc [Index] = NULL; - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Obj=%p [%s] Index=%X State=%p Num=%X\n", - *Object, (*Object) ? AcpiUtGetObjectTypeName (*Object) : "NULL", - Index, WalkState, State->Results.NumResults)); - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsResultPop - * - * PARAMETERS: Object - Where to return the popped object - * WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: Pop an object off the bottom of this walk's result stack. In - * other words, this is a FIFO. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsResultPop ( - ACPI_OPERAND_OBJECT **Object, - ACPI_WALK_STATE *WalkState) -{ - ACPI_NATIVE_UINT Index; - ACPI_GENERIC_STATE *State; - - - ACPI_FUNCTION_NAME (DsResultPop); - - - State = WalkState->Results; - if (!State) - { - return (AE_OK); - } - - if (!State->Results.NumResults) - { - ACPI_ERROR ((AE_INFO, "Result stack is empty! State=%p", - WalkState)); - return (AE_AML_NO_RETURN_VALUE); - } - - /* Remove top element */ - - State->Results.NumResults--; - - for (Index = ACPI_OBJ_NUM_OPERANDS; Index; Index--) - { - /* Check for a valid result object */ - - if (State->Results.ObjDesc [Index -1]) - { - *Object = State->Results.ObjDesc [Index -1]; - State->Results.ObjDesc [Index -1] = NULL; - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Obj=%p [%s] Index=%X State=%p Num=%X\n", - *Object, - (*Object) ? AcpiUtGetObjectTypeName (*Object) : "NULL", - (UINT32) Index -1, WalkState, State->Results.NumResults)); - - return (AE_OK); - } - } - - ACPI_ERROR ((AE_INFO, - "No result objects! State=%p", WalkState)); - return (AE_AML_NO_RETURN_VALUE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsResultPopFromBottom - * - * PARAMETERS: Object - Where to return the popped object - * WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: Pop an object off the bottom of this walk's result stack. In - * other words, this is a FIFO. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsResultPopFromBottom ( - ACPI_OPERAND_OBJECT **Object, - ACPI_WALK_STATE *WalkState) -{ - ACPI_NATIVE_UINT Index; - ACPI_GENERIC_STATE *State; - - - ACPI_FUNCTION_NAME (DsResultPopFromBottom); - - - State = WalkState->Results; - if (!State) - { - ACPI_ERROR ((AE_INFO, - "No result object pushed! State=%p", WalkState)); - return (AE_NOT_EXIST); - } - - if (!State->Results.NumResults) - { - ACPI_ERROR ((AE_INFO, "No result objects! State=%p", - WalkState)); - return (AE_AML_NO_RETURN_VALUE); - } - - /* Remove Bottom element */ - - *Object = State->Results.ObjDesc [0]; - - /* Push entire stack down one element */ - - for (Index = 0; Index < State->Results.NumResults; Index++) - { - State->Results.ObjDesc [Index] = State->Results.ObjDesc [Index + 1]; - } - - State->Results.NumResults--; - - /* Check for a valid result object */ - - if (!*Object) - { - ACPI_ERROR ((AE_INFO, - "Null operand! State=%p #Ops=%X Index=%X", - WalkState, State->Results.NumResults, (UINT32) Index)); - return (AE_AML_NO_RETURN_VALUE); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Obj=%p [%s] Results=%p State=%p\n", - *Object, (*Object) ? AcpiUtGetObjectTypeName (*Object) : "NULL", - State, WalkState)); - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsResultPush - * - * PARAMETERS: Object - Where to return the popped object - * WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: Push an object onto the current result stack - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsResultPush ( - ACPI_OPERAND_OBJECT *Object, - ACPI_WALK_STATE *WalkState) -{ - ACPI_GENERIC_STATE *State; - - - ACPI_FUNCTION_NAME (DsResultPush); - - - State = WalkState->Results; - if (!State) - { - ACPI_ERROR ((AE_INFO, "No result stack frame during push")); - return (AE_AML_INTERNAL); - } - - if (State->Results.NumResults == ACPI_OBJ_NUM_OPERANDS) - { - ACPI_ERROR ((AE_INFO, - "Result stack overflow: Obj=%p State=%p Num=%X", - Object, WalkState, State->Results.NumResults)); - return (AE_STACK_OVERFLOW); - } - - if (!Object) - { - ACPI_ERROR ((AE_INFO, - "Null Object! Obj=%p State=%p Num=%X", - Object, WalkState, State->Results.NumResults)); - return (AE_BAD_PARAMETER); - } - - State->Results.ObjDesc [State->Results.NumResults] = Object; - State->Results.NumResults++; - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Obj=%p [%s] State=%p Num=%X Cur=%X\n", - Object, Object ? AcpiUtGetObjectTypeName ((ACPI_OPERAND_OBJECT *) Object) : "NULL", - WalkState, State->Results.NumResults, WalkState->CurrentResult)); - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsResultStackPush - * - * PARAMETERS: WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: Push an object onto the WalkState result stack. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsResultStackPush ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_GENERIC_STATE *State; - - ACPI_FUNCTION_NAME (DsResultStackPush); - - - State = AcpiUtCreateGenericState (); - if (!State) - { - return (AE_NO_MEMORY); - } - - State->Common.DescriptorType = ACPI_DESC_TYPE_STATE_RESULT; - AcpiUtPushGenericState (&WalkState->Results, State); - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Results=%p State=%p\n", - State, WalkState)); - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsResultStackPop - * - * PARAMETERS: WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: Pop an object off of the WalkState result stack. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsResultStackPop ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_GENERIC_STATE *State; - - ACPI_FUNCTION_NAME (DsResultStackPop); - - - /* Check for stack underflow */ - - if (WalkState->Results == NULL) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Underflow - State=%p\n", - WalkState)); - return (AE_AML_NO_OPERAND); - } - - State = AcpiUtPopGenericState (&WalkState->Results); - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Result=%p RemainingResults=%X State=%p\n", - State, State->Results.NumResults, WalkState)); - - AcpiUtDeleteGenericState (State); - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsObjStackPush - * - * PARAMETERS: Object - Object to push - * WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: Push an object onto this walk's object/operand stack - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsObjStackPush ( - void *Object, - ACPI_WALK_STATE *WalkState) -{ - ACPI_FUNCTION_NAME (DsObjStackPush); - - - /* Check for stack overflow */ - - if (WalkState->NumOperands >= ACPI_OBJ_NUM_OPERANDS) - { - ACPI_ERROR ((AE_INFO, - "Object stack overflow! Obj=%p State=%p #Ops=%X", - Object, WalkState, WalkState->NumOperands)); - return (AE_STACK_OVERFLOW); - } - - /* Put the object onto the stack */ - - WalkState->Operands [WalkState->NumOperands] = Object; - WalkState->NumOperands++; - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Obj=%p [%s] State=%p #Ops=%X\n", - Object, AcpiUtGetObjectTypeName ((ACPI_OPERAND_OBJECT *) Object), - WalkState, WalkState->NumOperands)); - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsObjStackPop - * - * PARAMETERS: PopCount - Number of objects/entries to pop - * WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: Pop this walk's object stack. Objects on the stack are NOT - * deleted by this routine. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsObjStackPop ( - UINT32 PopCount, - ACPI_WALK_STATE *WalkState) -{ - UINT32 i; - - ACPI_FUNCTION_NAME (DsObjStackPop); - - - for (i = 0; i < PopCount; i++) - { - /* Check for stack underflow */ - - if (WalkState->NumOperands == 0) - { - ACPI_ERROR ((AE_INFO, - "Object stack underflow! Count=%X State=%p #Ops=%X", - PopCount, WalkState, WalkState->NumOperands)); - return (AE_STACK_UNDERFLOW); - } - - /* Just set the stack entry to null */ - - WalkState->NumOperands--; - WalkState->Operands [WalkState->NumOperands] = NULL; - } - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Count=%X State=%p #Ops=%X\n", - PopCount, WalkState, WalkState->NumOperands)); - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsObjStackPopAndDelete - * - * PARAMETERS: PopCount - Number of objects/entries to pop - * WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: Pop this walk's object stack and delete each object that is - * popped off. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsObjStackPopAndDelete ( - UINT32 PopCount, - ACPI_WALK_STATE *WalkState) -{ - UINT32 i; - ACPI_OPERAND_OBJECT *ObjDesc; - - - ACPI_FUNCTION_NAME (DsObjStackPopAndDelete); - - - for (i = 0; i < PopCount; i++) - { - /* Check for stack underflow */ - - if (WalkState->NumOperands == 0) - { - ACPI_ERROR ((AE_INFO, - "Object stack underflow! Count=%X State=%p #Ops=%X", - PopCount, WalkState, WalkState->NumOperands)); - return (AE_STACK_UNDERFLOW); - } - - /* Pop the stack and delete an object if present in this stack entry */ - - WalkState->NumOperands--; - ObjDesc = WalkState->Operands [WalkState->NumOperands]; - if (ObjDesc) - { - AcpiUtRemoveReference (WalkState->Operands [WalkState->NumOperands]); - WalkState->Operands [WalkState->NumOperands] = NULL; - } - } - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Count=%X State=%p #Ops=%X\n", - PopCount, WalkState, WalkState->NumOperands)); - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsGetCurrentWalkState - * - * PARAMETERS: Thread - Get current active state for this Thread - * - * RETURN: Pointer to the current walk state - * - * DESCRIPTION: Get the walk state that is at the head of the list (the "current" - * walk state.) - * - ******************************************************************************/ - -ACPI_WALK_STATE * -AcpiDsGetCurrentWalkState ( - ACPI_THREAD_STATE *Thread) - -{ - ACPI_FUNCTION_NAME (DsGetCurrentWalkState); - - - if (!Thread) - { - return (NULL); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Current WalkState %p\n", - Thread->WalkStateList)); - - return (Thread->WalkStateList); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsPushWalkState - * - * PARAMETERS: WalkState - State to push - * Thread - Thread state object - * - * RETURN: None - * - * DESCRIPTION: Place the Thread state at the head of the state list. - * - ******************************************************************************/ - -void -AcpiDsPushWalkState ( - ACPI_WALK_STATE *WalkState, - ACPI_THREAD_STATE *Thread) -{ - ACPI_FUNCTION_TRACE (DsPushWalkState); - - - WalkState->Next = Thread->WalkStateList; - Thread->WalkStateList = WalkState; - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsPopWalkState - * - * PARAMETERS: Thread - Current thread state - * - * RETURN: A WalkState object popped from the thread's stack - * - * DESCRIPTION: Remove and return the walkstate object that is at the head of - * the walk stack for the given walk list. NULL indicates that - * the list is empty. - * - ******************************************************************************/ - -ACPI_WALK_STATE * -AcpiDsPopWalkState ( - ACPI_THREAD_STATE *Thread) -{ - ACPI_WALK_STATE *WalkState; - - - ACPI_FUNCTION_TRACE (DsPopWalkState); - - - WalkState = Thread->WalkStateList; - - if (WalkState) - { - /* Next walk state becomes the current walk state */ - - Thread->WalkStateList = WalkState->Next; - - /* - * Don't clear the NEXT field, this serves as an indicator - * that there is a parent WALK STATE - * Do Not: WalkState->Next = NULL; - */ - } - - return_PTR (WalkState); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsCreateWalkState - * - * PARAMETERS: OwnerId - ID for object creation - * Origin - Starting point for this walk - * MethodDesc - Method object - * Thread - Current thread state - * - * RETURN: Pointer to the new walk state. - * - * DESCRIPTION: Allocate and initialize a new walk state. The current walk - * state is set to this new state. - * - ******************************************************************************/ - -ACPI_WALK_STATE * -AcpiDsCreateWalkState ( - ACPI_OWNER_ID OwnerId, - ACPI_PARSE_OBJECT *Origin, - ACPI_OPERAND_OBJECT *MethodDesc, - ACPI_THREAD_STATE *Thread) -{ - ACPI_WALK_STATE *WalkState; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (DsCreateWalkState); - - - WalkState = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_WALK_STATE)); - if (!WalkState) - { - return_PTR (NULL); - } - - WalkState->DescriptorType = ACPI_DESC_TYPE_WALK; - WalkState->MethodDesc = MethodDesc; - WalkState->OwnerId = OwnerId; - WalkState->Origin = Origin; - WalkState->Thread = Thread; - - WalkState->ParserState.StartOp = Origin; - - /* Init the method args/local */ - -#if (!defined (ACPI_NO_METHOD_EXECUTION) && !defined (ACPI_CONSTANT_EVAL_ONLY)) - AcpiDsMethodDataInit (WalkState); -#endif - - /* Create an initial result stack entry */ - - Status = AcpiDsResultStackPush (WalkState); - if (ACPI_FAILURE (Status)) - { - ACPI_FREE (WalkState); - return_PTR (NULL); - } - - /* Put the new state at the head of the walk list */ - - if (Thread) - { - AcpiDsPushWalkState (WalkState, Thread); - } - - return_PTR (WalkState); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsInitAmlWalk - * - * PARAMETERS: WalkState - New state to be initialized - * Op - Current parse op - * MethodNode - Control method NS node, if any - * AmlStart - Start of AML - * AmlLength - Length of AML - * Info - Method info block (params, etc.) - * PassNumber - 1, 2, or 3 - * - * RETURN: Status - * - * DESCRIPTION: Initialize a walk state for a pass 1 or 2 parse tree walk - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsInitAmlWalk ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - ACPI_NAMESPACE_NODE *MethodNode, - UINT8 *AmlStart, - UINT32 AmlLength, - ACPI_EVALUATE_INFO *Info, - UINT8 PassNumber) -{ - ACPI_STATUS Status; - ACPI_PARSE_STATE *ParserState = &WalkState->ParserState; - ACPI_PARSE_OBJECT *ExtraOp; - - - ACPI_FUNCTION_TRACE (DsInitAmlWalk); - - - WalkState->ParserState.Aml = - WalkState->ParserState.AmlStart = AmlStart; - WalkState->ParserState.AmlEnd = - WalkState->ParserState.PkgEnd = AmlStart + AmlLength; - - /* The NextOp of the NextWalk will be the beginning of the method */ - - WalkState->NextOp = NULL; - WalkState->PassNumber = PassNumber; - - if (Info) - { - if (Info->ParameterType == ACPI_PARAM_GPE) - { - WalkState->GpeEventInfo = - ACPI_CAST_PTR (ACPI_GPE_EVENT_INFO, Info->Parameters); - } - else - { - WalkState->Params = Info->Parameters; - WalkState->CallerReturnDesc = &Info->ReturnObject; - } - } - - Status = AcpiPsInitScope (&WalkState->ParserState, Op); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - if (MethodNode) - { - WalkState->ParserState.StartNode = MethodNode; - WalkState->WalkType = ACPI_WALK_METHOD; - WalkState->MethodNode = MethodNode; - WalkState->MethodDesc = AcpiNsGetAttachedObject (MethodNode); - - /* Push start scope on scope stack and make it current */ - - Status = AcpiDsScopeStackPush (MethodNode, ACPI_TYPE_METHOD, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Init the method arguments */ - - Status = AcpiDsMethodDataInitArgs (WalkState->Params, - ACPI_METHOD_NUM_ARGS, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - else - { - /* - * Setup the current scope. - * Find a Named Op that has a namespace node associated with it. - * search upwards from this Op. Current scope is the first - * Op with a namespace node. - */ - ExtraOp = ParserState->StartOp; - while (ExtraOp && !ExtraOp->Common.Node) - { - ExtraOp = ExtraOp->Common.Parent; - } - - if (!ExtraOp) - { - ParserState->StartNode = NULL; - } - else - { - ParserState->StartNode = ExtraOp->Common.Node; - } - - if (ParserState->StartNode) - { - /* Push start scope on scope stack and make it current */ - - Status = AcpiDsScopeStackPush (ParserState->StartNode, - ParserState->StartNode->Type, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - } - - Status = AcpiDsInitCallbacks (WalkState, PassNumber); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsDeleteWalkState - * - * PARAMETERS: WalkState - State to delete - * - * RETURN: Status - * - * DESCRIPTION: Delete a walk state including all internal data structures - * - ******************************************************************************/ - -void -AcpiDsDeleteWalkState ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_GENERIC_STATE *State; - - - ACPI_FUNCTION_TRACE_PTR (DsDeleteWalkState, WalkState); - - - if (!WalkState) - { - return; - } - - if (WalkState->DescriptorType != ACPI_DESC_TYPE_WALK) - { - ACPI_ERROR ((AE_INFO, "%p is not a valid walk state", - WalkState)); - return; - } - - /* There should not be any open scopes */ - - if (WalkState->ParserState.Scope) - { - ACPI_ERROR ((AE_INFO, "%p walk still has a scope list", - WalkState)); - AcpiPsCleanupScope (&WalkState->ParserState); - } - - /* Always must free any linked control states */ - - while (WalkState->ControlState) - { - State = WalkState->ControlState; - WalkState->ControlState = State->Common.Next; - - AcpiUtDeleteGenericState (State); - } - - /* Always must free any linked parse states */ - - while (WalkState->ScopeInfo) - { - State = WalkState->ScopeInfo; - WalkState->ScopeInfo = State->Common.Next; - - AcpiUtDeleteGenericState (State); - } - - /* Always must free any stacked result states */ - - while (WalkState->Results) - { - State = WalkState->Results; - WalkState->Results = State->Common.Next; - - AcpiUtDeleteGenericState (State); - } - - ACPI_FREE (WalkState); - return_VOID; -} - - -#ifdef ACPI_OBSOLETE_FUNCTIONS -/******************************************************************************* - * - * FUNCTION: AcpiDsResultInsert - * - * PARAMETERS: Object - Object to push - * Index - Where to insert the object - * WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: Insert an object onto this walk's result stack - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsResultInsert ( - void *Object, - UINT32 Index, - ACPI_WALK_STATE *WalkState) -{ - ACPI_GENERIC_STATE *State; - - - ACPI_FUNCTION_NAME (DsResultInsert); - - - State = WalkState->Results; - if (!State) - { - ACPI_ERROR ((AE_INFO, "No result object pushed! State=%p", - WalkState)); - return (AE_NOT_EXIST); - } - - if (Index >= ACPI_OBJ_NUM_OPERANDS) - { - ACPI_ERROR ((AE_INFO, - "Index out of range: %X Obj=%p State=%p Num=%X", - Index, Object, WalkState, State->Results.NumResults)); - return (AE_BAD_PARAMETER); - } - - if (!Object) - { - ACPI_ERROR ((AE_INFO, - "Null Object! Index=%X Obj=%p State=%p Num=%X", - Index, Object, WalkState, State->Results.NumResults)); - return (AE_BAD_PARAMETER); - } - - State->Results.ObjDesc [Index] = Object; - State->Results.NumResults++; - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Obj=%p [%s] State=%p Num=%X Cur=%X\n", - Object, Object ? AcpiUtGetObjectTypeName ((ACPI_OPERAND_OBJECT *) Object) : "NULL", - WalkState, State->Results.NumResults, WalkState->CurrentResult)); - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsObjStackDeleteAll - * - * PARAMETERS: WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: Clear the object stack by deleting all objects that are on it. - * Should be used with great care, if at all! - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsObjStackDeleteAll ( - ACPI_WALK_STATE *WalkState) -{ - UINT32 i; - - - ACPI_FUNCTION_TRACE_PTR (DsObjStackDeleteAll, WalkState); - - - /* The stack size is configurable, but fixed */ - - for (i = 0; i < ACPI_OBJ_NUM_OPERANDS; i++) - { - if (WalkState->Operands[i]) - { - AcpiUtRemoveReference (WalkState->Operands[i]); - WalkState->Operands[i] = NULL; - } - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsObjStackPopObject - * - * PARAMETERS: Object - Where to return the popped object - * WalkState - Current Walk state - * - * RETURN: Status - * - * DESCRIPTION: Pop this walk's object stack. Objects on the stack are NOT - * deleted by this routine. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDsObjStackPopObject ( - ACPI_OPERAND_OBJECT **Object, - ACPI_WALK_STATE *WalkState) -{ - ACPI_FUNCTION_NAME (DsObjStackPopObject); - - - /* Check for stack underflow */ - - if (WalkState->NumOperands == 0) - { - ACPI_ERROR ((AE_INFO, - "Missing operand/stack empty! State=%p #Ops=%X", - WalkState, WalkState->NumOperands)); - *Object = NULL; - return (AE_AML_NO_OPERAND); - } - - /* Pop the stack */ - - WalkState->NumOperands--; - - /* Check for a valid operand */ - - if (!WalkState->Operands [WalkState->NumOperands]) - { - ACPI_ERROR ((AE_INFO, - "Null operand! State=%p #Ops=%X", - WalkState, WalkState->NumOperands)); - *Object = NULL; - return (AE_AML_NO_OPERAND); - } - - /* Get operand and set stack entry to null */ - - *Object = WalkState->Operands [WalkState->NumOperands]; - WalkState->Operands [WalkState->NumOperands] = NULL; - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Obj=%p [%s] State=%p #Ops=%X\n", - *Object, AcpiUtGetObjectTypeName (*Object), - WalkState, WalkState->NumOperands)); - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDsObjStackGetValue - * - * PARAMETERS: Index - Stack index whose value is desired. Based - * on the top of the stack (index=0 == top) - * WalkState - Current Walk state - * - * RETURN: Pointer to the requested operand - * - * DESCRIPTION: Retrieve an object from this walk's operand stack. Index must - * be within the range of the current stack pointer. - * - ******************************************************************************/ - -void * -AcpiDsObjStackGetValue ( - UINT32 Index, - ACPI_WALK_STATE *WalkState) -{ - - ACPI_FUNCTION_TRACE_PTR (DsObjStackGetValue, WalkState); - - - /* Can't do it if the stack is empty */ - - if (WalkState->NumOperands == 0) - { - return_PTR (NULL); - } - - /* or if the index is past the top of the stack */ - - if (Index > (WalkState->NumOperands - (UINT32) 1)) - { - return_PTR (NULL); - } - - return_PTR (WalkState->Operands[(ACPI_NATIVE_UINT)(WalkState->NumOperands - 1) - - Index]); -} -#endif - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exconfig.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exconfig.c deleted file mode 100644 index f7a46deeef..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exconfig.c +++ /dev/null @@ -1,523 +0,0 @@ -/****************************************************************************** - * - * Module Name: exconfig - Namespace reconfiguration (Load/Unload opcodes) - * $Revision: 1.102 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __EXCONFIG_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acevents.h" -#include "actables.h" -#include "acdispat.h" - - -#define _COMPONENT ACPI_EXECUTER - ACPI_MODULE_NAME ("exconfig") - -/* Local prototypes */ - -static ACPI_STATUS -AcpiExAddTable ( - ACPI_NATIVE_UINT TableIndex, - ACPI_NAMESPACE_NODE *ParentNode, - ACPI_OPERAND_OBJECT **DdbHandle); - - -/******************************************************************************* - * - * FUNCTION: AcpiExAddTable - * - * PARAMETERS: Table - Pointer to raw table - * ParentNode - Where to load the table (scope) - * DdbHandle - Where to return the table handle. - * - * RETURN: Status - * - * DESCRIPTION: Common function to Install and Load an ACPI table with a - * returned table handle. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiExAddTable ( - ACPI_NATIVE_UINT TableIndex, - ACPI_NAMESPACE_NODE *ParentNode, - ACPI_OPERAND_OBJECT **DdbHandle) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *ObjDesc; - - - ACPI_FUNCTION_TRACE (ExAddTable); - - - /* Create an object to be the table handle */ - - ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_LOCAL_REFERENCE); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Init the table handle */ - - ObjDesc->Reference.Opcode = AML_LOAD_OP; - *DdbHandle = ObjDesc; - - /* Install the new table into the local data structures */ - - ObjDesc->Reference.Object = ACPI_CAST_PTR (void, TableIndex); - - /* Add the table to the namespace */ - - Status = AcpiNsLoadTable (TableIndex, ParentNode); - if (ACPI_FAILURE (Status)) - { - AcpiUtRemoveReference (ObjDesc); - *DdbHandle = NULL; - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExLoadTableOp - * - * PARAMETERS: WalkState - Current state with operands - * ReturnDesc - Where to store the return object - * - * RETURN: Status - * - * DESCRIPTION: Load an ACPI table from the RSDT/XSDT - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExLoadTableOp ( - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT **ReturnDesc) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; - ACPI_NATIVE_UINT TableIndex; - ACPI_NAMESPACE_NODE *ParentNode; - ACPI_NAMESPACE_NODE *StartNode; - ACPI_NAMESPACE_NODE *ParameterNode = NULL; - ACPI_OPERAND_OBJECT *DdbHandle; - ACPI_TABLE_HEADER *Table; - - - ACPI_FUNCTION_TRACE (ExLoadTableOp); - - - /* Find the ACPI table in the RSDT/XSDT */ - - Status = AcpiTbFindTable (Operand[0]->String.Pointer, - Operand[1]->String.Pointer, - Operand[2]->String.Pointer, &TableIndex); - if (ACPI_FAILURE (Status)) - { - if (Status != AE_NOT_FOUND) - { - return_ACPI_STATUS (Status); - } - - /* Table not found, return an Integer=0 and AE_OK */ - - DdbHandle = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); - if (!DdbHandle) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - DdbHandle->Integer.Value = 0; - *ReturnDesc = DdbHandle; - - return_ACPI_STATUS (AE_OK); - } - - /* Default nodes */ - - StartNode = WalkState->ScopeInfo->Scope.Node; - ParentNode = AcpiGbl_RootNode; - - /* RootPath (optional parameter) */ - - if (Operand[3]->String.Length > 0) - { - /* - * Find the node referenced by the RootPathString. This is the - * location within the namespace where the table will be loaded. - */ - Status = AcpiNsGetNode (StartNode, Operand[3]->String.Pointer, - ACPI_NS_SEARCH_PARENT, &ParentNode); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* ParameterPath (optional parameter) */ - - if (Operand[4]->String.Length > 0) - { - if ((Operand[4]->String.Pointer[0] != '\\') && - (Operand[4]->String.Pointer[0] != '^')) - { - /* - * Path is not absolute, so it will be relative to the node - * referenced by the RootPathString (or the NS root if omitted) - */ - StartNode = ParentNode; - } - - /* Find the node referenced by the ParameterPathString */ - - Status = AcpiNsGetNode (StartNode, Operand[4]->String.Pointer, - ACPI_NS_SEARCH_PARENT, &ParameterNode); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* Load the table into the namespace */ - - Status = AcpiExAddTable (TableIndex, ParentNode, &DdbHandle); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Parameter Data (optional) */ - - if (ParameterNode) - { - /* Store the parameter data into the optional parameter object */ - - Status = AcpiExStore (Operand[5], - ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, ParameterNode), - WalkState); - if (ACPI_FAILURE (Status)) - { - (void) AcpiExUnloadTable (DdbHandle); - return_ACPI_STATUS (Status); - } - } - - Status = AcpiGetTableByIndex (TableIndex, &Table); - if (ACPI_SUCCESS (Status)) - { - ACPI_INFO ((AE_INFO, - "Dynamic OEM Table Load - [%4.4s] OemId [%6.6s] OemTableId [%8.8s]", - Table->Signature, Table->OemId, Table->OemTableId)); - } - - *ReturnDesc = DdbHandle; - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExLoadOp - * - * PARAMETERS: ObjDesc - Region or Buffer/Field where the table will be - * obtained - * Target - Where a handle to the table will be stored - * WalkState - Current state - * - * RETURN: Status - * - * DESCRIPTION: Load an ACPI table from a field or operation region - * - * NOTE: Region Fields (Field, BankField, IndexFields) are resolved to buffer - * objects before this code is reached. - * - * If source is an operation region, it must refer to SystemMemory, as - * per the ACPI specification. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExLoadOp ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT *Target, - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT *DdbHandle; - ACPI_TABLE_DESC TableDesc; - ACPI_NATIVE_UINT TableIndex; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (ExLoadOp); - - - ACPI_MEMSET (&TableDesc, 0, sizeof (ACPI_TABLE_DESC)); - TableDesc.Flags = ACPI_TABLE_ORIGIN_ALLOCATED; - - /* Source Object can be either an OpRegion or a Buffer/Field */ - - switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) - { - case ACPI_TYPE_REGION: - - /* Region must be SystemMemory (from ACPI spec) */ - - if (ObjDesc->Region.SpaceId != ACPI_ADR_SPACE_SYSTEM_MEMORY) - { - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Load from Region %p %s\n", - ObjDesc, AcpiUtGetObjectTypeName (ObjDesc))); - - /* - * If the Region Address and Length have not been previously evaluated, - * evaluate them now and save the results. - */ - if (!(ObjDesc->Common.Flags & AOPOBJ_DATA_VALID)) - { - Status = AcpiDsGetRegionArguments (ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - TableDesc.Address = ObjDesc->Region.Address; - TableDesc.Length = ObjDesc->Region.Length; - TableDesc.Flags = ACPI_TABLE_ORIGIN_MAPPED; - break; - - case ACPI_TYPE_BUFFER: /* Buffer or resolved RegionField */ - - /* Simply extract the buffer from the buffer object */ - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Load from Buffer or Field %p %s\n", - ObjDesc, AcpiUtGetObjectTypeName (ObjDesc))); - - TableDesc.Pointer = ACPI_CAST_PTR (ACPI_TABLE_HEADER, - ObjDesc->Buffer.Pointer); - TableDesc.Length = TableDesc.Pointer->Length; - TableDesc.Flags = ACPI_TABLE_ORIGIN_ALLOCATED; - - ObjDesc->Buffer.Pointer = NULL; - break; - - default: - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - /* - * Install the new table into the local data structures - */ - Status = AcpiTbAddTable (&TableDesc, &TableIndex); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - Status = AcpiExAddTable (TableIndex, AcpiGbl_RootNode, &DdbHandle); - if (ACPI_FAILURE (Status)) - { - /* On error, TablePtr was deallocated above */ - - return_ACPI_STATUS (Status); - } - - /* Store the DdbHandle into the Target operand */ - - Status = AcpiExStore (DdbHandle, Target, WalkState); - if (ACPI_FAILURE (Status)) - { - (void) AcpiExUnloadTable (DdbHandle); - - /* TablePtr was deallocated above */ - - return_ACPI_STATUS (Status); - } - -Cleanup: - if (ACPI_FAILURE (Status)) - { - AcpiTbDeleteTable (&TableDesc); - } - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExUnloadTable - * - * PARAMETERS: DdbHandle - Handle to a previously loaded table - * - * RETURN: Status - * - * DESCRIPTION: Unload an ACPI table - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExUnloadTable ( - ACPI_OPERAND_OBJECT *DdbHandle) -{ - ACPI_STATUS Status = AE_OK; - ACPI_OPERAND_OBJECT *TableDesc = DdbHandle; - ACPI_NATIVE_UINT TableIndex; - - - ACPI_FUNCTION_TRACE (ExUnloadTable); - - - /* - * Validate the handle - * Although the handle is partially validated in AcpiExReconfiguration(), - * when it calls AcpiExResolveOperands(), the handle is more completely - * validated here. - */ - if ((!DdbHandle) || - (ACPI_GET_DESCRIPTOR_TYPE (DdbHandle) != ACPI_DESC_TYPE_OPERAND) || - (ACPI_GET_OBJECT_TYPE (DdbHandle) != ACPI_TYPE_LOCAL_REFERENCE)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Get the table index from the DdbHandle */ - - TableIndex = (ACPI_NATIVE_UINT) TableDesc->Reference.Object; - - /* - * Delete the entire namespace under this table Node - * (Offset contains the TableId) - */ - AcpiTbDeleteNamespaceByOwner (TableIndex); - AcpiTbReleaseOwnerId (TableIndex); - - AcpiTbSetTableLoadedFlag (TableIndex, FALSE); - - /* Delete the table descriptor (DdbHandle) */ - - AcpiUtRemoveReference (TableDesc); - return_ACPI_STATUS (Status); -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exconvrt.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exconvrt.c deleted file mode 100644 index a5882b183a..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exconvrt.c +++ /dev/null @@ -1,817 +0,0 @@ -/****************************************************************************** - * - * Module Name: exconvrt - Object conversion routines - * $Revision: 1.73 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __EXCONVRT_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "amlcode.h" - - -#define _COMPONENT ACPI_EXECUTER - ACPI_MODULE_NAME ("exconvrt") - -/* Local prototypes */ - -static UINT32 -AcpiExConvertToAscii ( - ACPI_INTEGER Integer, - UINT16 Base, - UINT8 *String, - UINT8 MaxLength); - - -/******************************************************************************* - * - * FUNCTION: AcpiExConvertToInteger - * - * PARAMETERS: ObjDesc - Object to be converted. Must be an - * Integer, Buffer, or String - * ResultDesc - Where the new Integer object is returned - * Flags - Used for string conversion - * - * RETURN: Status - * - * DESCRIPTION: Convert an ACPI Object to an integer. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExConvertToInteger ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT **ResultDesc, - UINT32 Flags) -{ - ACPI_OPERAND_OBJECT *ReturnDesc; - UINT8 *Pointer; - ACPI_INTEGER Result; - UINT32 i; - UINT32 Count; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE_PTR (ExConvertToInteger, ObjDesc); - - - switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) - { - case ACPI_TYPE_INTEGER: - - /* No conversion necessary */ - - *ResultDesc = ObjDesc; - return_ACPI_STATUS (AE_OK); - - case ACPI_TYPE_BUFFER: - case ACPI_TYPE_STRING: - - /* Note: Takes advantage of common buffer/string fields */ - - Pointer = ObjDesc->Buffer.Pointer; - Count = ObjDesc->Buffer.Length; - break; - - default: - return_ACPI_STATUS (AE_TYPE); - } - - /* - * Convert the buffer/string to an integer. Note that both buffers and - * strings are treated as raw data - we don't convert ascii to hex for - * strings. - * - * There are two terminating conditions for the loop: - * 1) The size of an integer has been reached, or - * 2) The end of the buffer or string has been reached - */ - Result = 0; - - /* String conversion is different than Buffer conversion */ - - switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) - { - case ACPI_TYPE_STRING: - - /* - * Convert string to an integer - for most cases, the string must be - * hexadecimal as per the ACPI specification. The only exception (as - * of ACPI 3.0) is that the ToInteger() operator allows both decimal - * and hexadecimal strings (hex prefixed with "0x"). - */ - Status = AcpiUtStrtoul64 ((char *) Pointer, Flags, &Result); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - break; - - - case ACPI_TYPE_BUFFER: - - /* Check for zero-length buffer */ - - if (!Count) - { - return_ACPI_STATUS (AE_AML_BUFFER_LIMIT); - } - - /* Transfer no more than an integer's worth of data */ - - if (Count > AcpiGbl_IntegerByteWidth) - { - Count = AcpiGbl_IntegerByteWidth; - } - - /* - * Convert buffer to an integer - we simply grab enough raw data - * from the buffer to fill an integer - */ - for (i = 0; i < Count; i++) - { - /* - * Get next byte and shift it into the Result. - * Little endian is used, meaning that the first byte of the buffer - * is the LSB of the integer - */ - Result |= (((ACPI_INTEGER) Pointer[i]) << (i * 8)); - } - break; - - - default: - /* No other types can get here */ - break; - } - - /* Create a new integer */ - - ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); - if (!ReturnDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Converted value: %8.8X%8.8X\n", - ACPI_FORMAT_UINT64 (Result))); - - /* Save the Result */ - - ReturnDesc->Integer.Value = Result; - AcpiExTruncateFor32bitTable (ReturnDesc); - *ResultDesc = ReturnDesc; - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExConvertToBuffer - * - * PARAMETERS: ObjDesc - Object to be converted. Must be an - * Integer, Buffer, or String - * ResultDesc - Where the new buffer object is returned - * - * RETURN: Status - * - * DESCRIPTION: Convert an ACPI Object to a Buffer - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExConvertToBuffer ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT **ResultDesc) -{ - ACPI_OPERAND_OBJECT *ReturnDesc; - UINT8 *NewBuf; - - - ACPI_FUNCTION_TRACE_PTR (ExConvertToBuffer, ObjDesc); - - - switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) - { - case ACPI_TYPE_BUFFER: - - /* No conversion necessary */ - - *ResultDesc = ObjDesc; - return_ACPI_STATUS (AE_OK); - - - case ACPI_TYPE_INTEGER: - - /* - * Create a new Buffer object. - * Need enough space for one integer - */ - ReturnDesc = AcpiUtCreateBufferObject (AcpiGbl_IntegerByteWidth); - if (!ReturnDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Copy the integer to the buffer, LSB first */ - - NewBuf = ReturnDesc->Buffer.Pointer; - ACPI_MEMCPY (NewBuf, - &ObjDesc->Integer.Value, - AcpiGbl_IntegerByteWidth); - break; - - - case ACPI_TYPE_STRING: - - /* - * Create a new Buffer object - * Size will be the string length - * - * NOTE: Add one to the string length to include the null terminator. - * The ACPI spec is unclear on this subject, but there is existing - * ASL/AML code that depends on the null being transferred to the new - * buffer. - */ - ReturnDesc = AcpiUtCreateBufferObject ( - (ACPI_SIZE) ObjDesc->String.Length + 1); - if (!ReturnDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Copy the string to the buffer */ - - NewBuf = ReturnDesc->Buffer.Pointer; - ACPI_STRNCPY ((char *) NewBuf, (char *) ObjDesc->String.Pointer, - ObjDesc->String.Length); - break; - - - default: - return_ACPI_STATUS (AE_TYPE); - } - - /* Mark buffer initialized */ - - ReturnDesc->Common.Flags |= AOPOBJ_DATA_VALID; - *ResultDesc = ReturnDesc; - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExConvertToAscii - * - * PARAMETERS: Integer - Value to be converted - * Base - ACPI_STRING_DECIMAL or ACPI_STRING_HEX - * String - Where the string is returned - * DataWidth - Size of data item to be converted, in bytes - * - * RETURN: Actual string length - * - * DESCRIPTION: Convert an ACPI Integer to a hex or decimal string - * - ******************************************************************************/ - -static UINT32 -AcpiExConvertToAscii ( - ACPI_INTEGER Integer, - UINT16 Base, - UINT8 *String, - UINT8 DataWidth) -{ - ACPI_INTEGER Digit; - ACPI_NATIVE_UINT i; - ACPI_NATIVE_UINT j; - ACPI_NATIVE_UINT k = 0; - ACPI_NATIVE_UINT HexLength; - ACPI_NATIVE_UINT DecimalLength; - UINT32 Remainder; - BOOLEAN SupressZeros; - - - ACPI_FUNCTION_ENTRY (); - - - switch (Base) - { - case 10: - - /* Setup max length for the decimal number */ - - switch (DataWidth) - { - case 1: - DecimalLength = ACPI_MAX8_DECIMAL_DIGITS; - break; - - case 4: - DecimalLength = ACPI_MAX32_DECIMAL_DIGITS; - break; - - case 8: - default: - DecimalLength = ACPI_MAX64_DECIMAL_DIGITS; - break; - } - - SupressZeros = TRUE; /* No leading zeros */ - Remainder = 0; - - for (i = DecimalLength; i > 0; i--) - { - /* Divide by nth factor of 10 */ - - Digit = Integer; - for (j = 0; j < i; j++) - { - (void) AcpiUtShortDivide (Digit, 10, &Digit, &Remainder); - } - - /* Handle leading zeros */ - - if (Remainder != 0) - { - SupressZeros = FALSE; - } - - if (!SupressZeros) - { - String[k] = (UINT8) (ACPI_ASCII_ZERO + Remainder); - k++; - } - } - break; - - case 16: - - /* HexLength: 2 ascii hex chars per data byte */ - - HexLength = (ACPI_NATIVE_UINT) ACPI_MUL_2 (DataWidth); - for (i = 0, j = (HexLength-1); i < HexLength; i++, j--) - { - /* Get one hex digit, most significant digits first */ - - String[k] = (UINT8) AcpiUtHexToAsciiChar (Integer, ACPI_MUL_4 (j)); - k++; - } - break; - - default: - return (0); - } - - /* - * Since leading zeros are supressed, we must check for the case where - * the integer equals 0 - * - * Finally, null terminate the string and return the length - */ - if (!k) - { - String [0] = ACPI_ASCII_ZERO; - k = 1; - } - - String [k] = 0; - return ((UINT32) k); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExConvertToString - * - * PARAMETERS: ObjDesc - Object to be converted. Must be an - * Integer, Buffer, or String - * ResultDesc - Where the string object is returned - * Type - String flags (base and conversion type) - * - * RETURN: Status - * - * DESCRIPTION: Convert an ACPI Object to a string - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExConvertToString ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT **ResultDesc, - UINT32 Type) -{ - ACPI_OPERAND_OBJECT *ReturnDesc; - UINT8 *NewBuf; - UINT32 i; - UINT32 StringLength = 0; - UINT16 Base = 16; - UINT8 Separator = ','; - - - ACPI_FUNCTION_TRACE_PTR (ExConvertToString, ObjDesc); - - - switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) - { - case ACPI_TYPE_STRING: - - /* No conversion necessary */ - - *ResultDesc = ObjDesc; - return_ACPI_STATUS (AE_OK); - - - case ACPI_TYPE_INTEGER: - - switch (Type) - { - case ACPI_EXPLICIT_CONVERT_DECIMAL: - - /* Make room for maximum decimal number */ - - StringLength = ACPI_MAX_DECIMAL_DIGITS; - Base = 10; - break; - - default: - - /* Two hex string characters for each integer byte */ - - StringLength = ACPI_MUL_2 (AcpiGbl_IntegerByteWidth); - break; - } - - /* - * Create a new String - * Need enough space for one ASCII integer (plus null terminator) - */ - ReturnDesc = AcpiUtCreateStringObject ((ACPI_SIZE) StringLength); - if (!ReturnDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - NewBuf = ReturnDesc->Buffer.Pointer; - - /* Convert integer to string */ - - StringLength = AcpiExConvertToAscii (ObjDesc->Integer.Value, Base, - NewBuf, AcpiGbl_IntegerByteWidth); - - /* Null terminate at the correct place */ - - ReturnDesc->String.Length = StringLength; - NewBuf [StringLength] = 0; - break; - - - case ACPI_TYPE_BUFFER: - - /* Setup string length, base, and separator */ - - switch (Type) - { - case ACPI_EXPLICIT_CONVERT_DECIMAL: /* Used by ToDecimalString */ - /* - * From ACPI: "If Data is a buffer, it is converted to a string of - * decimal values separated by commas." - */ - Base = 10; - - /* - * Calculate the final string length. Individual string values - * are variable length (include separator for each) - */ - for (i = 0; i < ObjDesc->Buffer.Length; i++) - { - if (ObjDesc->Buffer.Pointer[i] >= 100) - { - StringLength += 4; - } - else if (ObjDesc->Buffer.Pointer[i] >= 10) - { - StringLength += 3; - } - else - { - StringLength += 2; - } - } - break; - - case ACPI_IMPLICIT_CONVERT_HEX: - /* - * From the ACPI spec: - *"The entire contents of the buffer are converted to a string of - * two-character hexadecimal numbers, each separated by a space." - */ - Separator = ' '; - StringLength = (ObjDesc->Buffer.Length * 3); - break; - - case ACPI_EXPLICIT_CONVERT_HEX: /* Used by ToHexString */ - /* - * From ACPI: "If Data is a buffer, it is converted to a string of - * hexadecimal values separated by commas." - */ - StringLength = (ObjDesc->Buffer.Length * 3); - break; - - default: - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* - * Create a new string object and string buffer - * (-1 because of extra separator included in StringLength from above) - */ - ReturnDesc = AcpiUtCreateStringObject ((ACPI_SIZE) (StringLength - 1)); - if (!ReturnDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - NewBuf = ReturnDesc->Buffer.Pointer; - - /* - * Convert buffer bytes to hex or decimal values - * (separated by commas or spaces) - */ - for (i = 0; i < ObjDesc->Buffer.Length; i++) - { - NewBuf += AcpiExConvertToAscii ( - (ACPI_INTEGER) ObjDesc->Buffer.Pointer[i], Base, - NewBuf, 1); - *NewBuf++ = Separator; /* each separated by a comma or space */ - } - - /* - * Null terminate the string - * (overwrites final comma/space from above) - */ - NewBuf--; - *NewBuf = 0; - break; - - default: - return_ACPI_STATUS (AE_TYPE); - } - - *ResultDesc = ReturnDesc; - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExConvertToTargetType - * - * PARAMETERS: DestinationType - Current type of the destination - * SourceDesc - Source object to be converted. - * ResultDesc - Where the converted object is returned - * WalkState - Current method state - * - * RETURN: Status - * - * DESCRIPTION: Implements "implicit conversion" rules for storing an object. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExConvertToTargetType ( - ACPI_OBJECT_TYPE DestinationType, - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT **ResultDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE (ExConvertToTargetType); - - - /* Default behavior */ - - *ResultDesc = SourceDesc; - - /* - * If required by the target, - * perform implicit conversion on the source before we store it. - */ - switch (GET_CURRENT_ARG_TYPE (WalkState->OpInfo->RuntimeArgs)) - { - case ARGI_SIMPLE_TARGET: - case ARGI_FIXED_TARGET: - case ARGI_INTEGER_REF: /* Handles Increment, Decrement cases */ - - switch (DestinationType) - { - case ACPI_TYPE_LOCAL_REGION_FIELD: - /* - * Named field can always handle conversions - */ - break; - - default: - /* No conversion allowed for these types */ - - if (DestinationType != ACPI_GET_OBJECT_TYPE (SourceDesc)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Explicit operator, will store (%s) over existing type (%s)\n", - AcpiUtGetObjectTypeName (SourceDesc), - AcpiUtGetTypeName (DestinationType))); - Status = AE_TYPE; - } - } - break; - - - case ARGI_TARGETREF: - - switch (DestinationType) - { - case ACPI_TYPE_INTEGER: - case ACPI_TYPE_BUFFER_FIELD: - case ACPI_TYPE_LOCAL_BANK_FIELD: - case ACPI_TYPE_LOCAL_INDEX_FIELD: - /* - * These types require an Integer operand. We can convert - * a Buffer or a String to an Integer if necessary. - */ - Status = AcpiExConvertToInteger (SourceDesc, ResultDesc, - 16); - break; - - - case ACPI_TYPE_STRING: - /* - * The operand must be a String. We can convert an - * Integer or Buffer if necessary - */ - Status = AcpiExConvertToString (SourceDesc, ResultDesc, - ACPI_IMPLICIT_CONVERT_HEX); - break; - - - case ACPI_TYPE_BUFFER: - /* - * The operand must be a Buffer. We can convert an - * Integer or String if necessary - */ - Status = AcpiExConvertToBuffer (SourceDesc, ResultDesc); - break; - - - default: - ACPI_ERROR ((AE_INFO, "Bad destination type during conversion: %X", - DestinationType)); - Status = AE_AML_INTERNAL; - break; - } - break; - - - case ARGI_REFERENCE: - /* - * CreateXxxxField cases - we are storing the field object into the name - */ - break; - - - default: - ACPI_ERROR ((AE_INFO, - "Unknown Target type ID 0x%X AmlOpcode %X DestType %s", - GET_CURRENT_ARG_TYPE (WalkState->OpInfo->RuntimeArgs), - WalkState->Opcode, AcpiUtGetTypeName (DestinationType))); - Status = AE_AML_INTERNAL; - } - - /* - * Source-to-Target conversion semantics: - * - * If conversion to the target type cannot be performed, then simply - * overwrite the target with the new object and type. - */ - if (Status == AE_TYPE) - { - Status = AE_OK; - } - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/excreate.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/excreate.c deleted file mode 100644 index b1dbd4877e..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/excreate.c +++ /dev/null @@ -1,737 +0,0 @@ -/****************************************************************************** - * - * Module Name: excreate - Named object creation - * $Revision: 1.113 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __EXCREATE_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acevents.h" -#include "actables.h" - - -#define _COMPONENT ACPI_EXECUTER - ACPI_MODULE_NAME ("excreate") - - -#ifndef ACPI_NO_METHOD_EXECUTION -/******************************************************************************* - * - * FUNCTION: AcpiExCreateAlias - * - * PARAMETERS: WalkState - Current state, contains operands - * - * RETURN: Status - * - * DESCRIPTION: Create a new named alias - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExCreateAlias ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_NAMESPACE_NODE *TargetNode; - ACPI_NAMESPACE_NODE *AliasNode; - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE (ExCreateAlias); - - - /* Get the source/alias operands (both namespace nodes) */ - - AliasNode = (ACPI_NAMESPACE_NODE *) WalkState->Operands[0]; - TargetNode = (ACPI_NAMESPACE_NODE *) WalkState->Operands[1]; - - if ((TargetNode->Type == ACPI_TYPE_LOCAL_ALIAS) || - (TargetNode->Type == ACPI_TYPE_LOCAL_METHOD_ALIAS)) - { - /* - * Dereference an existing alias so that we don't create a chain - * of aliases. With this code, we guarantee that an alias is - * always exactly one level of indirection away from the - * actual aliased name. - */ - TargetNode = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, TargetNode->Object); - } - - /* - * For objects that can never change (i.e., the NS node will - * permanently point to the same object), we can simply attach - * the object to the new NS node. For other objects (such as - * Integers, buffers, etc.), we have to point the Alias node - * to the original Node. - */ - switch (TargetNode->Type) - { - case ACPI_TYPE_INTEGER: - case ACPI_TYPE_STRING: - case ACPI_TYPE_BUFFER: - case ACPI_TYPE_PACKAGE: - case ACPI_TYPE_BUFFER_FIELD: - - /* - * The new alias has the type ALIAS and points to the original - * NS node, not the object itself. This is because for these - * types, the object can change dynamically via a Store. - */ - AliasNode->Type = ACPI_TYPE_LOCAL_ALIAS; - AliasNode->Object = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, TargetNode); - break; - - case ACPI_TYPE_METHOD: - - /* - * The new alias has the type ALIAS and points to the original - * NS node, not the object itself. This is because for these - * types, the object can change dynamically via a Store. - */ - AliasNode->Type = ACPI_TYPE_LOCAL_METHOD_ALIAS; - AliasNode->Object = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, TargetNode); - break; - - default: - - /* Attach the original source object to the new Alias Node */ - - /* - * The new alias assumes the type of the target, and it points - * to the same object. The reference count of the object has an - * additional reference to prevent deletion out from under either the - * target node or the alias Node - */ - Status = AcpiNsAttachObject (AliasNode, - AcpiNsGetAttachedObject (TargetNode), TargetNode->Type); - break; - } - - /* Since both operands are Nodes, we don't need to delete them */ - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExCreateEvent - * - * PARAMETERS: WalkState - Current state - * - * RETURN: Status - * - * DESCRIPTION: Create a new event object - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExCreateEvent ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *ObjDesc; - - - ACPI_FUNCTION_TRACE (ExCreateEvent); - - - ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_EVENT); - if (!ObjDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* - * Create the actual OS semaphore, with zero initial units -- meaning - * that the event is created in an unsignalled state - */ - Status = AcpiOsCreateSemaphore (ACPI_NO_UNIT_LIMIT, 0, - &ObjDesc->Event.OsSemaphore); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* Attach object to the Node */ - - Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) WalkState->Operands[0], - ObjDesc, ACPI_TYPE_EVENT); - -Cleanup: - /* - * Remove local reference to the object (on error, will cause deletion - * of both object and semaphore if present.) - */ - AcpiUtRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExCreateMutex - * - * PARAMETERS: WalkState - Current state - * - * RETURN: Status - * - * DESCRIPTION: Create a new mutex object - * - * Mutex (Name[0], SyncLevel[1]) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExCreateMutex ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - ACPI_OPERAND_OBJECT *ObjDesc; - - - ACPI_FUNCTION_TRACE_PTR (ExCreateMutex, ACPI_WALK_OPERANDS); - - - /* Create the new mutex object */ - - ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_MUTEX); - if (!ObjDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* Create the actual OS Mutex */ - - Status = AcpiOsCreateMutex (&ObjDesc->Mutex.OsMutex); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* Init object and attach to NS node */ - - ObjDesc->Mutex.SyncLevel = (UINT8) WalkState->Operands[1]->Integer.Value; - ObjDesc->Mutex.Node = (ACPI_NAMESPACE_NODE *) WalkState->Operands[0]; - - Status = AcpiNsAttachObject (ObjDesc->Mutex.Node, ObjDesc, ACPI_TYPE_MUTEX); - - -Cleanup: - /* - * Remove local reference to the object (on error, will cause deletion - * of both object and semaphore if present.) - */ - AcpiUtRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExCreateRegion - * - * PARAMETERS: AmlStart - Pointer to the region declaration AML - * AmlLength - Max length of the declaration AML - * RegionSpace - SpaceID for the region - * WalkState - Current state - * - * RETURN: Status - * - * DESCRIPTION: Create a new operation region object - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExCreateRegion ( - UINT8 *AmlStart, - UINT32 AmlLength, - UINT8 RegionSpace, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_NAMESPACE_NODE *Node; - ACPI_OPERAND_OBJECT *RegionObj2; - - - ACPI_FUNCTION_TRACE (ExCreateRegion); - - - /* Get the Namespace Node */ - - Node = WalkState->Op->Common.Node; - - /* - * If the region object is already attached to this node, - * just return - */ - if (AcpiNsGetAttachedObject (Node)) - { - return_ACPI_STATUS (AE_OK); - } - - /* - * Space ID must be one of the predefined IDs, or in the user-defined - * range - */ - if ((RegionSpace >= ACPI_NUM_PREDEFINED_REGIONS) && - (RegionSpace < ACPI_USER_REGION_BEGIN)) - { - ACPI_ERROR ((AE_INFO, "Invalid AddressSpace type %X", RegionSpace)); - return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "Region Type - %s (%X)\n", - AcpiUtGetRegionName (RegionSpace), RegionSpace)); - - /* Create the region descriptor */ - - ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_REGION); - if (!ObjDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* - * Remember location in AML stream of address & length - * operands since they need to be evaluated at run time. - */ - RegionObj2 = ObjDesc->Common.NextObject; - RegionObj2->Extra.AmlStart = AmlStart; - RegionObj2->Extra.AmlLength = AmlLength; - - /* Init the region from the operands */ - - ObjDesc->Region.SpaceId = RegionSpace; - ObjDesc->Region.Address = 0; - ObjDesc->Region.Length = 0; - ObjDesc->Region.Node = Node; - - /* Install the new region object in the parent Node */ - - Status = AcpiNsAttachObject (Node, ObjDesc, ACPI_TYPE_REGION); - - -Cleanup: - - /* Remove local reference to the object */ - - AcpiUtRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExCreateTableRegion - * - * PARAMETERS: WalkState - Current state - * - * RETURN: Status - * - * DESCRIPTION: Create a new DataTableRegion object - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExCreateTableRegion ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_NAMESPACE_NODE *Node; - ACPI_OPERAND_OBJECT *RegionObj2; - ACPI_NATIVE_UINT TableIndex; - ACPI_TABLE_HEADER *Table; - - - ACPI_FUNCTION_TRACE (ExCreateTableRegion); - - - /* Get the Node from the object stack */ - - Node = WalkState->Op->Common.Node; - - /* - * If the region object is already attached to this node, - * just return - */ - if (AcpiNsGetAttachedObject (Node)) - { - return_ACPI_STATUS (AE_OK); - } - - /* Find the ACPI table */ - - Status = AcpiTbFindTable (Operand[1]->String.Pointer, - Operand[2]->String.Pointer, Operand[3]->String.Pointer, - &TableIndex); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Create the region descriptor */ - - ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_REGION); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - RegionObj2 = ObjDesc->Common.NextObject; - RegionObj2->Extra.RegionContext = NULL; - - Status = AcpiGetTableByIndex (TableIndex, &Table); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Init the region from the operands */ - - ObjDesc->Region.SpaceId = REGION_DATA_TABLE; - ObjDesc->Region.Address = (ACPI_PHYSICAL_ADDRESS) ACPI_TO_INTEGER (Table); - ObjDesc->Region.Length = Table->Length; - ObjDesc->Region.Node = Node; - ObjDesc->Region.Flags = AOPOBJ_DATA_VALID; - - /* Install the new region object in the parent Node */ - - Status = AcpiNsAttachObject (Node, ObjDesc, ACPI_TYPE_REGION); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - Status = AcpiEvInitializeRegion (ObjDesc, FALSE); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_NOT_EXIST) - { - Status = AE_OK; - } - else - { - goto Cleanup; - } - } - - ObjDesc->Region.Flags |= AOPOBJ_SETUP_COMPLETE; - - -Cleanup: - - /* Remove local reference to the object */ - - AcpiUtRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExCreateProcessor - * - * PARAMETERS: WalkState - Current state - * - * RETURN: Status - * - * DESCRIPTION: Create a new processor object and populate the fields - * - * Processor (Name[0], CpuID[1], PblockAddr[2], PblockLength[3]) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExCreateProcessor ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE_PTR (ExCreateProcessor, WalkState); - - - /* Create the processor object */ - - ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_PROCESSOR); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Initialize the processor object from the operands */ - - ObjDesc->Processor.ProcId = (UINT8) Operand[1]->Integer.Value; - ObjDesc->Processor.Length = (UINT8) Operand[3]->Integer.Value; - ObjDesc->Processor.Address = (ACPI_IO_ADDRESS) Operand[2]->Integer.Value; - - /* Install the processor object in the parent Node */ - - Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) Operand[0], - ObjDesc, ACPI_TYPE_PROCESSOR); - - /* Remove local reference to the object */ - - AcpiUtRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExCreatePowerResource - * - * PARAMETERS: WalkState - Current state - * - * RETURN: Status - * - * DESCRIPTION: Create a new PowerResource object and populate the fields - * - * PowerResource (Name[0], SystemLevel[1], ResourceOrder[2]) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExCreatePowerResource ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *ObjDesc; - - - ACPI_FUNCTION_TRACE_PTR (ExCreatePowerResource, WalkState); - - - /* Create the power resource object */ - - ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_POWER); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Initialize the power object from the operands */ - - ObjDesc->PowerResource.SystemLevel = (UINT8) Operand[1]->Integer.Value; - ObjDesc->PowerResource.ResourceOrder = (UINT16) Operand[2]->Integer.Value; - - /* Install the power resource object in the parent Node */ - - Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) Operand[0], - ObjDesc, ACPI_TYPE_POWER); - - /* Remove local reference to the object */ - - AcpiUtRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); -} -#endif - - -/******************************************************************************* - * - * FUNCTION: AcpiExCreateMethod - * - * PARAMETERS: AmlStart - First byte of the method's AML - * AmlLength - AML byte count for this method - * WalkState - Current state - * - * RETURN: Status - * - * DESCRIPTION: Create a new method object - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExCreateMethod ( - UINT8 *AmlStart, - UINT32 AmlLength, - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - UINT8 MethodFlags; - - - ACPI_FUNCTION_TRACE_PTR (ExCreateMethod, WalkState); - - - /* Create a new method object */ - - ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_METHOD); - if (!ObjDesc) - { - Status = AE_NO_MEMORY; - goto Exit; - } - - /* Save the method's AML pointer and length */ - - ObjDesc->Method.AmlStart = AmlStart; - ObjDesc->Method.AmlLength = AmlLength; - - /* - * Disassemble the method flags. Split off the Arg Count - * for efficiency - */ - MethodFlags = (UINT8) Operand[1]->Integer.Value; - - ObjDesc->Method.MethodFlags = (UINT8) (MethodFlags & ~AML_METHOD_ARG_COUNT); - ObjDesc->Method.ParamCount = (UINT8) (MethodFlags & AML_METHOD_ARG_COUNT); - - /* - * Get the SyncLevel. If method is serialized, a mutex will be - * created for this method when it is parsed. - */ - if (MethodFlags & AML_METHOD_SERIALIZED) - { - /* - * ACPI 1.0: SyncLevel = 0 - * ACPI 2.0: SyncLevel = SyncLevel in method declaration - */ - ObjDesc->Method.SyncLevel = (UINT8) - ((MethodFlags & AML_METHOD_SYNCH_LEVEL) >> 4); - } - - /* Attach the new object to the method Node */ - - Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) Operand[0], - ObjDesc, ACPI_TYPE_METHOD); - - /* Remove local reference to the object */ - - AcpiUtRemoveReference (ObjDesc); - -Exit: - /* Remove a reference to the operand */ - - AcpiUtRemoveReference (Operand[1]); - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exdump.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exdump.c deleted file mode 100644 index f60c6723fe..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exdump.c +++ /dev/null @@ -1,1225 +0,0 @@ -/****************************************************************************** - * - * Module Name: exdump - Interpreter debug output routines - * $Revision: 1.200 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __EXDUMP_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acparser.h" - -#define _COMPONENT ACPI_EXECUTER - ACPI_MODULE_NAME ("exdump") - -/* - * The following routines are used for debug output only - */ -#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) - -/* Local prototypes */ - -static void -AcpiExOutString ( - char *Title, - char *Value); - -static void -AcpiExOutPointer ( - char *Title, - void *Value); - -static void -AcpiExDumpObject ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_EXDUMP_INFO *Info); - -static void -AcpiExDumpReferenceObj ( - ACPI_OPERAND_OBJECT *ObjDesc); - -static void -AcpiExDumpPackageObj ( - ACPI_OPERAND_OBJECT *ObjDesc, - UINT32 Level, - UINT32 Index); - - -/******************************************************************************* - * - * Object Descriptor info tables - * - * Note: The first table entry must be an INIT opcode and must contain - * the table length (number of table entries) - * - ******************************************************************************/ - -static ACPI_EXDUMP_INFO AcpiExDumpInteger[2] = -{ - {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpInteger), NULL}, - {ACPI_EXD_UINT64, ACPI_EXD_OFFSET (Integer.Value), "Value"} -}; - -static ACPI_EXDUMP_INFO AcpiExDumpString[4] = -{ - {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpString), NULL}, - {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (String.Length), "Length"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (String.Pointer), "Pointer"}, - {ACPI_EXD_STRING, 0, NULL} -}; - -static ACPI_EXDUMP_INFO AcpiExDumpBuffer[5] = -{ - {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpBuffer), NULL}, - {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Buffer.Length), "Length"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Buffer.Pointer), "Pointer"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Buffer.Node), "Parent Node"}, - {ACPI_EXD_BUFFER, 0, NULL} -}; - -static ACPI_EXDUMP_INFO AcpiExDumpPackage[5] = -{ - {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpPackage), NULL}, - {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Package.Flags), "Flags"}, - {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Package.Count), "Elements"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Package.Elements), "Element List"}, - {ACPI_EXD_PACKAGE, 0, NULL} -}; - -static ACPI_EXDUMP_INFO AcpiExDumpDevice[4] = -{ - {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpDevice), NULL}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Device.Handler), "Handler"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Device.SystemNotify), "System Notify"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Device.DeviceNotify), "Device Notify"} -}; - -static ACPI_EXDUMP_INFO AcpiExDumpEvent[2] = -{ - {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpEvent), NULL}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Event.OsSemaphore), "OsSemaphore"} -}; - -static ACPI_EXDUMP_INFO AcpiExDumpMethod[8] = -{ - {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpMethod), NULL}, - {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.ParamCount), "ParamCount"}, - {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.SyncLevel), "Sync Level"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Method.Mutex), "Mutex"}, - {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.OwnerId), "Owner Id"}, - {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.ThreadCount), "Thread Count"}, - {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Method.AmlLength), "Aml Length"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Method.AmlStart), "Aml Start"} -}; - -static ACPI_EXDUMP_INFO AcpiExDumpMutex[5] = -{ - {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpMutex), NULL}, - {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Mutex.SyncLevel), "Sync Level"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Mutex.OwnerThread), "Owner Thread"}, - {ACPI_EXD_UINT16, ACPI_EXD_OFFSET (Mutex.AcquisitionDepth), "Acquire Depth"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Mutex.OsMutex), "OsMutex"} -}; - -static ACPI_EXDUMP_INFO AcpiExDumpRegion[7] = -{ - {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpRegion), NULL}, - {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Region.SpaceId), "Space Id"}, - {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Region.Flags), "Flags"}, - {ACPI_EXD_ADDRESS, ACPI_EXD_OFFSET (Region.Address), "Address"}, - {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Region.Length), "Length"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Region.Handler), "Handler"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Region.Next), "Next"} -}; - -static ACPI_EXDUMP_INFO AcpiExDumpPower[5] = -{ - {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpPower), NULL}, - {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (PowerResource.SystemLevel), "System Level"}, - {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (PowerResource.ResourceOrder), "Resource Order"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (PowerResource.SystemNotify), "System Notify"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (PowerResource.DeviceNotify), "Device Notify"} -}; - -static ACPI_EXDUMP_INFO AcpiExDumpProcessor[7] = -{ - {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpProcessor), NULL}, - {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Processor.ProcId), "Processor ID"}, - {ACPI_EXD_UINT8 , ACPI_EXD_OFFSET (Processor.Length), "Length"}, - {ACPI_EXD_ADDRESS, ACPI_EXD_OFFSET (Processor.Address), "Address"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Processor.SystemNotify), "System Notify"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Processor.DeviceNotify), "Device Notify"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Processor.Handler), "Handler"} -}; - -static ACPI_EXDUMP_INFO AcpiExDumpThermal[4] = -{ - {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpThermal), NULL}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (ThermalZone.SystemNotify), "System Notify"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (ThermalZone.DeviceNotify), "Device Notify"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (ThermalZone.Handler), "Handler"} -}; - -static ACPI_EXDUMP_INFO AcpiExDumpBufferField[3] = -{ - {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpBufferField), NULL}, - {ACPI_EXD_FIELD, 0, NULL}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (BufferField.BufferObj), "Buffer Object"} -}; - -static ACPI_EXDUMP_INFO AcpiExDumpRegionField[3] = -{ - {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpRegionField), NULL}, - {ACPI_EXD_FIELD, 0, NULL}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Field.RegionObj), "Region Object"} -}; - -static ACPI_EXDUMP_INFO AcpiExDumpBankField[5] = -{ - {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpBankField), NULL}, - {ACPI_EXD_FIELD, 0, NULL}, - {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (BankField.Value), "Value"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (BankField.RegionObj), "Region Object"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (BankField.BankObj), "Bank Object"} -}; - -static ACPI_EXDUMP_INFO AcpiExDumpIndexField[5] = -{ - {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpBankField), NULL}, - {ACPI_EXD_FIELD, 0, NULL}, - {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (IndexField.Value), "Value"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (IndexField.IndexObj), "Index Object"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (IndexField.DataObj), "Data Object"} -}; - - -static ACPI_EXDUMP_INFO AcpiExDumpReference[7] = -{ - {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpReference), NULL}, - {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Reference.TargetType), "Target Type"}, - {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Reference.Offset), "Offset"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Reference.Object), "Object Desc"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Reference.Node), "Node"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Reference.Where), "Where"}, - {ACPI_EXD_REFERENCE,0, NULL} -}; - -static ACPI_EXDUMP_INFO AcpiExDumpAddressHandler[6] = -{ - {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpAddressHandler), NULL}, - {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (AddressSpace.SpaceId), "Space Id"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (AddressSpace.Next), "Next"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (AddressSpace.RegionList), "Region List"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (AddressSpace.Node), "Node"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (AddressSpace.Context), "Context"} -}; - -static ACPI_EXDUMP_INFO AcpiExDumpNotify[3] = -{ - {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpNotify), NULL}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Notify.Node), "Node"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Notify.Context), "Context"} -}; - - -/* Miscellaneous tables */ - -static ACPI_EXDUMP_INFO AcpiExDumpCommon[4] = -{ - {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpCommon), NULL}, - {ACPI_EXD_TYPE , 0, NULL}, - {ACPI_EXD_UINT16, ACPI_EXD_OFFSET (Common.ReferenceCount), "Reference Count"}, - {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Common.Flags), "Flags"} -}; - - -static ACPI_EXDUMP_INFO AcpiExDumpFieldCommon[7] = -{ - {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpFieldCommon), NULL}, - {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (CommonField.FieldFlags), "Field Flags"}, - {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (CommonField.AccessByteWidth), "Access Byte Width"}, - {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (CommonField.BitLength), "Bit Length"}, - {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (CommonField.StartFieldBitOffset),"Field Bit Offset"}, - {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (CommonField.BaseByteOffset), "Base Byte Offset"}, - {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (CommonField.Node), "Parent Node"} -}; - -static ACPI_EXDUMP_INFO AcpiExDumpNode[5] = -{ - {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpNode), NULL}, - {ACPI_EXD_UINT8, ACPI_EXD_NSOFFSET (Flags), "Flags"}, - {ACPI_EXD_UINT8, ACPI_EXD_NSOFFSET (OwnerId), "Owner Id"}, - {ACPI_EXD_POINTER, ACPI_EXD_NSOFFSET (Child), "Child List"}, - {ACPI_EXD_POINTER, ACPI_EXD_NSOFFSET (Peer), "Next Peer"} -}; - - -/* Dispatch table, indexed by object type */ - -static ACPI_EXDUMP_INFO *AcpiExDumpInfo[] = -{ - NULL, - AcpiExDumpInteger, - AcpiExDumpString, - AcpiExDumpBuffer, - AcpiExDumpPackage, - NULL, - AcpiExDumpDevice, - AcpiExDumpEvent, - AcpiExDumpMethod, - AcpiExDumpMutex, - AcpiExDumpRegion, - AcpiExDumpPower, - AcpiExDumpProcessor, - AcpiExDumpThermal, - AcpiExDumpBufferField, - NULL, - NULL, - AcpiExDumpRegionField, - AcpiExDumpBankField, - AcpiExDumpIndexField, - AcpiExDumpReference, - NULL, - NULL, - AcpiExDumpNotify, - AcpiExDumpAddressHandler, - NULL, - NULL, - NULL -}; - - -/******************************************************************************* - * - * FUNCTION: AcpiExDumpObject - * - * PARAMETERS: ObjDesc - Descriptor to dump - * Info - Info table corresponding to this object - * type - * - * RETURN: None - * - * DESCRIPTION: Walk the info table for this object - * - ******************************************************************************/ - -static void -AcpiExDumpObject ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_EXDUMP_INFO *Info) -{ - UINT8 *Target; - char *Name; - UINT8 Count; - - - if (!Info) - { - AcpiOsPrintf ( - "ExDumpObject: Display not implemented for object type %s\n", - AcpiUtGetObjectTypeName (ObjDesc)); - return; - } - - /* First table entry must contain the table length (# of table entries) */ - - Count = Info->Offset; - - while (Count) - { - Target = ACPI_ADD_PTR (UINT8, ObjDesc, Info->Offset); - Name = Info->Name; - - switch (Info->Opcode) - { - case ACPI_EXD_INIT: - break; - - case ACPI_EXD_TYPE: - AcpiExOutString ("Type", AcpiUtGetObjectTypeName (ObjDesc)); - break; - - case ACPI_EXD_UINT8: - - AcpiOsPrintf ("%20s : %2.2X\n", Name, *Target); - break; - - case ACPI_EXD_UINT16: - - AcpiOsPrintf ("%20s : %4.4X\n", Name, ACPI_GET16 (Target)); - break; - - case ACPI_EXD_UINT32: - - AcpiOsPrintf ("%20s : %8.8X\n", Name, ACPI_GET32 (Target)); - break; - - case ACPI_EXD_UINT64: - - AcpiOsPrintf ("%20s : %8.8X%8.8X\n", "Value", - ACPI_FORMAT_UINT64 (ACPI_GET64 (Target))); - break; - - case ACPI_EXD_POINTER: - case ACPI_EXD_ADDRESS: - - AcpiExOutPointer (Name, *ACPI_CAST_PTR (void *, Target)); - break; - - case ACPI_EXD_STRING: - - AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX); - AcpiOsPrintf ("\n"); - break; - - case ACPI_EXD_BUFFER: - - ACPI_DUMP_BUFFER (ObjDesc->Buffer.Pointer, ObjDesc->Buffer.Length); - break; - - case ACPI_EXD_PACKAGE: - - /* Dump the package contents */ - - AcpiOsPrintf ("\nPackage Contents:\n"); - AcpiExDumpPackageObj (ObjDesc, 0, 0); - break; - - case ACPI_EXD_FIELD: - - AcpiExDumpObject (ObjDesc, AcpiExDumpFieldCommon); - break; - - case ACPI_EXD_REFERENCE: - - AcpiExOutString ("Opcode", - (AcpiPsGetOpcodeInfo (ObjDesc->Reference.Opcode))->Name); - AcpiExDumpReferenceObj (ObjDesc); - break; - - default: - AcpiOsPrintf ("**** Invalid table opcode [%X] ****\n", Info->Opcode); - return; - } - - Info++; - Count--; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExDumpOperand - * - * PARAMETERS: *ObjDesc - Pointer to entry to be dumped - * Depth - Current nesting depth - * - * RETURN: None - * - * DESCRIPTION: Dump an operand object - * - ******************************************************************************/ - -void -AcpiExDumpOperand ( - ACPI_OPERAND_OBJECT *ObjDesc, - UINT32 Depth) -{ - UINT32 Length; - UINT32 Index; - - - ACPI_FUNCTION_NAME (ExDumpOperand) - - - if (!((ACPI_LV_EXEC & AcpiDbgLevel) && (_COMPONENT & AcpiDbgLayer))) - { - return; - } - - if (!ObjDesc) - { - /* This could be a null element of a package */ - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Null Object Descriptor\n")); - return; - } - - if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p Namespace Node: ", ObjDesc)); - ACPI_DUMP_ENTRY (ObjDesc, ACPI_LV_EXEC); - return; - } - - if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "%p is not a node or operand object: [%s]\n", - ObjDesc, AcpiUtGetDescriptorName (ObjDesc))); - ACPI_DUMP_BUFFER (ObjDesc, sizeof (ACPI_OPERAND_OBJECT)); - return; - } - - /* ObjDesc is a valid object */ - - if (Depth > 0) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%*s[%u] %p ", - Depth, " ", Depth, ObjDesc)); - } - else - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p ", ObjDesc)); - } - - /* Decode object type */ - - switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) - { - case ACPI_TYPE_LOCAL_REFERENCE: - - switch (ObjDesc->Reference.Opcode) - { - case AML_DEBUG_OP: - - AcpiOsPrintf ("Reference: Debug\n"); - break; - - - case AML_NAME_OP: - - ACPI_DUMP_PATHNAME (ObjDesc->Reference.Object, - "Reference: Name: ", ACPI_LV_INFO, _COMPONENT); - ACPI_DUMP_ENTRY (ObjDesc->Reference.Object, ACPI_LV_INFO); - break; - - - case AML_INDEX_OP: - - AcpiOsPrintf ("Reference: Index %p\n", - ObjDesc->Reference.Object); - break; - - - case AML_REF_OF_OP: - - AcpiOsPrintf ("Reference: (RefOf) %p\n", - ObjDesc->Reference.Object); - break; - - - case AML_ARG_OP: - - AcpiOsPrintf ("Reference: Arg%d", - ObjDesc->Reference.Offset); - - if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_INTEGER) - { - /* Value is an Integer */ - - AcpiOsPrintf (" value is [%8.8X%8.8x]", - ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value)); - } - - AcpiOsPrintf ("\n"); - break; - - - case AML_LOCAL_OP: - - AcpiOsPrintf ("Reference: Local%d", - ObjDesc->Reference.Offset); - - if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_INTEGER) - { - - /* Value is an Integer */ - - AcpiOsPrintf (" value is [%8.8X%8.8x]", - ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value)); - } - - AcpiOsPrintf ("\n"); - break; - - - case AML_INT_NAMEPATH_OP: - - AcpiOsPrintf ("Reference.Node->Name %X\n", - ObjDesc->Reference.Node->Name.Integer); - break; - - - default: - - /* Unknown opcode */ - - AcpiOsPrintf ("Unknown Reference opcode=%X\n", - ObjDesc->Reference.Opcode); - break; - - } - break; - - - case ACPI_TYPE_BUFFER: - - AcpiOsPrintf ("Buffer len %X @ %p\n", - ObjDesc->Buffer.Length, ObjDesc->Buffer.Pointer); - - Length = ObjDesc->Buffer.Length; - if (Length > 64) - { - Length = 64; - } - - /* Debug only -- dump the buffer contents */ - - if (ObjDesc->Buffer.Pointer) - { - AcpiOsPrintf ("Buffer Contents: "); - - for (Index = 0; Index < Length; Index++) - { - AcpiOsPrintf (" %02x", ObjDesc->Buffer.Pointer[Index]); - } - AcpiOsPrintf ("\n"); - } - break; - - - case ACPI_TYPE_INTEGER: - - AcpiOsPrintf ("Integer %8.8X%8.8X\n", - ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value)); - break; - - - case ACPI_TYPE_PACKAGE: - - AcpiOsPrintf ("Package [Len %X] ElementArray %p\n", - ObjDesc->Package.Count, ObjDesc->Package.Elements); - - /* - * If elements exist, package element pointer is valid, - * and debug_level exceeds 1, dump package's elements. - */ - if (ObjDesc->Package.Count && - ObjDesc->Package.Elements && - AcpiDbgLevel > 1) - { - for (Index = 0; Index < ObjDesc->Package.Count; Index++) - { - AcpiExDumpOperand (ObjDesc->Package.Elements[Index], Depth+1); - } - } - break; - - - case ACPI_TYPE_REGION: - - AcpiOsPrintf ("Region %s (%X)", - AcpiUtGetRegionName (ObjDesc->Region.SpaceId), - ObjDesc->Region.SpaceId); - - /* - * If the address and length have not been evaluated, - * don't print them. - */ - if (!(ObjDesc->Region.Flags & AOPOBJ_DATA_VALID)) - { - AcpiOsPrintf ("\n"); - } - else - { - AcpiOsPrintf (" base %8.8X%8.8X Length %X\n", - ACPI_FORMAT_UINT64 (ObjDesc->Region.Address), - ObjDesc->Region.Length); - } - break; - - - case ACPI_TYPE_STRING: - - AcpiOsPrintf ("String length %X @ %p ", - ObjDesc->String.Length, - ObjDesc->String.Pointer); - - AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX); - AcpiOsPrintf ("\n"); - break; - - - case ACPI_TYPE_LOCAL_BANK_FIELD: - - AcpiOsPrintf ("BankField\n"); - break; - - - case ACPI_TYPE_LOCAL_REGION_FIELD: - - AcpiOsPrintf ( - "RegionField: Bits=%X AccWidth=%X Lock=%X Update=%X at byte=%X bit=%X of below:\n", - ObjDesc->Field.BitLength, - ObjDesc->Field.AccessByteWidth, - ObjDesc->Field.FieldFlags & AML_FIELD_LOCK_RULE_MASK, - ObjDesc->Field.FieldFlags & AML_FIELD_UPDATE_RULE_MASK, - ObjDesc->Field.BaseByteOffset, - ObjDesc->Field.StartFieldBitOffset); - - AcpiExDumpOperand (ObjDesc->Field.RegionObj, Depth+1); - break; - - - case ACPI_TYPE_LOCAL_INDEX_FIELD: - - AcpiOsPrintf ("IndexField\n"); - break; - - - case ACPI_TYPE_BUFFER_FIELD: - - AcpiOsPrintf ( - "BufferField: %X bits at byte %X bit %X of\n", - ObjDesc->BufferField.BitLength, - ObjDesc->BufferField.BaseByteOffset, - ObjDesc->BufferField.StartFieldBitOffset); - - if (!ObjDesc->BufferField.BufferObj) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "*NULL*\n")); - } - else if (ACPI_GET_OBJECT_TYPE (ObjDesc->BufferField.BufferObj) != - ACPI_TYPE_BUFFER) - { - AcpiOsPrintf ("*not a Buffer*\n"); - } - else - { - AcpiExDumpOperand (ObjDesc->BufferField.BufferObj, Depth+1); - } - break; - - - case ACPI_TYPE_EVENT: - - AcpiOsPrintf ("Event\n"); - break; - - - case ACPI_TYPE_METHOD: - - AcpiOsPrintf ("Method(%X) @ %p:%X\n", - ObjDesc->Method.ParamCount, - ObjDesc->Method.AmlStart, - ObjDesc->Method.AmlLength); - break; - - - case ACPI_TYPE_MUTEX: - - AcpiOsPrintf ("Mutex\n"); - break; - - - case ACPI_TYPE_DEVICE: - - AcpiOsPrintf ("Device\n"); - break; - - - case ACPI_TYPE_POWER: - - AcpiOsPrintf ("Power\n"); - break; - - - case ACPI_TYPE_PROCESSOR: - - AcpiOsPrintf ("Processor\n"); - break; - - - case ACPI_TYPE_THERMAL: - - AcpiOsPrintf ("Thermal\n"); - break; - - - default: - /* Unknown Type */ - - AcpiOsPrintf ("Unknown Type %X\n", ACPI_GET_OBJECT_TYPE (ObjDesc)); - break; - } - - return; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExDumpOperands - * - * PARAMETERS: Operands - Operand list - * InterpreterMode - Load or Exec - * Ident - Identification - * NumLevels - # of stack entries to dump above line - * Note - Output notation - * ModuleName - Caller's module name - * LineNumber - Caller's invocation line number - * - * DESCRIPTION: Dump the object stack - * - ******************************************************************************/ - -void -AcpiExDumpOperands ( - ACPI_OPERAND_OBJECT **Operands, - ACPI_INTERPRETER_MODE InterpreterMode, - char *Ident, - UINT32 NumLevels, - char *Note, - char *ModuleName, - UINT32 LineNumber) -{ - ACPI_NATIVE_UINT i; - - - ACPI_FUNCTION_NAME (ExDumpOperands); - - - if (!Ident) - { - Ident = "?"; - } - - if (!Note) - { - Note = "?"; - } - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "************* Operand Stack Contents (Opcode [%s], %d Operands)\n", - Ident, NumLevels)); - - if (NumLevels == 0) - { - NumLevels = 1; - } - - /* Dump the operand stack starting at the top */ - - for (i = 0; NumLevels > 0; i--, NumLevels--) - { - AcpiExDumpOperand (Operands[i], 0); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "************* Operand Stack dump from %s(%d), %s\n", - ModuleName, LineNumber, Note)); - return; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExOut* functions - * - * PARAMETERS: Title - Descriptive text - * Value - Value to be displayed - * - * DESCRIPTION: Object dump output formatting functions. These functions - * reduce the number of format strings required and keeps them - * all in one place for easy modification. - * - ******************************************************************************/ - -static void -AcpiExOutString ( - char *Title, - char *Value) -{ - AcpiOsPrintf ("%20s : %s\n", Title, Value); -} - -static void -AcpiExOutPointer ( - char *Title, - void *Value) -{ - AcpiOsPrintf ("%20s : %p\n", Title, Value); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExDumpNamespaceNode - * - * PARAMETERS: Node - Descriptor to dump - * Flags - Force display if TRUE - * - * DESCRIPTION: Dumps the members of the given.Node - * - ******************************************************************************/ - -void -AcpiExDumpNamespaceNode ( - ACPI_NAMESPACE_NODE *Node, - UINT32 Flags) -{ - - ACPI_FUNCTION_ENTRY (); - - - if (!Flags) - { - if (!((ACPI_LV_OBJECTS & AcpiDbgLevel) && (_COMPONENT & AcpiDbgLayer))) - { - return; - } - } - - AcpiOsPrintf ("%20s : %4.4s\n", "Name", AcpiUtGetNodeName (Node)); - AcpiExOutString ("Type", AcpiUtGetTypeName (Node->Type)); - AcpiExOutPointer ("Attached Object", AcpiNsGetAttachedObject (Node)); - AcpiExOutPointer ("Parent", AcpiNsGetParentNode (Node)); - - AcpiExDumpObject (ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Node), - AcpiExDumpNode); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExDumpReferenceObj - * - * PARAMETERS: Object - Descriptor to dump - * - * DESCRIPTION: Dumps a reference object - * - ******************************************************************************/ - -static void -AcpiExDumpReferenceObj ( - ACPI_OPERAND_OBJECT *ObjDesc) -{ - ACPI_BUFFER RetBuf; - ACPI_STATUS Status; - - - RetBuf.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - - if (ObjDesc->Reference.Opcode == AML_INT_NAMEPATH_OP) - { - AcpiOsPrintf ("Named Object %p ", ObjDesc->Reference.Node); - - Status = AcpiNsHandleToPathname (ObjDesc->Reference.Node, &RetBuf); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not convert name to pathname\n"); - } - else - { - AcpiOsPrintf ("%s\n", (char *) RetBuf.Pointer); - ACPI_FREE (RetBuf.Pointer); - } - } - else if (ObjDesc->Reference.Object) - { - AcpiOsPrintf ("\nReferenced Object: %p\n", ObjDesc->Reference.Object); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExDumpPackageObj - * - * PARAMETERS: ObjDesc - Descriptor to dump - * Level - Indentation Level - * Index - Package index for this object - * - * DESCRIPTION: Dumps the elements of the package - * - ******************************************************************************/ - -static void -AcpiExDumpPackageObj ( - ACPI_OPERAND_OBJECT *ObjDesc, - UINT32 Level, - UINT32 Index) -{ - UINT32 i; - - - /* Indentation and index output */ - - if (Level > 0) - { - for (i = 0; i < Level; i++) - { - AcpiOsPrintf (" "); - } - - AcpiOsPrintf ("[%.2d] ", Index); - } - - AcpiOsPrintf ("%p ", ObjDesc); - - /* Null package elements are allowed */ - - if (!ObjDesc) - { - AcpiOsPrintf ("[Null Object]\n"); - return; - } - - /* Packages may only contain a few object types */ - - switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) - { - case ACPI_TYPE_INTEGER: - - AcpiOsPrintf ("[Integer] = %8.8X%8.8X\n", - ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value)); - break; - - - case ACPI_TYPE_STRING: - - AcpiOsPrintf ("[String] Value: "); - for (i = 0; i < ObjDesc->String.Length; i++) - { - AcpiOsPrintf ("%c", ObjDesc->String.Pointer[i]); - } - AcpiOsPrintf ("\n"); - break; - - - case ACPI_TYPE_BUFFER: - - AcpiOsPrintf ("[Buffer] Length %.2X = ", ObjDesc->Buffer.Length); - if (ObjDesc->Buffer.Length) - { - AcpiUtDumpBuffer (ACPI_CAST_PTR (UINT8, ObjDesc->Buffer.Pointer), - ObjDesc->Buffer.Length, DB_DWORD_DISPLAY, _COMPONENT); - } - else - { - AcpiOsPrintf ("\n"); - } - break; - - - case ACPI_TYPE_PACKAGE: - - AcpiOsPrintf ("[Package] Contains %d Elements:\n", - ObjDesc->Package.Count); - - for (i = 0; i < ObjDesc->Package.Count; i++) - { - AcpiExDumpPackageObj (ObjDesc->Package.Elements[i], Level+1, i); - } - break; - - - case ACPI_TYPE_LOCAL_REFERENCE: - - AcpiOsPrintf ("[Object Reference] "); - AcpiExDumpReferenceObj (ObjDesc); - break; - - - default: - - AcpiOsPrintf ("[Unknown Type] %X\n", ACPI_GET_OBJECT_TYPE (ObjDesc)); - break; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExDumpObjectDescriptor - * - * PARAMETERS: ObjDesc - Descriptor to dump - * Flags - Force display if TRUE - * - * DESCRIPTION: Dumps the members of the object descriptor given. - * - ******************************************************************************/ - -void -AcpiExDumpObjectDescriptor ( - ACPI_OPERAND_OBJECT *ObjDesc, - UINT32 Flags) -{ - ACPI_FUNCTION_TRACE (ExDumpObjectDescriptor); - - - if (!ObjDesc) - { - return_VOID; - } - - if (!Flags) - { - if (!((ACPI_LV_OBJECTS & AcpiDbgLevel) && (_COMPONENT & AcpiDbgLayer))) - { - return_VOID; - } - } - - if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED) - { - AcpiExDumpNamespaceNode ((ACPI_NAMESPACE_NODE *) ObjDesc, Flags); - - AcpiOsPrintf ("\nAttached Object (%p):\n", - ((ACPI_NAMESPACE_NODE *) ObjDesc)->Object); - - AcpiExDumpObjectDescriptor ( - ((ACPI_NAMESPACE_NODE *) ObjDesc)->Object, Flags); - return_VOID; - } - - if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND) - { - AcpiOsPrintf ( - "ExDumpObjectDescriptor: %p is not an ACPI operand object: [%s]\n", - ObjDesc, AcpiUtGetDescriptorName (ObjDesc)); - return_VOID; - } - - if (ObjDesc->Common.Type > ACPI_TYPE_NS_NODE_MAX) - { - return_VOID; - } - - /* Common Fields */ - - AcpiExDumpObject (ObjDesc, AcpiExDumpCommon); - - /* Object-specific fields */ - - AcpiExDumpObject (ObjDesc, AcpiExDumpInfo[ObjDesc->Common.Type]); - return_VOID; -} - -#endif - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exfield.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exfield.c deleted file mode 100644 index b134302c8d..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exfield.c +++ /dev/null @@ -1,477 +0,0 @@ -/****************************************************************************** - * - * Module Name: exfield - ACPI AML (p-code) execution - field manipulation - * $Revision: 1.128 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __EXFIELD_C__ - -#include "acpi.h" -#include "acdispat.h" -#include "acinterp.h" - - -#define _COMPONENT ACPI_EXECUTER - ACPI_MODULE_NAME ("exfield") - - -/******************************************************************************* - * - * FUNCTION: AcpiExReadDataFromField - * - * PARAMETERS: WalkState - Current execution state - * ObjDesc - The named field - * RetBufferDesc - Where the return data object is stored - * - * RETURN: Status - * - * DESCRIPTION: Read from a named field. Returns either an Integer or a - * Buffer, depending on the size of the field. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExReadDataFromField ( - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT **RetBufferDesc) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *BufferDesc; - ACPI_SIZE Length; - void *Buffer; - BOOLEAN Locked; - - - ACPI_FUNCTION_TRACE_PTR (ExReadDataFromField, ObjDesc); - - - /* Parameter validation */ - - if (!ObjDesc) - { - return_ACPI_STATUS (AE_AML_NO_OPERAND); - } - if (!RetBufferDesc) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_BUFFER_FIELD) - { - /* - * If the BufferField arguments have not been previously evaluated, - * evaluate them now and save the results. - */ - if (!(ObjDesc->Common.Flags & AOPOBJ_DATA_VALID)) - { - Status = AcpiDsGetBufferFieldArguments (ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - } - else if ((ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_LOCAL_REGION_FIELD) && - (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS)) - { - /* - * This is an SMBus read. We must create a buffer to hold the data - * and directly access the region handler. - */ - BufferDesc = AcpiUtCreateBufferObject (ACPI_SMBUS_BUFFER_SIZE); - if (!BufferDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Lock entire transaction if requested */ - - Locked = AcpiExAcquireGlobalLock (ObjDesc->CommonField.FieldFlags); - - /* - * Perform the read. - * Note: Smbus protocol value is passed in upper 16-bits of Function - */ - Status = AcpiExAccessRegion (ObjDesc, 0, - ACPI_CAST_PTR (ACPI_INTEGER, BufferDesc->Buffer.Pointer), - ACPI_READ | (ObjDesc->Field.Attribute << 16)); - AcpiExReleaseGlobalLock (Locked); - goto Exit; - } - - /* - * Allocate a buffer for the contents of the field. - * - * If the field is larger than the size of an ACPI_INTEGER, create - * a BUFFER to hold it. Otherwise, use an INTEGER. This allows - * the use of arithmetic operators on the returned value if the - * field size is equal or smaller than an Integer. - * - * Note: Field.length is in bits. - */ - Length = (ACPI_SIZE) ACPI_ROUND_BITS_UP_TO_BYTES (ObjDesc->Field.BitLength); - if (Length > AcpiGbl_IntegerByteWidth) - { - /* Field is too large for an Integer, create a Buffer instead */ - - BufferDesc = AcpiUtCreateBufferObject (Length); - if (!BufferDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - Buffer = BufferDesc->Buffer.Pointer; - } - else - { - /* Field will fit within an Integer (normal case) */ - - BufferDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); - if (!BufferDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - Length = AcpiGbl_IntegerByteWidth; - BufferDesc->Integer.Value = 0; - Buffer = &BufferDesc->Integer.Value; - } - - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "FieldRead [TO]: Obj %p, Type %X, Buf %p, ByteLen %X\n", - ObjDesc, ACPI_GET_OBJECT_TYPE (ObjDesc), Buffer, (UINT32) Length)); - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "FieldRead [FROM]: BitLen %X, BitOff %X, ByteOff %X\n", - ObjDesc->CommonField.BitLength, - ObjDesc->CommonField.StartFieldBitOffset, - ObjDesc->CommonField.BaseByteOffset)); - - /* Lock entire transaction if requested */ - - Locked = AcpiExAcquireGlobalLock (ObjDesc->CommonField.FieldFlags); - - /* Read from the field */ - - Status = AcpiExExtractFromField (ObjDesc, Buffer, (UINT32) Length); - AcpiExReleaseGlobalLock (Locked); - - -Exit: - if (ACPI_FAILURE (Status)) - { - AcpiUtRemoveReference (BufferDesc); - } - else - { - *RetBufferDesc = BufferDesc; - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExWriteDataToField - * - * PARAMETERS: SourceDesc - Contains data to write - * ObjDesc - The named field - * ResultDesc - Where the return value is returned, if any - * - * RETURN: Status - * - * DESCRIPTION: Write to a named field - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExWriteDataToField ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT **ResultDesc) -{ - ACPI_STATUS Status; - UINT32 Length; - UINT32 RequiredLength; - void *Buffer; - void *NewBuffer; - BOOLEAN Locked; - ACPI_OPERAND_OBJECT *BufferDesc; - - - ACPI_FUNCTION_TRACE_PTR (ExWriteDataToField, ObjDesc); - - - /* Parameter validation */ - - if (!SourceDesc || !ObjDesc) - { - return_ACPI_STATUS (AE_AML_NO_OPERAND); - } - - if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_BUFFER_FIELD) - { - /* - * If the BufferField arguments have not been previously evaluated, - * evaluate them now and save the results. - */ - if (!(ObjDesc->Common.Flags & AOPOBJ_DATA_VALID)) - { - Status = AcpiDsGetBufferFieldArguments (ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - } - else if ((ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_LOCAL_REGION_FIELD) && - (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS)) - { - /* - * This is an SMBus write. We will bypass the entire field mechanism - * and handoff the buffer directly to the handler. - * - * Source must be a buffer of sufficient size (ACPI_SMBUS_BUFFER_SIZE). - */ - if (ACPI_GET_OBJECT_TYPE (SourceDesc) != ACPI_TYPE_BUFFER) - { - ACPI_ERROR ((AE_INFO, "SMBus write requires Buffer, found type %s", - AcpiUtGetObjectTypeName (SourceDesc))); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - if (SourceDesc->Buffer.Length < ACPI_SMBUS_BUFFER_SIZE) - { - ACPI_ERROR ((AE_INFO, - "SMBus write requires Buffer of length %X, found length %X", - ACPI_SMBUS_BUFFER_SIZE, SourceDesc->Buffer.Length)); - - return_ACPI_STATUS (AE_AML_BUFFER_LIMIT); - } - - BufferDesc = AcpiUtCreateBufferObject (ACPI_SMBUS_BUFFER_SIZE); - if (!BufferDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - Buffer = BufferDesc->Buffer.Pointer; - ACPI_MEMCPY (Buffer, SourceDesc->Buffer.Pointer, - ACPI_SMBUS_BUFFER_SIZE); - - /* Lock entire transaction if requested */ - - Locked = AcpiExAcquireGlobalLock (ObjDesc->CommonField.FieldFlags); - - /* - * Perform the write (returns status and perhaps data in the - * same buffer) - * Note: SMBus protocol type is passed in upper 16-bits of Function. - */ - Status = AcpiExAccessRegion (ObjDesc, 0, - (ACPI_INTEGER *) Buffer, - ACPI_WRITE | (ObjDesc->Field.Attribute << 16)); - AcpiExReleaseGlobalLock (Locked); - - *ResultDesc = BufferDesc; - return_ACPI_STATUS (Status); - } - - /* Get a pointer to the data to be written */ - - switch (ACPI_GET_OBJECT_TYPE (SourceDesc)) - { - case ACPI_TYPE_INTEGER: - Buffer = &SourceDesc->Integer.Value; - Length = sizeof (SourceDesc->Integer.Value); - break; - - case ACPI_TYPE_BUFFER: - Buffer = SourceDesc->Buffer.Pointer; - Length = SourceDesc->Buffer.Length; - break; - - case ACPI_TYPE_STRING: - Buffer = SourceDesc->String.Pointer; - Length = SourceDesc->String.Length; - break; - - default: - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - /* - * We must have a buffer that is at least as long as the field - * we are writing to. This is because individual fields are - * indivisible and partial writes are not supported -- as per - * the ACPI specification. - */ - NewBuffer = NULL; - RequiredLength = ACPI_ROUND_BITS_UP_TO_BYTES ( - ObjDesc->CommonField.BitLength); - - if (Length < RequiredLength) - { - /* We need to create a new buffer */ - - NewBuffer = ACPI_ALLOCATE_ZEROED (RequiredLength); - if (!NewBuffer) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* - * Copy the original data to the new buffer, starting - * at Byte zero. All unused (upper) bytes of the - * buffer will be 0. - */ - ACPI_MEMCPY ((char *) NewBuffer, (char *) Buffer, Length); - Buffer = NewBuffer; - Length = RequiredLength; - } - - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "FieldWrite [FROM]: Obj %p (%s:%X), Buf %p, ByteLen %X\n", - SourceDesc, AcpiUtGetTypeName (ACPI_GET_OBJECT_TYPE (SourceDesc)), - ACPI_GET_OBJECT_TYPE (SourceDesc), Buffer, Length)); - - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "FieldWrite [TO]: Obj %p (%s:%X), BitLen %X, BitOff %X, ByteOff %X\n", - ObjDesc, AcpiUtGetTypeName (ACPI_GET_OBJECT_TYPE (ObjDesc)), - ACPI_GET_OBJECT_TYPE (ObjDesc), - ObjDesc->CommonField.BitLength, - ObjDesc->CommonField.StartFieldBitOffset, - ObjDesc->CommonField.BaseByteOffset)); - - /* Lock entire transaction if requested */ - - Locked = AcpiExAcquireGlobalLock (ObjDesc->CommonField.FieldFlags); - - /* Write to the field */ - - Status = AcpiExInsertIntoField (ObjDesc, Buffer, Length); - AcpiExReleaseGlobalLock (Locked); - - /* Free temporary buffer if we used one */ - - if (NewBuffer) - { - ACPI_FREE (NewBuffer); - } - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exfldio.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exfldio.c deleted file mode 100644 index 91bd3ac5fa..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exfldio.c +++ /dev/null @@ -1,1056 +0,0 @@ -/****************************************************************************** - * - * Module Name: exfldio - Aml Field I/O - * $Revision: 1.127 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __EXFLDIO_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acevents.h" -#include "acdispat.h" - - -#define _COMPONENT ACPI_EXECUTER - ACPI_MODULE_NAME ("exfldio") - -/* Local prototypes */ - -static ACPI_STATUS -AcpiExFieldDatumIo ( - ACPI_OPERAND_OBJECT *ObjDesc, - UINT32 FieldDatumByteOffset, - ACPI_INTEGER *Value, - UINT32 ReadWrite); - -static BOOLEAN -AcpiExRegisterOverflow ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_INTEGER Value); - -static ACPI_STATUS -AcpiExSetupRegion ( - ACPI_OPERAND_OBJECT *ObjDesc, - UINT32 FieldDatumByteOffset); - - -/******************************************************************************* - * - * FUNCTION: AcpiExSetupRegion - * - * PARAMETERS: ObjDesc - Field to be read or written - * FieldDatumByteOffset - Byte offset of this datum within the - * parent field - * - * RETURN: Status - * - * DESCRIPTION: Common processing for AcpiExExtractFromField and - * AcpiExInsertIntoField. Initialize the Region if necessary and - * validate the request. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiExSetupRegion ( - ACPI_OPERAND_OBJECT *ObjDesc, - UINT32 FieldDatumByteOffset) -{ - ACPI_STATUS Status = AE_OK; - ACPI_OPERAND_OBJECT *RgnDesc; - - - ACPI_FUNCTION_TRACE_U32 (ExSetupRegion, FieldDatumByteOffset); - - - RgnDesc = ObjDesc->CommonField.RegionObj; - - /* We must have a valid region */ - - if (ACPI_GET_OBJECT_TYPE (RgnDesc) != ACPI_TYPE_REGION) - { - ACPI_ERROR ((AE_INFO, "Needed Region, found type %X (%s)", - ACPI_GET_OBJECT_TYPE (RgnDesc), - AcpiUtGetObjectTypeName (RgnDesc))); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - /* - * If the Region Address and Length have not been previously evaluated, - * evaluate them now and save the results. - */ - if (!(RgnDesc->Common.Flags & AOPOBJ_DATA_VALID)) - { - Status = AcpiDsGetRegionArguments (RgnDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* Exit if Address/Length have been disallowed by the host OS */ - - if (RgnDesc->Common.Flags & AOPOBJ_INVALID) - { - return_ACPI_STATUS (AE_AML_ILLEGAL_ADDRESS); - } - - /* - * Exit now for SMBus address space, it has a non-linear address space - * and the request cannot be directly validated - */ - if (RgnDesc->Region.SpaceId == ACPI_ADR_SPACE_SMBUS) - { - /* SMBus has a non-linear address space */ - - return_ACPI_STATUS (AE_OK); - } - -#ifdef ACPI_UNDER_DEVELOPMENT - /* - * If the Field access is AnyAcc, we can now compute the optimal - * access (because we know know the length of the parent region) - */ - if (!(ObjDesc->Common.Flags & AOPOBJ_DATA_VALID)) - { - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } -#endif - - /* - * Validate the request. The entire request from the byte offset for a - * length of one field datum (access width) must fit within the region. - * (Region length is specified in bytes) - */ - if (RgnDesc->Region.Length < - (ObjDesc->CommonField.BaseByteOffset + - FieldDatumByteOffset + - ObjDesc->CommonField.AccessByteWidth)) - { - if (AcpiGbl_EnableInterpreterSlack) - { - /* - * Slack mode only: We will go ahead and allow access to this - * field if it is within the region length rounded up to the next - * access width boundary. - */ - if (ACPI_ROUND_UP (RgnDesc->Region.Length, - ObjDesc->CommonField.AccessByteWidth) >= - (ObjDesc->CommonField.BaseByteOffset + - (ACPI_NATIVE_UINT) ObjDesc->CommonField.AccessByteWidth + - FieldDatumByteOffset)) - { - return_ACPI_STATUS (AE_OK); - } - } - - if (RgnDesc->Region.Length < ObjDesc->CommonField.AccessByteWidth) - { - /* - * This is the case where the AccessType (AccWord, etc.) is wider - * than the region itself. For example, a region of length one - * byte, and a field with Dword access specified. - */ - ACPI_ERROR ((AE_INFO, - "Field [%4.4s] access width (%d bytes) too large for region [%4.4s] (length %X)", - AcpiUtGetNodeName (ObjDesc->CommonField.Node), - ObjDesc->CommonField.AccessByteWidth, - AcpiUtGetNodeName (RgnDesc->Region.Node), - RgnDesc->Region.Length)); - } - - /* - * Offset rounded up to next multiple of field width - * exceeds region length, indicate an error - */ - ACPI_ERROR ((AE_INFO, - "Field [%4.4s] Base+Offset+Width %X+%X+%X is beyond end of region [%4.4s] (length %X)", - AcpiUtGetNodeName (ObjDesc->CommonField.Node), - ObjDesc->CommonField.BaseByteOffset, - FieldDatumByteOffset, ObjDesc->CommonField.AccessByteWidth, - AcpiUtGetNodeName (RgnDesc->Region.Node), - RgnDesc->Region.Length)); - - return_ACPI_STATUS (AE_AML_REGION_LIMIT); - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExAccessRegion - * - * PARAMETERS: ObjDesc - Field to be read - * FieldDatumByteOffset - Byte offset of this datum within the - * parent field - * Value - Where to store value (must at least - * the size of ACPI_INTEGER) - * Function - Read or Write flag plus other region- - * dependent flags - * - * RETURN: Status - * - * DESCRIPTION: Read or Write a single field datum to an Operation Region. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExAccessRegion ( - ACPI_OPERAND_OBJECT *ObjDesc, - UINT32 FieldDatumByteOffset, - ACPI_INTEGER *Value, - UINT32 Function) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *RgnDesc; - ACPI_PHYSICAL_ADDRESS Address; - - - ACPI_FUNCTION_TRACE (ExAccessRegion); - - - /* - * Ensure that the region operands are fully evaluated and verify - * the validity of the request - */ - Status = AcpiExSetupRegion (ObjDesc, FieldDatumByteOffset); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * The physical address of this field datum is: - * - * 1) The base of the region, plus - * 2) The base offset of the field, plus - * 3) The current offset into the field - */ - RgnDesc = ObjDesc->CommonField.RegionObj; - Address = RgnDesc->Region.Address + - ObjDesc->CommonField.BaseByteOffset + - FieldDatumByteOffset; - - if ((Function & ACPI_IO_MASK) == ACPI_READ) - { - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "[READ]")); - } - else - { - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "[WRITE]")); - } - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_BFIELD, - " Region [%s:%X], Width %X, ByteBase %X, Offset %X at %p\n", - AcpiUtGetRegionName (RgnDesc->Region.SpaceId), - RgnDesc->Region.SpaceId, - ObjDesc->CommonField.AccessByteWidth, - ObjDesc->CommonField.BaseByteOffset, - FieldDatumByteOffset, - (void *) Address)); - - /* Invoke the appropriate AddressSpace/OpRegion handler */ - - Status = AcpiEvAddressSpaceDispatch (RgnDesc, Function, - Address, - ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth), Value); - - if (ACPI_FAILURE (Status)) - { - if (Status == AE_NOT_IMPLEMENTED) - { - ACPI_ERROR ((AE_INFO, - "Region %s(%X) not implemented", - AcpiUtGetRegionName (RgnDesc->Region.SpaceId), - RgnDesc->Region.SpaceId)); - } - else if (Status == AE_NOT_EXIST) - { - ACPI_ERROR ((AE_INFO, - "Region %s(%X) has no handler", - AcpiUtGetRegionName (RgnDesc->Region.SpaceId), - RgnDesc->Region.SpaceId)); - } - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExRegisterOverflow - * - * PARAMETERS: ObjDesc - Register(Field) to be written - * Value - Value to be stored - * - * RETURN: TRUE if value overflows the field, FALSE otherwise - * - * DESCRIPTION: Check if a value is out of range of the field being written. - * Used to check if the values written to Index and Bank registers - * are out of range. Normally, the value is simply truncated - * to fit the field, but this case is most likely a serious - * coding error in the ASL. - * - ******************************************************************************/ - -static BOOLEAN -AcpiExRegisterOverflow ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_INTEGER Value) -{ - - if (ObjDesc->CommonField.BitLength >= ACPI_INTEGER_BIT_SIZE) - { - /* - * The field is large enough to hold the maximum integer, so we can - * never overflow it. - */ - return (FALSE); - } - - if (Value >= ((ACPI_INTEGER) 1 << ObjDesc->CommonField.BitLength)) - { - /* - * The Value is larger than the maximum value that can fit into - * the register. - */ - return (TRUE); - } - - /* The Value will fit into the field with no truncation */ - - return (FALSE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExFieldDatumIo - * - * PARAMETERS: ObjDesc - Field to be read - * FieldDatumByteOffset - Byte offset of this datum within the - * parent field - * Value - Where to store value (must be 64 bits) - * ReadWrite - Read or Write flag - * - * RETURN: Status - * - * DESCRIPTION: Read or Write a single datum of a field. The FieldType is - * demultiplexed here to handle the different types of fields - * (BufferField, RegionField, IndexField, BankField) - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiExFieldDatumIo ( - ACPI_OPERAND_OBJECT *ObjDesc, - UINT32 FieldDatumByteOffset, - ACPI_INTEGER *Value, - UINT32 ReadWrite) -{ - ACPI_STATUS Status; - ACPI_INTEGER LocalValue; - - - ACPI_FUNCTION_TRACE_U32 (ExFieldDatumIo, FieldDatumByteOffset); - - - if (ReadWrite == ACPI_READ) - { - if (!Value) - { - LocalValue = 0; - - /* To support reads without saving return value */ - Value = &LocalValue; - } - - /* Clear the entire return buffer first, [Very Important!] */ - - *Value = 0; - } - - /* - * The four types of fields are: - * - * BufferField - Read/write from/to a Buffer - * RegionField - Read/write from/to a Operation Region. - * BankField - Write to a Bank Register, then read/write from/to an - * OperationRegion - * IndexField - Write to an Index Register, then read/write from/to a - * Data Register - */ - switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) - { - case ACPI_TYPE_BUFFER_FIELD: - /* - * If the BufferField arguments have not been previously evaluated, - * evaluate them now and save the results. - */ - if (!(ObjDesc->Common.Flags & AOPOBJ_DATA_VALID)) - { - Status = AcpiDsGetBufferFieldArguments (ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - if (ReadWrite == ACPI_READ) - { - /* - * Copy the data from the source buffer. - * Length is the field width in bytes. - */ - ACPI_MEMCPY (Value, - (ObjDesc->BufferField.BufferObj)->Buffer.Pointer + - ObjDesc->BufferField.BaseByteOffset + - FieldDatumByteOffset, - ObjDesc->CommonField.AccessByteWidth); - } - else - { - /* - * Copy the data to the target buffer. - * Length is the field width in bytes. - */ - ACPI_MEMCPY ((ObjDesc->BufferField.BufferObj)->Buffer.Pointer + - ObjDesc->BufferField.BaseByteOffset + - FieldDatumByteOffset, - Value, ObjDesc->CommonField.AccessByteWidth); - } - - Status = AE_OK; - break; - - - case ACPI_TYPE_LOCAL_BANK_FIELD: - - /* - * Ensure that the BankValue is not beyond the capacity of - * the register - */ - if (AcpiExRegisterOverflow (ObjDesc->BankField.BankObj, - (ACPI_INTEGER) ObjDesc->BankField.Value)) - { - return_ACPI_STATUS (AE_AML_REGISTER_LIMIT); - } - - /* - * For BankFields, we must write the BankValue to the BankRegister - * (itself a RegionField) before we can access the data. - */ - Status = AcpiExInsertIntoField (ObjDesc->BankField.BankObj, - &ObjDesc->BankField.Value, - sizeof (ObjDesc->BankField.Value)); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Now that the Bank has been selected, fall through to the - * RegionField case and write the datum to the Operation Region - */ - - /*lint -fallthrough */ - - - case ACPI_TYPE_LOCAL_REGION_FIELD: - /* - * For simple RegionFields, we just directly access the owning - * Operation Region. - */ - Status = AcpiExAccessRegion (ObjDesc, FieldDatumByteOffset, Value, - ReadWrite); - break; - - - case ACPI_TYPE_LOCAL_INDEX_FIELD: - - - /* - * Ensure that the IndexValue is not beyond the capacity of - * the register - */ - if (AcpiExRegisterOverflow (ObjDesc->IndexField.IndexObj, - (ACPI_INTEGER) ObjDesc->IndexField.Value)) - { - return_ACPI_STATUS (AE_AML_REGISTER_LIMIT); - } - - /* Write the index value to the IndexRegister (itself a RegionField) */ - - FieldDatumByteOffset += ObjDesc->IndexField.Value; - - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "Write to Index Register: Value %8.8X\n", - FieldDatumByteOffset)); - - Status = AcpiExInsertIntoField (ObjDesc->IndexField.IndexObj, - &FieldDatumByteOffset, - sizeof (FieldDatumByteOffset)); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "I/O to Data Register: ValuePtr %p\n", Value)); - - if (ReadWrite == ACPI_READ) - { - /* Read the datum from the DataRegister */ - - Status = AcpiExExtractFromField (ObjDesc->IndexField.DataObj, - Value, sizeof (ACPI_INTEGER)); - } - else - { - /* Write the datum to the DataRegister */ - - Status = AcpiExInsertIntoField (ObjDesc->IndexField.DataObj, - Value, sizeof (ACPI_INTEGER)); - } - break; - - - default: - - ACPI_ERROR ((AE_INFO, "Wrong object type in field I/O %X", - ACPI_GET_OBJECT_TYPE (ObjDesc))); - Status = AE_AML_INTERNAL; - break; - } - - if (ACPI_SUCCESS (Status)) - { - if (ReadWrite == ACPI_READ) - { - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "Value Read %8.8X%8.8X, Width %d\n", - ACPI_FORMAT_UINT64 (*Value), - ObjDesc->CommonField.AccessByteWidth)); - } - else - { - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "Value Written %8.8X%8.8X, Width %d\n", - ACPI_FORMAT_UINT64 (*Value), - ObjDesc->CommonField.AccessByteWidth)); - } - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExWriteWithUpdateRule - * - * PARAMETERS: ObjDesc - Field to be written - * Mask - bitmask within field datum - * FieldValue - Value to write - * FieldDatumByteOffset - Offset of datum within field - * - * RETURN: Status - * - * DESCRIPTION: Apply the field update rule to a field write - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExWriteWithUpdateRule ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_INTEGER Mask, - ACPI_INTEGER FieldValue, - UINT32 FieldDatumByteOffset) -{ - ACPI_STATUS Status = AE_OK; - ACPI_INTEGER MergedValue; - ACPI_INTEGER CurrentValue; - - - ACPI_FUNCTION_TRACE_U32 (ExWriteWithUpdateRule, Mask); - - - /* Start with the new bits */ - - MergedValue = FieldValue; - - /* If the mask is all ones, we don't need to worry about the update rule */ - - if (Mask != ACPI_INTEGER_MAX) - { - /* Decode the update rule */ - - switch (ObjDesc->CommonField.FieldFlags & AML_FIELD_UPDATE_RULE_MASK) - { - case AML_FIELD_UPDATE_PRESERVE: - /* - * Check if update rule needs to be applied (not if mask is all - * ones) The left shift drops the bits we want to ignore. - */ - if ((~Mask << (ACPI_MUL_8 (sizeof (Mask)) - - ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth))) != 0) - { - /* - * Read the current contents of the byte/word/dword containing - * the field, and merge with the new field value. - */ - Status = AcpiExFieldDatumIo (ObjDesc, FieldDatumByteOffset, - &CurrentValue, ACPI_READ); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - MergedValue |= (CurrentValue & ~Mask); - } - break; - - case AML_FIELD_UPDATE_WRITE_AS_ONES: - - /* Set positions outside the field to all ones */ - - MergedValue |= ~Mask; - break; - - case AML_FIELD_UPDATE_WRITE_AS_ZEROS: - - /* Set positions outside the field to all zeros */ - - MergedValue &= Mask; - break; - - default: - - ACPI_ERROR ((AE_INFO, - "Unknown UpdateRule value: %X", - (ObjDesc->CommonField.FieldFlags & AML_FIELD_UPDATE_RULE_MASK))); - return_ACPI_STATUS (AE_AML_OPERAND_VALUE); - } - } - - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "Mask %8.8X%8.8X, DatumOffset %X, Width %X, Value %8.8X%8.8X, MergedValue %8.8X%8.8X\n", - ACPI_FORMAT_UINT64 (Mask), - FieldDatumByteOffset, - ObjDesc->CommonField.AccessByteWidth, - ACPI_FORMAT_UINT64 (FieldValue), - ACPI_FORMAT_UINT64 (MergedValue))); - - /* Write the merged value */ - - Status = AcpiExFieldDatumIo (ObjDesc, FieldDatumByteOffset, - &MergedValue, ACPI_WRITE); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExExtractFromField - * - * PARAMETERS: ObjDesc - Field to be read - * Buffer - Where to store the field data - * BufferLength - Length of Buffer - * - * RETURN: Status - * - * DESCRIPTION: Retrieve the current value of the given field - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExExtractFromField ( - ACPI_OPERAND_OBJECT *ObjDesc, - void *Buffer, - UINT32 BufferLength) -{ - ACPI_STATUS Status; - ACPI_INTEGER RawDatum; - ACPI_INTEGER MergedDatum; - UINT32 FieldOffset = 0; - UINT32 BufferOffset = 0; - UINT32 BufferTailBits; - UINT32 DatumCount; - UINT32 FieldDatumCount; - UINT32 i; - - - ACPI_FUNCTION_TRACE (ExExtractFromField); - - - /* Validate target buffer and clear it */ - - if (BufferLength < - ACPI_ROUND_BITS_UP_TO_BYTES (ObjDesc->CommonField.BitLength)) - { - ACPI_ERROR ((AE_INFO, - "Field size %X (bits) is too large for buffer (%X)", - ObjDesc->CommonField.BitLength, BufferLength)); - - return_ACPI_STATUS (AE_BUFFER_OVERFLOW); - } - ACPI_MEMSET (Buffer, 0, BufferLength); - - /* Compute the number of datums (access width data items) */ - - DatumCount = ACPI_ROUND_UP_TO ( - ObjDesc->CommonField.BitLength, - ObjDesc->CommonField.AccessBitWidth); - FieldDatumCount = ACPI_ROUND_UP_TO ( - ObjDesc->CommonField.BitLength + - ObjDesc->CommonField.StartFieldBitOffset, - ObjDesc->CommonField.AccessBitWidth); - - /* Priming read from the field */ - - Status = AcpiExFieldDatumIo (ObjDesc, FieldOffset, &RawDatum, ACPI_READ); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - MergedDatum = RawDatum >> ObjDesc->CommonField.StartFieldBitOffset; - - /* Read the rest of the field */ - - for (i = 1; i < FieldDatumCount; i++) - { - /* Get next input datum from the field */ - - FieldOffset += ObjDesc->CommonField.AccessByteWidth; - Status = AcpiExFieldDatumIo (ObjDesc, FieldOffset, - &RawDatum, ACPI_READ); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Merge with previous datum if necessary. - * - * Note: Before the shift, check if the shift value will be larger than - * the integer size. If so, there is no need to perform the operation. - * This avoids the differences in behavior between different compilers - * concerning shift values larger than the target data width. - */ - if ((ObjDesc->CommonField.AccessBitWidth - - ObjDesc->CommonField.StartFieldBitOffset) < ACPI_INTEGER_BIT_SIZE) - { - MergedDatum |= RawDatum << - (ObjDesc->CommonField.AccessBitWidth - - ObjDesc->CommonField.StartFieldBitOffset); - } - - if (i == DatumCount) - { - break; - } - - /* Write merged datum to target buffer */ - - ACPI_MEMCPY (((char *) Buffer) + BufferOffset, &MergedDatum, - ACPI_MIN(ObjDesc->CommonField.AccessByteWidth, - BufferLength - BufferOffset)); - - BufferOffset += ObjDesc->CommonField.AccessByteWidth; - MergedDatum = RawDatum >> ObjDesc->CommonField.StartFieldBitOffset; - } - - /* Mask off any extra bits in the last datum */ - - BufferTailBits = ObjDesc->CommonField.BitLength % - ObjDesc->CommonField.AccessBitWidth; - if (BufferTailBits) - { - MergedDatum &= ACPI_MASK_BITS_ABOVE (BufferTailBits); - } - - /* Write the last datum to the buffer */ - - ACPI_MEMCPY (((char *) Buffer) + BufferOffset, &MergedDatum, - ACPI_MIN(ObjDesc->CommonField.AccessByteWidth, - BufferLength - BufferOffset)); - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExInsertIntoField - * - * PARAMETERS: ObjDesc - Field to be written - * Buffer - Data to be written - * BufferLength - Length of Buffer - * - * RETURN: Status - * - * DESCRIPTION: Store the Buffer contents into the given field - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExInsertIntoField ( - ACPI_OPERAND_OBJECT *ObjDesc, - void *Buffer, - UINT32 BufferLength) -{ - ACPI_STATUS Status; - ACPI_INTEGER Mask; - ACPI_INTEGER WidthMask; - ACPI_INTEGER MergedDatum; - ACPI_INTEGER RawDatum = 0; - UINT32 FieldOffset = 0; - UINT32 BufferOffset = 0; - UINT32 BufferTailBits; - UINT32 DatumCount; - UINT32 FieldDatumCount; - UINT32 i; - - - ACPI_FUNCTION_TRACE (ExInsertIntoField); - - - /* Validate input buffer */ - - if (BufferLength < - ACPI_ROUND_BITS_UP_TO_BYTES (ObjDesc->CommonField.BitLength)) - { - ACPI_ERROR ((AE_INFO, - "Field size %X (bits) is too large for buffer (%X)", - ObjDesc->CommonField.BitLength, BufferLength)); - - return_ACPI_STATUS (AE_BUFFER_OVERFLOW); - } - - /* - * Create the bitmasks used for bit insertion. - * Note: This if/else is used to bypass compiler differences with the - * shift operator - */ - if (ObjDesc->CommonField.AccessBitWidth == ACPI_INTEGER_BIT_SIZE) - { - WidthMask = ACPI_INTEGER_MAX; - } - else - { - WidthMask = ACPI_MASK_BITS_ABOVE (ObjDesc->CommonField.AccessBitWidth); - } - - Mask = WidthMask & - ACPI_MASK_BITS_BELOW (ObjDesc->CommonField.StartFieldBitOffset); - - /* Compute the number of datums (access width data items) */ - - DatumCount = ACPI_ROUND_UP_TO (ObjDesc->CommonField.BitLength, - ObjDesc->CommonField.AccessBitWidth); - - FieldDatumCount = ACPI_ROUND_UP_TO (ObjDesc->CommonField.BitLength + - ObjDesc->CommonField.StartFieldBitOffset, - ObjDesc->CommonField.AccessBitWidth); - - /* Get initial Datum from the input buffer */ - - ACPI_MEMCPY (&RawDatum, Buffer, - ACPI_MIN(ObjDesc->CommonField.AccessByteWidth, - BufferLength - BufferOffset)); - - MergedDatum = RawDatum << ObjDesc->CommonField.StartFieldBitOffset; - - /* Write the entire field */ - - for (i = 1; i < FieldDatumCount; i++) - { - /* Write merged datum to the target field */ - - MergedDatum &= Mask; - Status = AcpiExWriteWithUpdateRule (ObjDesc, Mask, - MergedDatum, FieldOffset); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - FieldOffset += ObjDesc->CommonField.AccessByteWidth; - - /* - * Start new output datum by merging with previous input datum - * if necessary. - * - * Note: Before the shift, check if the shift value will be larger than - * the integer size. If so, there is no need to perform the operation. - * This avoids the differences in behavior between different compilers - * concerning shift values larger than the target data width. - */ - if ((ObjDesc->CommonField.AccessBitWidth - - ObjDesc->CommonField.StartFieldBitOffset) < ACPI_INTEGER_BIT_SIZE) - { - MergedDatum = RawDatum >> - (ObjDesc->CommonField.AccessBitWidth - - ObjDesc->CommonField.StartFieldBitOffset); - } - else - { - MergedDatum = 0; - } - - Mask = WidthMask; - - if (i == DatumCount) - { - break; - } - - /* Get the next input datum from the buffer */ - - BufferOffset += ObjDesc->CommonField.AccessByteWidth; - ACPI_MEMCPY (&RawDatum, ((char *) Buffer) + BufferOffset, - ACPI_MIN(ObjDesc->CommonField.AccessByteWidth, - BufferLength - BufferOffset)); - MergedDatum |= RawDatum << ObjDesc->CommonField.StartFieldBitOffset; - } - - /* Mask off any extra bits in the last datum */ - - BufferTailBits = (ObjDesc->CommonField.BitLength + - ObjDesc->CommonField.StartFieldBitOffset) % - ObjDesc->CommonField.AccessBitWidth; - if (BufferTailBits) - { - Mask &= ACPI_MASK_BITS_ABOVE (BufferTailBits); - } - - /* Write the last datum to the field */ - - MergedDatum &= Mask; - Status = AcpiExWriteWithUpdateRule (ObjDesc, - Mask, MergedDatum, FieldOffset); - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exmisc.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exmisc.c deleted file mode 100644 index 21f065ba89..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exmisc.c +++ /dev/null @@ -1,873 +0,0 @@ - -/****************************************************************************** - * - * Module Name: exmisc - ACPI AML (p-code) execution - specific opcodes - * $Revision: 1.143 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __EXMISC_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "amlcode.h" -#include "amlresrc.h" - - -#define _COMPONENT ACPI_EXECUTER - ACPI_MODULE_NAME ("exmisc") - - -/******************************************************************************* - * - * FUNCTION: AcpiExGetObjectReference - * - * PARAMETERS: ObjDesc - Create a reference to this object - * ReturnDesc - Where to store the reference - * WalkState - Current state - * - * RETURN: Status - * - * DESCRIPTION: Obtain and return a "reference" to the target object - * Common code for the RefOfOp and the CondRefOfOp. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExGetObjectReference ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_OPERAND_OBJECT **ReturnDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT *ReferenceObj; - ACPI_OPERAND_OBJECT *ReferencedObj; - - - ACPI_FUNCTION_TRACE_PTR (ExGetObjectReference, ObjDesc); - - - *ReturnDesc = NULL; - - switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc)) - { - case ACPI_DESC_TYPE_OPERAND: - - if (ACPI_GET_OBJECT_TYPE (ObjDesc) != ACPI_TYPE_LOCAL_REFERENCE) - { - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - /* - * Must be a reference to a Local or Arg - */ - switch (ObjDesc->Reference.Opcode) - { - case AML_LOCAL_OP: - case AML_ARG_OP: - case AML_DEBUG_OP: - - /* The referenced object is the pseudo-node for the local/arg */ - - ReferencedObj = ObjDesc->Reference.Object; - break; - - default: - - ACPI_ERROR ((AE_INFO, "Unknown Reference opcode %X", - ObjDesc->Reference.Opcode)); - return_ACPI_STATUS (AE_AML_INTERNAL); - } - break; - - - case ACPI_DESC_TYPE_NAMED: - - /* - * A named reference that has already been resolved to a Node - */ - ReferencedObj = ObjDesc; - break; - - - default: - - ACPI_ERROR ((AE_INFO, "Invalid descriptor type %X", - ACPI_GET_DESCRIPTOR_TYPE (ObjDesc))); - return_ACPI_STATUS (AE_TYPE); - } - - - /* Create a new reference object */ - - ReferenceObj = AcpiUtCreateInternalObject (ACPI_TYPE_LOCAL_REFERENCE); - if (!ReferenceObj) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - ReferenceObj->Reference.Opcode = AML_REF_OF_OP; - ReferenceObj->Reference.Object = ReferencedObj; - *ReturnDesc = ReferenceObj; - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Object %p Type [%s], returning Reference %p\n", - ObjDesc, AcpiUtGetObjectTypeName (ObjDesc), *ReturnDesc)); - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExConcatTemplate - * - * PARAMETERS: Operand0 - First source object - * Operand1 - Second source object - * ActualReturnDesc - Where to place the return object - * WalkState - Current walk state - * - * RETURN: Status - * - * DESCRIPTION: Concatenate two resource templates - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExConcatTemplate ( - ACPI_OPERAND_OBJECT *Operand0, - ACPI_OPERAND_OBJECT *Operand1, - ACPI_OPERAND_OBJECT **ActualReturnDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *ReturnDesc; - UINT8 *NewBuf; - UINT8 *EndTag; - ACPI_SIZE Length0; - ACPI_SIZE Length1; - ACPI_SIZE NewLength; - - - ACPI_FUNCTION_TRACE (ExConcatTemplate); - - - /* - * Find the EndTag descriptor in each resource template. - * Note1: returned pointers point TO the EndTag, not past it. - * Note2: zero-length buffers are allowed; treated like one EndTag - */ - - /* Get the length of the first resource template */ - - Status = AcpiUtGetResourceEndTag (Operand0, &EndTag); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - Length0 = ACPI_PTR_DIFF (EndTag, Operand0->Buffer.Pointer); - - /* Get the length of the second resource template */ - - Status = AcpiUtGetResourceEndTag (Operand1, &EndTag); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - Length1 = ACPI_PTR_DIFF (EndTag, Operand1->Buffer.Pointer); - - /* Combine both lengths, minimum size will be 2 for EndTag */ - - NewLength = Length0 + Length1 + sizeof (AML_RESOURCE_END_TAG); - - /* Create a new buffer object for the result (with one EndTag) */ - - ReturnDesc = AcpiUtCreateBufferObject (NewLength); - if (!ReturnDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* - * Copy the templates to the new buffer, 0 first, then 1 follows. One - * EndTag descriptor is copied from Operand1. - */ - NewBuf = ReturnDesc->Buffer.Pointer; - ACPI_MEMCPY (NewBuf, Operand0->Buffer.Pointer, Length0); - ACPI_MEMCPY (NewBuf + Length0, Operand1->Buffer.Pointer, Length1); - - /* Insert EndTag and set the checksum to zero, means "ignore checksum" */ - - NewBuf[NewLength - 1] = 0; - NewBuf[NewLength - 2] = ACPI_RESOURCE_NAME_END_TAG | 1; - - /* Return the completed resource template */ - - *ActualReturnDesc = ReturnDesc; - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExDoConcatenate - * - * PARAMETERS: Operand0 - First source object - * Operand1 - Second source object - * ActualReturnDesc - Where to place the return object - * WalkState - Current walk state - * - * RETURN: Status - * - * DESCRIPTION: Concatenate two objects OF THE SAME TYPE. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExDoConcatenate ( - ACPI_OPERAND_OBJECT *Operand0, - ACPI_OPERAND_OBJECT *Operand1, - ACPI_OPERAND_OBJECT **ActualReturnDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT *LocalOperand1 = Operand1; - ACPI_OPERAND_OBJECT *ReturnDesc; - char *NewBuf; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (ExDoConcatenate); - - - /* - * Convert the second operand if necessary. The first operand - * determines the type of the second operand, (See the Data Types - * section of the ACPI specification.) Both object types are - * guaranteed to be either Integer/String/Buffer by the operand - * resolution mechanism. - */ - switch (ACPI_GET_OBJECT_TYPE (Operand0)) - { - case ACPI_TYPE_INTEGER: - Status = AcpiExConvertToInteger (Operand1, &LocalOperand1, 16); - break; - - case ACPI_TYPE_STRING: - Status = AcpiExConvertToString (Operand1, &LocalOperand1, - ACPI_IMPLICIT_CONVERT_HEX); - break; - - case ACPI_TYPE_BUFFER: - Status = AcpiExConvertToBuffer (Operand1, &LocalOperand1); - break; - - default: - ACPI_ERROR ((AE_INFO, "Invalid object type: %X", - ACPI_GET_OBJECT_TYPE (Operand0))); - Status = AE_AML_INTERNAL; - } - - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* - * Both operands are now known to be the same object type - * (Both are Integer, String, or Buffer), and we can now perform the - * concatenation. - */ - - /* - * There are three cases to handle: - * - * 1) Two Integers concatenated to produce a new Buffer - * 2) Two Strings concatenated to produce a new String - * 3) Two Buffers concatenated to produce a new Buffer - */ - switch (ACPI_GET_OBJECT_TYPE (Operand0)) - { - case ACPI_TYPE_INTEGER: - - /* Result of two Integers is a Buffer */ - /* Need enough buffer space for two integers */ - - ReturnDesc = AcpiUtCreateBufferObject ((ACPI_SIZE) - ACPI_MUL_2 (AcpiGbl_IntegerByteWidth)); - if (!ReturnDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - NewBuf = (char *) ReturnDesc->Buffer.Pointer; - - /* Copy the first integer, LSB first */ - - ACPI_MEMCPY (NewBuf, &Operand0->Integer.Value, - AcpiGbl_IntegerByteWidth); - - /* Copy the second integer (LSB first) after the first */ - - ACPI_MEMCPY (NewBuf + AcpiGbl_IntegerByteWidth, - &LocalOperand1->Integer.Value, - AcpiGbl_IntegerByteWidth); - break; - - case ACPI_TYPE_STRING: - - /* Result of two Strings is a String */ - - ReturnDesc = AcpiUtCreateStringObject ((ACPI_SIZE) - (Operand0->String.Length + - LocalOperand1->String.Length)); - if (!ReturnDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - NewBuf = ReturnDesc->String.Pointer; - - /* Concatenate the strings */ - - ACPI_STRCPY (NewBuf, Operand0->String.Pointer); - ACPI_STRCPY (NewBuf + Operand0->String.Length, - LocalOperand1->String.Pointer); - break; - - case ACPI_TYPE_BUFFER: - - /* Result of two Buffers is a Buffer */ - - ReturnDesc = AcpiUtCreateBufferObject ((ACPI_SIZE) - (Operand0->Buffer.Length + - LocalOperand1->Buffer.Length)); - if (!ReturnDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - NewBuf = (char *) ReturnDesc->Buffer.Pointer; - - /* Concatenate the buffers */ - - ACPI_MEMCPY (NewBuf, Operand0->Buffer.Pointer, - Operand0->Buffer.Length); - ACPI_MEMCPY (NewBuf + Operand0->Buffer.Length, - LocalOperand1->Buffer.Pointer, - LocalOperand1->Buffer.Length); - break; - - default: - - /* Invalid object type, should not happen here */ - - ACPI_ERROR ((AE_INFO, "Invalid object type: %X", - ACPI_GET_OBJECT_TYPE (Operand0))); - Status =AE_AML_INTERNAL; - goto Cleanup; - } - - *ActualReturnDesc = ReturnDesc; - -Cleanup: - if (LocalOperand1 != Operand1) - { - AcpiUtRemoveReference (LocalOperand1); - } - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExDoMathOp - * - * PARAMETERS: Opcode - AML opcode - * Integer0 - Integer operand #0 - * Integer1 - Integer operand #1 - * - * RETURN: Integer result of the operation - * - * DESCRIPTION: Execute a math AML opcode. The purpose of having all of the - * math functions here is to prevent a lot of pointer dereferencing - * to obtain the operands. - * - ******************************************************************************/ - -ACPI_INTEGER -AcpiExDoMathOp ( - UINT16 Opcode, - ACPI_INTEGER Integer0, - ACPI_INTEGER Integer1) -{ - - ACPI_FUNCTION_ENTRY (); - - - switch (Opcode) - { - case AML_ADD_OP: /* Add (Integer0, Integer1, Result) */ - - return (Integer0 + Integer1); - - - case AML_BIT_AND_OP: /* And (Integer0, Integer1, Result) */ - - return (Integer0 & Integer1); - - - case AML_BIT_NAND_OP: /* NAnd (Integer0, Integer1, Result) */ - - return (~(Integer0 & Integer1)); - - - case AML_BIT_OR_OP: /* Or (Integer0, Integer1, Result) */ - - return (Integer0 | Integer1); - - - case AML_BIT_NOR_OP: /* NOr (Integer0, Integer1, Result) */ - - return (~(Integer0 | Integer1)); - - - case AML_BIT_XOR_OP: /* XOr (Integer0, Integer1, Result) */ - - return (Integer0 ^ Integer1); - - - case AML_MULTIPLY_OP: /* Multiply (Integer0, Integer1, Result) */ - - return (Integer0 * Integer1); - - - case AML_SHIFT_LEFT_OP: /* ShiftLeft (Operand, ShiftCount, Result)*/ - - /* - * We need to check if the shiftcount is larger than the integer bit - * width since the behavior of this is not well-defined in the C language. - */ - if (Integer1 >= AcpiGbl_IntegerBitWidth) - { - return (0); - } - return (Integer0 << Integer1); - - - case AML_SHIFT_RIGHT_OP: /* ShiftRight (Operand, ShiftCount, Result) */ - - /* - * We need to check if the shiftcount is larger than the integer bit - * width since the behavior of this is not well-defined in the C language. - */ - if (Integer1 >= AcpiGbl_IntegerBitWidth) - { - return (0); - } - return (Integer0 >> Integer1); - - - case AML_SUBTRACT_OP: /* Subtract (Integer0, Integer1, Result) */ - - return (Integer0 - Integer1); - - default: - - return (0); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExDoLogicalNumericOp - * - * PARAMETERS: Opcode - AML opcode - * Integer0 - Integer operand #0 - * Integer1 - Integer operand #1 - * LogicalResult - TRUE/FALSE result of the operation - * - * RETURN: Status - * - * DESCRIPTION: Execute a logical "Numeric" AML opcode. For these Numeric - * operators (LAnd and LOr), both operands must be integers. - * - * Note: cleanest machine code seems to be produced by the code - * below, rather than using statements of the form: - * Result = (Integer0 && Integer1); - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExDoLogicalNumericOp ( - UINT16 Opcode, - ACPI_INTEGER Integer0, - ACPI_INTEGER Integer1, - BOOLEAN *LogicalResult) -{ - ACPI_STATUS Status = AE_OK; - BOOLEAN LocalResult = FALSE; - - - ACPI_FUNCTION_TRACE (ExDoLogicalNumericOp); - - - switch (Opcode) - { - case AML_LAND_OP: /* LAnd (Integer0, Integer1) */ - - if (Integer0 && Integer1) - { - LocalResult = TRUE; - } - break; - - case AML_LOR_OP: /* LOr (Integer0, Integer1) */ - - if (Integer0 || Integer1) - { - LocalResult = TRUE; - } - break; - - default: - Status = AE_AML_INTERNAL; - break; - } - - /* Return the logical result and status */ - - *LogicalResult = LocalResult; - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExDoLogicalOp - * - * PARAMETERS: Opcode - AML opcode - * Operand0 - operand #0 - * Operand1 - operand #1 - * LogicalResult - TRUE/FALSE result of the operation - * - * RETURN: Status - * - * DESCRIPTION: Execute a logical AML opcode. The purpose of having all of the - * functions here is to prevent a lot of pointer dereferencing - * to obtain the operands and to simplify the generation of the - * logical value. For the Numeric operators (LAnd and LOr), both - * operands must be integers. For the other logical operators, - * operands can be any combination of Integer/String/Buffer. The - * first operand determines the type to which the second operand - * will be converted. - * - * Note: cleanest machine code seems to be produced by the code - * below, rather than using statements of the form: - * Result = (Operand0 == Operand1); - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExDoLogicalOp ( - UINT16 Opcode, - ACPI_OPERAND_OBJECT *Operand0, - ACPI_OPERAND_OBJECT *Operand1, - BOOLEAN *LogicalResult) -{ - ACPI_OPERAND_OBJECT *LocalOperand1 = Operand1; - ACPI_INTEGER Integer0; - ACPI_INTEGER Integer1; - UINT32 Length0; - UINT32 Length1; - ACPI_STATUS Status = AE_OK; - BOOLEAN LocalResult = FALSE; - int Compare; - - - ACPI_FUNCTION_TRACE (ExDoLogicalOp); - - - /* - * Convert the second operand if necessary. The first operand - * determines the type of the second operand, (See the Data Types - * section of the ACPI 3.0+ specification.) Both object types are - * guaranteed to be either Integer/String/Buffer by the operand - * resolution mechanism. - */ - switch (ACPI_GET_OBJECT_TYPE (Operand0)) - { - case ACPI_TYPE_INTEGER: - Status = AcpiExConvertToInteger (Operand1, &LocalOperand1, 16); - break; - - case ACPI_TYPE_STRING: - Status = AcpiExConvertToString (Operand1, &LocalOperand1, - ACPI_IMPLICIT_CONVERT_HEX); - break; - - case ACPI_TYPE_BUFFER: - Status = AcpiExConvertToBuffer (Operand1, &LocalOperand1); - break; - - default: - Status = AE_AML_INTERNAL; - break; - } - - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* - * Two cases: 1) Both Integers, 2) Both Strings or Buffers - */ - if (ACPI_GET_OBJECT_TYPE (Operand0) == ACPI_TYPE_INTEGER) - { - /* - * 1) Both operands are of type integer - * Note: LocalOperand1 may have changed above - */ - Integer0 = Operand0->Integer.Value; - Integer1 = LocalOperand1->Integer.Value; - - switch (Opcode) - { - case AML_LEQUAL_OP: /* LEqual (Operand0, Operand1) */ - - if (Integer0 == Integer1) - { - LocalResult = TRUE; - } - break; - - case AML_LGREATER_OP: /* LGreater (Operand0, Operand1) */ - - if (Integer0 > Integer1) - { - LocalResult = TRUE; - } - break; - - case AML_LLESS_OP: /* LLess (Operand0, Operand1) */ - - if (Integer0 < Integer1) - { - LocalResult = TRUE; - } - break; - - default: - Status = AE_AML_INTERNAL; - break; - } - } - else - { - /* - * 2) Both operands are Strings or both are Buffers - * Note: Code below takes advantage of common Buffer/String - * object fields. LocalOperand1 may have changed above. Use - * memcmp to handle nulls in buffers. - */ - Length0 = Operand0->Buffer.Length; - Length1 = LocalOperand1->Buffer.Length; - - /* Lexicographic compare: compare the data bytes */ - - Compare = ACPI_MEMCMP (Operand0->Buffer.Pointer, - LocalOperand1->Buffer.Pointer, - (Length0 > Length1) ? Length1 : Length0); - - switch (Opcode) - { - case AML_LEQUAL_OP: /* LEqual (Operand0, Operand1) */ - - /* Length and all bytes must be equal */ - - if ((Length0 == Length1) && - (Compare == 0)) - { - /* Length and all bytes match ==> TRUE */ - - LocalResult = TRUE; - } - break; - - case AML_LGREATER_OP: /* LGreater (Operand0, Operand1) */ - - if (Compare > 0) - { - LocalResult = TRUE; - goto Cleanup; /* TRUE */ - } - if (Compare < 0) - { - goto Cleanup; /* FALSE */ - } - - /* Bytes match (to shortest length), compare lengths */ - - if (Length0 > Length1) - { - LocalResult = TRUE; - } - break; - - case AML_LLESS_OP: /* LLess (Operand0, Operand1) */ - - if (Compare > 0) - { - goto Cleanup; /* FALSE */ - } - if (Compare < 0) - { - LocalResult = TRUE; - goto Cleanup; /* TRUE */ - } - - /* Bytes match (to shortest length), compare lengths */ - - if (Length0 < Length1) - { - LocalResult = TRUE; - } - break; - - default: - Status = AE_AML_INTERNAL; - break; - } - } - -Cleanup: - - /* New object was created if implicit conversion performed - delete */ - - if (LocalOperand1 != Operand1) - { - AcpiUtRemoveReference (LocalOperand1); - } - - /* Return the logical result and status */ - - *LogicalResult = LocalResult; - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exmutex.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exmutex.c deleted file mode 100644 index db1601ca1a..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exmutex.c +++ /dev/null @@ -1,492 +0,0 @@ - -/****************************************************************************** - * - * Module Name: exmutex - ASL Mutex Acquire/Release functions - * $Revision: 1.35 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __EXMUTEX_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "acevents.h" - -#define _COMPONENT ACPI_EXECUTER - ACPI_MODULE_NAME ("exmutex") - -/* Local prototypes */ - -static void -AcpiExLinkMutex ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_THREAD_STATE *Thread); - - -/******************************************************************************* - * - * FUNCTION: AcpiExUnlinkMutex - * - * PARAMETERS: ObjDesc - The mutex to be unlinked - * - * RETURN: None - * - * DESCRIPTION: Remove a mutex from the "AcquiredMutex" list - * - ******************************************************************************/ - -void -AcpiExUnlinkMutex ( - ACPI_OPERAND_OBJECT *ObjDesc) -{ - ACPI_THREAD_STATE *Thread = ObjDesc->Mutex.OwnerThread; - - - if (!Thread) - { - return; - } - - /* Doubly linked list */ - - if (ObjDesc->Mutex.Next) - { - (ObjDesc->Mutex.Next)->Mutex.Prev = ObjDesc->Mutex.Prev; - } - - if (ObjDesc->Mutex.Prev) - { - (ObjDesc->Mutex.Prev)->Mutex.Next = ObjDesc->Mutex.Next; - } - else - { - Thread->AcquiredMutexList = ObjDesc->Mutex.Next; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExLinkMutex - * - * PARAMETERS: ObjDesc - The mutex to be linked - * Thread - Current executing thread object - * - * RETURN: None - * - * DESCRIPTION: Add a mutex to the "AcquiredMutex" list for this walk - * - ******************************************************************************/ - -static void -AcpiExLinkMutex ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_THREAD_STATE *Thread) -{ - ACPI_OPERAND_OBJECT *ListHead; - - - ListHead = Thread->AcquiredMutexList; - - /* This object will be the first object in the list */ - - ObjDesc->Mutex.Prev = NULL; - ObjDesc->Mutex.Next = ListHead; - - /* Update old first object to point back to this object */ - - if (ListHead) - { - ListHead->Mutex.Prev = ObjDesc; - } - - /* Update list head */ - - Thread->AcquiredMutexList = ObjDesc; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExAcquireMutex - * - * PARAMETERS: TimeDesc - Timeout integer - * ObjDesc - Mutex object - * WalkState - Current method execution state - * - * RETURN: Status - * - * DESCRIPTION: Acquire an AML mutex - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExAcquireMutex ( - ACPI_OPERAND_OBJECT *TimeDesc, - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE_PTR (ExAcquireMutex, ObjDesc); - - - if (!ObjDesc) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Sanity check: we must have a valid thread ID */ - - if (!WalkState->Thread) - { - ACPI_ERROR ((AE_INFO, "Cannot acquire Mutex [%4.4s], null thread info", - AcpiUtGetNodeName (ObjDesc->Mutex.Node))); - return_ACPI_STATUS (AE_AML_INTERNAL); - } - - /* - * Current Sync must be less than or equal to the sync level of the - * mutex. This mechanism provides some deadlock prevention - */ - if (WalkState->Thread->CurrentSyncLevel > ObjDesc->Mutex.SyncLevel) - { - ACPI_ERROR ((AE_INFO, - "Cannot acquire Mutex [%4.4s], current SyncLevel is too large (%d)", - AcpiUtGetNodeName (ObjDesc->Mutex.Node), - WalkState->Thread->CurrentSyncLevel)); - return_ACPI_STATUS (AE_AML_MUTEX_ORDER); - } - - /* Support for multiple acquires by the owning thread */ - - if (ObjDesc->Mutex.OwnerThread) - { - if (ObjDesc->Mutex.OwnerThread->ThreadId == - WalkState->Thread->ThreadId) - { - /* - * The mutex is already owned by this thread, just increment the - * acquisition depth - */ - ObjDesc->Mutex.AcquisitionDepth++; - return_ACPI_STATUS (AE_OK); - } - } - - /* Acquire the mutex, wait if necessary. Special case for Global Lock */ - - if (ObjDesc->Mutex.OsMutex == AcpiGbl_GlobalLockMutex) - { - Status = AcpiEvAcquireGlobalLock ((UINT16) TimeDesc->Integer.Value); - } - else - { - Status = AcpiExSystemWaitMutex (ObjDesc->Mutex.OsMutex, - (UINT16) TimeDesc->Integer.Value); - } - - if (ACPI_FAILURE (Status)) - { - /* Includes failure from a timeout on TimeDesc */ - - return_ACPI_STATUS (Status); - } - - /* Have the mutex: update mutex and walk info and save the SyncLevel */ - - ObjDesc->Mutex.OwnerThread = WalkState->Thread; - ObjDesc->Mutex.AcquisitionDepth = 1; - ObjDesc->Mutex.OriginalSyncLevel = WalkState->Thread->CurrentSyncLevel; - - WalkState->Thread->CurrentSyncLevel = ObjDesc->Mutex.SyncLevel; - - /* Link the mutex to the current thread for force-unlock at method exit */ - - AcpiExLinkMutex (ObjDesc, WalkState->Thread); - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExReleaseMutex - * - * PARAMETERS: ObjDesc - The object descriptor for this op - * WalkState - Current method execution state - * - * RETURN: Status - * - * DESCRIPTION: Release a previously acquired Mutex. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExReleaseMutex ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE (ExReleaseMutex); - - - if (!ObjDesc) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* The mutex must have been previously acquired in order to release it */ - - if (!ObjDesc->Mutex.OwnerThread) - { - ACPI_ERROR ((AE_INFO, "Cannot release Mutex [%4.4s], not acquired", - AcpiUtGetNodeName (ObjDesc->Mutex.Node))); - return_ACPI_STATUS (AE_AML_MUTEX_NOT_ACQUIRED); - } - - /* Sanity check: we must have a valid thread ID */ - - if (!WalkState->Thread) - { - ACPI_ERROR ((AE_INFO, "Cannot release Mutex [%4.4s], null thread info", - AcpiUtGetNodeName (ObjDesc->Mutex.Node))); - return_ACPI_STATUS (AE_AML_INTERNAL); - } - - /* - * The Mutex is owned, but this thread must be the owner. - * Special case for Global Lock, any thread can release - */ - if ((ObjDesc->Mutex.OwnerThread->ThreadId != WalkState->Thread->ThreadId) && - (ObjDesc->Mutex.OsMutex != AcpiGbl_GlobalLockMutex)) - { - ACPI_ERROR ((AE_INFO, - "Thread %X cannot release Mutex [%4.4s] acquired by thread %X", - WalkState->Thread->ThreadId, - AcpiUtGetNodeName (ObjDesc->Mutex.Node), - ObjDesc->Mutex.OwnerThread->ThreadId)); - return_ACPI_STATUS (AE_AML_NOT_OWNER); - } - - /* - * The sync level of the mutex must be less than or equal to the current - * sync level - */ - if (ObjDesc->Mutex.SyncLevel > WalkState->Thread->CurrentSyncLevel) - { - ACPI_ERROR ((AE_INFO, - "Cannot release Mutex [%4.4s], incorrect SyncLevel", - AcpiUtGetNodeName (ObjDesc->Mutex.Node))); - return_ACPI_STATUS (AE_AML_MUTEX_ORDER); - } - - /* Match multiple Acquires with multiple Releases */ - - ObjDesc->Mutex.AcquisitionDepth--; - if (ObjDesc->Mutex.AcquisitionDepth != 0) - { - /* Just decrement the depth and return */ - - return_ACPI_STATUS (AE_OK); - } - - /* Unlink the mutex from the owner's list */ - - AcpiExUnlinkMutex (ObjDesc); - - /* Release the mutex, special case for Global Lock */ - - if (ObjDesc->Mutex.OsMutex == AcpiGbl_GlobalLockMutex) - { - Status = AcpiEvReleaseGlobalLock (); - } - else - { - AcpiOsReleaseMutex (ObjDesc->Mutex.OsMutex); - } - - /* Update the mutex and restore SyncLevel */ - - ObjDesc->Mutex.OwnerThread = NULL; - WalkState->Thread->CurrentSyncLevel = ObjDesc->Mutex.OriginalSyncLevel; - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExReleaseAllMutexes - * - * PARAMETERS: Thread - Current executing thread object - * - * RETURN: Status - * - * DESCRIPTION: Release all mutexes held by this thread - * - * NOTE: This function is called as the thread is exiting the interpreter. - * Mutexes are not released when an individual control method is exited, but - * only when the parent thread actually exits the interpreter. This allows one - * method to acquire a mutex, and a different method to release it, as long as - * this is performed underneath a single parent control method. - * - ******************************************************************************/ - -void -AcpiExReleaseAllMutexes ( - ACPI_THREAD_STATE *Thread) -{ - ACPI_OPERAND_OBJECT *Next = Thread->AcquiredMutexList; - ACPI_OPERAND_OBJECT *ObjDesc; - - - ACPI_FUNCTION_ENTRY (); - - - /* Traverse the list of owned mutexes, releasing each one */ - - while (Next) - { - ObjDesc = Next; - Next = ObjDesc->Mutex.Next; - - ObjDesc->Mutex.Prev = NULL; - ObjDesc->Mutex.Next = NULL; - ObjDesc->Mutex.AcquisitionDepth = 0; - - /* Release the mutex, special case for Global Lock */ - - if (ObjDesc->Mutex.OsMutex == AcpiGbl_GlobalLockMutex) - { - /* Ignore errors */ - - (void) AcpiEvReleaseGlobalLock (); - } - else - { - AcpiOsReleaseMutex (ObjDesc->Mutex.OsMutex); - } - - /* Mark mutex unowned */ - - ObjDesc->Mutex.OwnerThread = NULL; - - /* Update Thread SyncLevel (Last mutex is the important one) */ - - Thread->CurrentSyncLevel = ObjDesc->Mutex.OriginalSyncLevel; - } -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exnames.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exnames.c deleted file mode 100644 index 1fd5d260db..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exnames.c +++ /dev/null @@ -1,560 +0,0 @@ - -/****************************************************************************** - * - * Module Name: exnames - interpreter/scanner name load/execute - * $Revision: 1.110 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __EXNAMES_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "amlcode.h" - -#define _COMPONENT ACPI_EXECUTER - ACPI_MODULE_NAME ("exnames") - -/* Local prototypes */ - -static char * -AcpiExAllocateNameString ( - UINT32 PrefixCount, - UINT32 NumNameSegs); - -static ACPI_STATUS -AcpiExNameSegment ( - UINT8 **InAmlAddress, - char *NameString); - - -/******************************************************************************* - * - * FUNCTION: AcpiExAllocateNameString - * - * PARAMETERS: PrefixCount - Count of parent levels. Special cases: - * (-1)==root, 0==none - * NumNameSegs - count of 4-character name segments - * - * RETURN: A pointer to the allocated string segment. This segment must - * be deleted by the caller. - * - * DESCRIPTION: Allocate a buffer for a name string. Ensure allocated name - * string is long enough, and set up prefix if any. - * - ******************************************************************************/ - -static char * -AcpiExAllocateNameString ( - UINT32 PrefixCount, - UINT32 NumNameSegs) -{ - char *TempPtr; - char *NameString; - UINT32 SizeNeeded; - - ACPI_FUNCTION_TRACE (ExAllocateNameString); - - - /* - * Allow room for all \ and ^ prefixes, all segments and a MultiNamePrefix. - * Also, one byte for the null terminator. - * This may actually be somewhat longer than needed. - */ - if (PrefixCount == ACPI_UINT32_MAX) - { - /* Special case for root */ - - SizeNeeded = 1 + (ACPI_NAME_SIZE * NumNameSegs) + 2 + 1; - } - else - { - SizeNeeded = PrefixCount + (ACPI_NAME_SIZE * NumNameSegs) + 2 + 1; - } - - /* - * Allocate a buffer for the name. - * This buffer must be deleted by the caller! - */ - NameString = ACPI_ALLOCATE (SizeNeeded); - if (!NameString) - { - ACPI_ERROR ((AE_INFO, - "Could not allocate size %d", SizeNeeded)); - return_PTR (NULL); - } - - TempPtr = NameString; - - /* Set up Root or Parent prefixes if needed */ - - if (PrefixCount == ACPI_UINT32_MAX) - { - *TempPtr++ = AML_ROOT_PREFIX; - } - else - { - while (PrefixCount--) - { - *TempPtr++ = AML_PARENT_PREFIX; - } - } - - - /* Set up Dual or Multi prefixes if needed */ - - if (NumNameSegs > 2) - { - /* Set up multi prefixes */ - - *TempPtr++ = AML_MULTI_NAME_PREFIX_OP; - *TempPtr++ = (char) NumNameSegs; - } - else if (2 == NumNameSegs) - { - /* Set up dual prefixes */ - - *TempPtr++ = AML_DUAL_NAME_PREFIX; - } - - /* - * Terminate string following prefixes. AcpiExNameSegment() will - * append the segment(s) - */ - *TempPtr = 0; - - return_PTR (NameString); -} - -/******************************************************************************* - * - * FUNCTION: AcpiExNameSegment - * - * PARAMETERS: InAmlAddress - Pointer to the name in the AML code - * NameString - Where to return the name. The name is appended - * to any existing string to form a namepath - * - * RETURN: Status - * - * DESCRIPTION: Extract an ACPI name (4 bytes) from the AML byte stream - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiExNameSegment ( - UINT8 **InAmlAddress, - char *NameString) -{ - char *AmlAddress = (void *) *InAmlAddress; - ACPI_STATUS Status = AE_OK; - UINT32 Index; - char CharBuf[5]; - - - ACPI_FUNCTION_TRACE (ExNameSegment); - - - /* - * If first character is a digit, then we know that we aren't looking at a - * valid name segment - */ - CharBuf[0] = *AmlAddress; - - if ('0' <= CharBuf[0] && CharBuf[0] <= '9') - { - ACPI_ERROR ((AE_INFO, "Invalid leading digit: %c", CharBuf[0])); - return_ACPI_STATUS (AE_CTRL_PENDING); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "Bytes from stream:\n")); - - for (Index = 0; - (Index < ACPI_NAME_SIZE) && (AcpiUtValidAcpiChar (*AmlAddress, 0)); - Index++) - { - CharBuf[Index] = *AmlAddress++; - ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "%c\n", CharBuf[Index])); - } - - - /* Valid name segment */ - - if (Index == 4) - { - /* Found 4 valid characters */ - - CharBuf[4] = '\0'; - - if (NameString) - { - ACPI_STRCAT (NameString, CharBuf); - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, - "Appended to - %s\n", NameString)); - } - else - { - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, - "No Name string - %s\n", CharBuf)); - } - } - else if (Index == 0) - { - /* - * First character was not a valid name character, - * so we are looking at something other than a name. - */ - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Leading character is not alpha: %02Xh (not a name)\n", - CharBuf[0])); - Status = AE_CTRL_PENDING; - } - else - { - /* - * Segment started with one or more valid characters, but fewer than - * the required 4 - */ - Status = AE_AML_BAD_NAME; - ACPI_ERROR ((AE_INFO, - "Bad character %02x in name, at %p", - *AmlAddress, AmlAddress)); - } - - *InAmlAddress = ACPI_CAST_PTR (UINT8, AmlAddress); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExGetNameString - * - * PARAMETERS: DataType - Object type to be associated with this - * name - * InAmlAddress - Pointer to the namestring in the AML code - * OutNameString - Where the namestring is returned - * OutNameLength - Length of the returned string - * - * RETURN: Status, namestring and length - * - * DESCRIPTION: Extract a full namepath from the AML byte stream, - * including any prefixes. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExGetNameString ( - ACPI_OBJECT_TYPE DataType, - UINT8 *InAmlAddress, - char **OutNameString, - UINT32 *OutNameLength) -{ - ACPI_STATUS Status = AE_OK; - UINT8 *AmlAddress = InAmlAddress; - char *NameString = NULL; - UINT32 NumSegments; - UINT32 PrefixCount = 0; - BOOLEAN HasPrefix = FALSE; - - - ACPI_FUNCTION_TRACE_PTR (ExGetNameString, AmlAddress); - - - if (ACPI_TYPE_LOCAL_REGION_FIELD == DataType || - ACPI_TYPE_LOCAL_BANK_FIELD == DataType || - ACPI_TYPE_LOCAL_INDEX_FIELD == DataType) - { - /* Disallow prefixes for types associated with FieldUnit names */ - - NameString = AcpiExAllocateNameString (0, 1); - if (!NameString) - { - Status = AE_NO_MEMORY; - } - else - { - Status = AcpiExNameSegment (&AmlAddress, NameString); - } - } - else - { - /* - * DataType is not a field name. - * Examine first character of name for root or parent prefix operators - */ - switch (*AmlAddress) - { - case AML_ROOT_PREFIX: - - ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "RootPrefix(\\) at %p\n", - AmlAddress)); - - /* - * Remember that we have a RootPrefix -- - * see comment in AcpiExAllocateNameString() - */ - AmlAddress++; - PrefixCount = ACPI_UINT32_MAX; - HasPrefix = TRUE; - break; - - - case AML_PARENT_PREFIX: - - /* Increment past possibly multiple parent prefixes */ - - do - { - ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "ParentPrefix (^) at %p\n", - AmlAddress)); - - AmlAddress++; - PrefixCount++; - - } while (*AmlAddress == AML_PARENT_PREFIX); - - HasPrefix = TRUE; - break; - - - default: - - /* Not a prefix character */ - - break; - } - - /* Examine first character of name for name segment prefix operator */ - - switch (*AmlAddress) - { - case AML_DUAL_NAME_PREFIX: - - ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "DualNamePrefix at %p\n", - AmlAddress)); - - AmlAddress++; - NameString = AcpiExAllocateNameString (PrefixCount, 2); - if (!NameString) - { - Status = AE_NO_MEMORY; - break; - } - - /* Indicate that we processed a prefix */ - - HasPrefix = TRUE; - - Status = AcpiExNameSegment (&AmlAddress, NameString); - if (ACPI_SUCCESS (Status)) - { - Status = AcpiExNameSegment (&AmlAddress, NameString); - } - break; - - - case AML_MULTI_NAME_PREFIX_OP: - - ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "MultiNamePrefix at %p\n", - AmlAddress)); - - /* Fetch count of segments remaining in name path */ - - AmlAddress++; - NumSegments = *AmlAddress; - - NameString = AcpiExAllocateNameString (PrefixCount, NumSegments); - if (!NameString) - { - Status = AE_NO_MEMORY; - break; - } - - /* Indicate that we processed a prefix */ - - AmlAddress++; - HasPrefix = TRUE; - - while (NumSegments && - (Status = AcpiExNameSegment (&AmlAddress, NameString)) == - AE_OK) - { - NumSegments--; - } - - break; - - - case 0: - - /* NullName valid as of 8-12-98 ASL/AML Grammar Update */ - - if (PrefixCount == ACPI_UINT32_MAX) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "NameSeg is \"\\\" followed by NULL\n")); - } - - /* Consume the NULL byte */ - - AmlAddress++; - NameString = AcpiExAllocateNameString (PrefixCount, 0); - if (!NameString) - { - Status = AE_NO_MEMORY; - break; - } - - break; - - - default: - - /* Name segment string */ - - NameString = AcpiExAllocateNameString (PrefixCount, 1); - if (!NameString) - { - Status = AE_NO_MEMORY; - break; - } - - Status = AcpiExNameSegment (&AmlAddress, NameString); - break; - } - } - - if (AE_CTRL_PENDING == Status && HasPrefix) - { - /* Ran out of segments after processing a prefix */ - - ACPI_ERROR ((AE_INFO, - "Malformed Name at %p", NameString)); - Status = AE_AML_BAD_NAME; - } - - if (ACPI_FAILURE (Status)) - { - if (NameString) - { - ACPI_FREE (NameString); - } - return_ACPI_STATUS (Status); - } - - *OutNameString = NameString; - *OutNameLength = (UINT32) (AmlAddress - InAmlAddress); - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exoparg1.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exoparg1.c deleted file mode 100644 index 70157e591d..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exoparg1.c +++ /dev/null @@ -1,1179 +0,0 @@ - -/****************************************************************************** - * - * Module Name: exoparg1 - AML execution - opcodes with 1 argument - * $Revision: 1.181 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __EXOPARG1_C__ - -#include "acpi.h" -#include "acparser.h" -#include "acdispat.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acnamesp.h" - - -#define _COMPONENT ACPI_EXECUTER - ACPI_MODULE_NAME ("exoparg1") - - -/*! - * Naming convention for AML interpreter execution routines. - * - * The routines that begin execution of AML opcodes are named with a common - * convention based upon the number of arguments, the number of target operands, - * and whether or not a value is returned: - * - * AcpiExOpcode_xA_yT_zR - * - * Where: - * - * xA - ARGUMENTS: The number of arguments (input operands) that are - * required for this opcode type (0 through 6 args). - * yT - TARGETS: The number of targets (output operands) that are required - * for this opcode type (0, 1, or 2 targets). - * zR - RETURN VALUE: Indicates whether this opcode type returns a value - * as the function return (0 or 1). - * - * The AcpiExOpcode* functions are called via the Dispatcher component with - * fully resolved operands. -!*/ - -/******************************************************************************* - * - * FUNCTION: AcpiExOpcode_0A_0T_1R - * - * PARAMETERS: WalkState - Current state (contains AML opcode) - * - * RETURN: Status - * - * DESCRIPTION: Execute operator with no operands, one return value - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExOpcode_0A_0T_1R ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - ACPI_OPERAND_OBJECT *ReturnDesc = NULL; - - - ACPI_FUNCTION_TRACE_STR (ExOpcode_0A_0T_1R, - AcpiPsGetOpcodeName (WalkState->Opcode)); - - - /* Examine the AML opcode */ - - switch (WalkState->Opcode) - { - case AML_TIMER_OP: /* Timer () */ - - /* Create a return object of type Integer */ - - ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); - if (!ReturnDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } -#if ACPI_MACHINE_WIDTH != 16 - ReturnDesc->Integer.Value = AcpiOsGetTimer (); -#endif - break; - - default: /* Unknown opcode */ - - ACPI_ERROR ((AE_INFO, "Unknown AML opcode %X", - WalkState->Opcode)); - Status = AE_AML_BAD_OPCODE; - break; - } - -Cleanup: - - /* Delete return object on error */ - - if ((ACPI_FAILURE (Status)) || WalkState->ResultObj) - { - AcpiUtRemoveReference (ReturnDesc); - } - else - { - /* Save the return value */ - - WalkState->ResultObj = ReturnDesc; - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExOpcode_1A_0T_0R - * - * PARAMETERS: WalkState - Current state (contains AML opcode) - * - * RETURN: Status - * - * DESCRIPTION: Execute Type 1 monadic operator with numeric operand on - * object stack - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExOpcode_1A_0T_0R ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE_STR (ExOpcode_1A_0T_0R, - AcpiPsGetOpcodeName (WalkState->Opcode)); - - - /* Examine the AML opcode */ - - switch (WalkState->Opcode) - { - case AML_RELEASE_OP: /* Release (MutexObject) */ - - Status = AcpiExReleaseMutex (Operand[0], WalkState); - break; - - - case AML_RESET_OP: /* Reset (EventObject) */ - - Status = AcpiExSystemResetEvent (Operand[0]); - break; - - - case AML_SIGNAL_OP: /* Signal (EventObject) */ - - Status = AcpiExSystemSignalEvent (Operand[0]); - break; - - - case AML_SLEEP_OP: /* Sleep (MsecTime) */ - - Status = AcpiExSystemDoSuspend (Operand[0]->Integer.Value); - break; - - - case AML_STALL_OP: /* Stall (UsecTime) */ - - Status = AcpiExSystemDoStall ((UINT32) Operand[0]->Integer.Value); - break; - - - case AML_UNLOAD_OP: /* Unload (Handle) */ - - Status = AcpiExUnloadTable (Operand[0]); - break; - - - default: /* Unknown opcode */ - - ACPI_ERROR ((AE_INFO, "Unknown AML opcode %X", - WalkState->Opcode)); - Status = AE_AML_BAD_OPCODE; - break; - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExOpcode_1A_1T_0R - * - * PARAMETERS: WalkState - Current state (contains AML opcode) - * - * RETURN: Status - * - * DESCRIPTION: Execute opcode with one argument, one target, and no - * return value. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExOpcode_1A_1T_0R ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; - - - ACPI_FUNCTION_TRACE_STR (ExOpcode_1A_1T_0R, - AcpiPsGetOpcodeName (WalkState->Opcode)); - - - /* Examine the AML opcode */ - - switch (WalkState->Opcode) - { - case AML_LOAD_OP: - - Status = AcpiExLoadOp (Operand[0], Operand[1], WalkState); - break; - - default: /* Unknown opcode */ - - ACPI_ERROR ((AE_INFO, "Unknown AML opcode %X", - WalkState->Opcode)); - Status = AE_AML_BAD_OPCODE; - goto Cleanup; - } - - -Cleanup: - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExOpcode_1A_1T_1R - * - * PARAMETERS: WalkState - Current state (contains AML opcode) - * - * RETURN: Status - * - * DESCRIPTION: Execute opcode with one argument, one target, and a - * return value. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExOpcode_1A_1T_1R ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; - ACPI_OPERAND_OBJECT *ReturnDesc = NULL; - ACPI_OPERAND_OBJECT *ReturnDesc2 = NULL; - UINT32 Temp32; - UINT32 i; - ACPI_INTEGER PowerOfTen; - ACPI_INTEGER Digit; - - - ACPI_FUNCTION_TRACE_STR (ExOpcode_1A_1T_1R, - AcpiPsGetOpcodeName (WalkState->Opcode)); - - - /* Examine the AML opcode */ - - switch (WalkState->Opcode) - { - case AML_BIT_NOT_OP: - case AML_FIND_SET_LEFT_BIT_OP: - case AML_FIND_SET_RIGHT_BIT_OP: - case AML_FROM_BCD_OP: - case AML_TO_BCD_OP: - case AML_COND_REF_OF_OP: - - /* Create a return object of type Integer for these opcodes */ - - ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); - if (!ReturnDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - switch (WalkState->Opcode) - { - case AML_BIT_NOT_OP: /* Not (Operand, Result) */ - - ReturnDesc->Integer.Value = ~Operand[0]->Integer.Value; - break; - - - case AML_FIND_SET_LEFT_BIT_OP: /* FindSetLeftBit (Operand, Result) */ - - ReturnDesc->Integer.Value = Operand[0]->Integer.Value; - - /* - * Acpi specification describes Integer type as a little - * endian unsigned value, so this boundary condition is valid. - */ - for (Temp32 = 0; ReturnDesc->Integer.Value && - Temp32 < ACPI_INTEGER_BIT_SIZE; ++Temp32) - { - ReturnDesc->Integer.Value >>= 1; - } - - ReturnDesc->Integer.Value = Temp32; - break; - - - case AML_FIND_SET_RIGHT_BIT_OP: /* FindSetRightBit (Operand, Result) */ - - ReturnDesc->Integer.Value = Operand[0]->Integer.Value; - - /* - * The Acpi specification describes Integer type as a little - * endian unsigned value, so this boundary condition is valid. - */ - for (Temp32 = 0; ReturnDesc->Integer.Value && - Temp32 < ACPI_INTEGER_BIT_SIZE; ++Temp32) - { - ReturnDesc->Integer.Value <<= 1; - } - - /* Since the bit position is one-based, subtract from 33 (65) */ - - ReturnDesc->Integer.Value = - Temp32 == 0 ? 0 : (ACPI_INTEGER_BIT_SIZE + 1) - Temp32; - break; - - - case AML_FROM_BCD_OP: /* FromBcd (BCDValue, Result) */ - - /* - * The 64-bit ACPI integer can hold 16 4-bit BCD characters - * (if table is 32-bit, integer can hold 8 BCD characters) - * Convert each 4-bit BCD value - */ - PowerOfTen = 1; - ReturnDesc->Integer.Value = 0; - Digit = Operand[0]->Integer.Value; - - /* Convert each BCD digit (each is one nybble wide) */ - - for (i = 0; (i < AcpiGbl_IntegerNybbleWidth) && (Digit > 0); i++) - { - /* Get the least significant 4-bit BCD digit */ - - Temp32 = ((UINT32) Digit) & 0xF; - - /* Check the range of the digit */ - - if (Temp32 > 9) - { - ACPI_ERROR ((AE_INFO, - "BCD digit too large (not decimal): 0x%X", - Temp32)); - - Status = AE_AML_NUMERIC_OVERFLOW; - goto Cleanup; - } - - /* Sum the digit into the result with the current power of 10 */ - - ReturnDesc->Integer.Value += - (((ACPI_INTEGER) Temp32) * PowerOfTen); - - /* Shift to next BCD digit */ - - Digit >>= 4; - - /* Next power of 10 */ - - PowerOfTen *= 10; - } - break; - - - case AML_TO_BCD_OP: /* ToBcd (Operand, Result) */ - - ReturnDesc->Integer.Value = 0; - Digit = Operand[0]->Integer.Value; - - /* Each BCD digit is one nybble wide */ - - for (i = 0; (i < AcpiGbl_IntegerNybbleWidth) && (Digit > 0); i++) - { - (void) AcpiUtShortDivide (Digit, 10, &Digit, &Temp32); - - /* - * Insert the BCD digit that resides in the - * remainder from above - */ - ReturnDesc->Integer.Value |= - (((ACPI_INTEGER) Temp32) << ACPI_MUL_4 (i)); - } - - /* Overflow if there is any data left in Digit */ - - if (Digit > 0) - { - ACPI_ERROR ((AE_INFO, - "Integer too large to convert to BCD: %8.8X%8.8X", - ACPI_FORMAT_UINT64 (Operand[0]->Integer.Value))); - Status = AE_AML_NUMERIC_OVERFLOW; - goto Cleanup; - } - break; - - - case AML_COND_REF_OF_OP: /* CondRefOf (SourceObject, Result) */ - - /* - * This op is a little strange because the internal return value is - * different than the return value stored in the result descriptor - * (There are really two return values) - */ - if ((ACPI_NAMESPACE_NODE *) Operand[0] == AcpiGbl_RootNode) - { - /* - * This means that the object does not exist in the namespace, - * return FALSE - */ - ReturnDesc->Integer.Value = 0; - goto Cleanup; - } - - /* Get the object reference, store it, and remove our reference */ - - Status = AcpiExGetObjectReference (Operand[0], - &ReturnDesc2, WalkState); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - Status = AcpiExStore (ReturnDesc2, Operand[1], WalkState); - AcpiUtRemoveReference (ReturnDesc2); - - /* The object exists in the namespace, return TRUE */ - - ReturnDesc->Integer.Value = ACPI_INTEGER_MAX; - goto Cleanup; - - - default: - /* No other opcodes get here */ - break; - } - break; - - - case AML_STORE_OP: /* Store (Source, Target) */ - - /* - * A store operand is typically a number, string, buffer or lvalue - * Be careful about deleting the source object, - * since the object itself may have been stored. - */ - Status = AcpiExStore (Operand[0], Operand[1], WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* It is possible that the Store already produced a return object */ - - if (!WalkState->ResultObj) - { - /* - * Normally, we would remove a reference on the Operand[0] - * parameter; But since it is being used as the internal return - * object (meaning we would normally increment it), the two - * cancel out, and we simply don't do anything. - */ - WalkState->ResultObj = Operand[0]; - WalkState->Operands[0] = NULL; /* Prevent deletion */ - } - return_ACPI_STATUS (Status); - - - /* - * ACPI 2.0 Opcodes - */ - case AML_COPY_OP: /* Copy (Source, Target) */ - - Status = AcpiUtCopyIobjectToIobject (Operand[0], &ReturnDesc, - WalkState); - break; - - - case AML_TO_DECSTRING_OP: /* ToDecimalString (Data, Result) */ - - Status = AcpiExConvertToString (Operand[0], &ReturnDesc, - ACPI_EXPLICIT_CONVERT_DECIMAL); - if (ReturnDesc == Operand[0]) - { - /* No conversion performed, add ref to handle return value */ - AcpiUtAddReference (ReturnDesc); - } - break; - - - case AML_TO_HEXSTRING_OP: /* ToHexString (Data, Result) */ - - Status = AcpiExConvertToString (Operand[0], &ReturnDesc, - ACPI_EXPLICIT_CONVERT_HEX); - if (ReturnDesc == Operand[0]) - { - /* No conversion performed, add ref to handle return value */ - AcpiUtAddReference (ReturnDesc); - } - break; - - - case AML_TO_BUFFER_OP: /* ToBuffer (Data, Result) */ - - Status = AcpiExConvertToBuffer (Operand[0], &ReturnDesc); - if (ReturnDesc == Operand[0]) - { - /* No conversion performed, add ref to handle return value */ - AcpiUtAddReference (ReturnDesc); - } - break; - - - case AML_TO_INTEGER_OP: /* ToInteger (Data, Result) */ - - Status = AcpiExConvertToInteger (Operand[0], &ReturnDesc, - ACPI_ANY_BASE); - if (ReturnDesc == Operand[0]) - { - /* No conversion performed, add ref to handle return value */ - AcpiUtAddReference (ReturnDesc); - } - break; - - - case AML_SHIFT_LEFT_BIT_OP: /* ShiftLeftBit (Source, BitNum) */ - case AML_SHIFT_RIGHT_BIT_OP: /* ShiftRightBit (Source, BitNum) */ - - /* These are two obsolete opcodes */ - - ACPI_ERROR ((AE_INFO, - "%s is obsolete and not implemented", - AcpiPsGetOpcodeName (WalkState->Opcode))); - Status = AE_SUPPORT; - goto Cleanup; - - - default: /* Unknown opcode */ - - ACPI_ERROR ((AE_INFO, "Unknown AML opcode %X", - WalkState->Opcode)); - Status = AE_AML_BAD_OPCODE; - goto Cleanup; - } - - if (ACPI_SUCCESS (Status)) - { - /* Store the return value computed above into the target object */ - - Status = AcpiExStore (ReturnDesc, Operand[1], WalkState); - } - - -Cleanup: - - /* Delete return object on error */ - - if (ACPI_FAILURE (Status)) - { - AcpiUtRemoveReference (ReturnDesc); - } - - /* Save return object on success */ - - else if (!WalkState->ResultObj) - { - WalkState->ResultObj = ReturnDesc; - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExOpcode_1A_0T_1R - * - * PARAMETERS: WalkState - Current state (contains AML opcode) - * - * RETURN: Status - * - * DESCRIPTION: Execute opcode with one argument, no target, and a return value - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExOpcode_1A_0T_1R ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; - ACPI_OPERAND_OBJECT *TempDesc; - ACPI_OPERAND_OBJECT *ReturnDesc = NULL; - ACPI_STATUS Status = AE_OK; - UINT32 Type; - ACPI_INTEGER Value; - - - ACPI_FUNCTION_TRACE_STR (ExOpcode_1A_0T_1R, - AcpiPsGetOpcodeName (WalkState->Opcode)); - - - /* Examine the AML opcode */ - - switch (WalkState->Opcode) - { - case AML_LNOT_OP: /* LNot (Operand) */ - - ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); - if (!ReturnDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* - * Set result to ONES (TRUE) if Value == 0. Note: - * ReturnDesc->Integer.Value is initially == 0 (FALSE) from above. - */ - if (!Operand[0]->Integer.Value) - { - ReturnDesc->Integer.Value = ACPI_INTEGER_MAX; - } - break; - - - case AML_DECREMENT_OP: /* Decrement (Operand) */ - case AML_INCREMENT_OP: /* Increment (Operand) */ - - /* - * Create a new integer. Can't just get the base integer and - * increment it because it may be an Arg or Field. - */ - ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); - if (!ReturnDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* - * Since we are expecting a Reference operand, it can be either a - * NS Node or an internal object. - */ - TempDesc = Operand[0]; - if (ACPI_GET_DESCRIPTOR_TYPE (TempDesc) == ACPI_DESC_TYPE_OPERAND) - { - /* Internal reference object - prevent deletion */ - - AcpiUtAddReference (TempDesc); - } - - /* - * Convert the Reference operand to an Integer (This removes a - * reference on the Operand[0] object) - * - * NOTE: We use LNOT_OP here in order to force resolution of the - * reference operand to an actual integer. - */ - Status = AcpiExResolveOperands (AML_LNOT_OP, &TempDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "While resolving operands for [%s]", - AcpiPsGetOpcodeName (WalkState->Opcode))); - - goto Cleanup; - } - - /* - * TempDesc is now guaranteed to be an Integer object -- - * Perform the actual increment or decrement - */ - if (WalkState->Opcode == AML_INCREMENT_OP) - { - ReturnDesc->Integer.Value = TempDesc->Integer.Value +1; - } - else - { - ReturnDesc->Integer.Value = TempDesc->Integer.Value -1; - } - - /* Finished with this Integer object */ - - AcpiUtRemoveReference (TempDesc); - - /* - * Store the result back (indirectly) through the original - * Reference object - */ - Status = AcpiExStore (ReturnDesc, Operand[0], WalkState); - break; - - - case AML_TYPE_OP: /* ObjectType (SourceObject) */ - - /* - * Note: The operand is not resolved at this point because we want to - * get the associated object, not its value. For example, we don't - * want to resolve a FieldUnit to its value, we want the actual - * FieldUnit object. - */ - - /* Get the type of the base object */ - - Status = AcpiExResolveMultiple (WalkState, Operand[0], &Type, NULL); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* Allocate a descriptor to hold the type. */ - - ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); - if (!ReturnDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - ReturnDesc->Integer.Value = Type; - break; - - - case AML_SIZE_OF_OP: /* SizeOf (SourceObject) */ - - /* - * Note: The operand is not resolved at this point because we want to - * get the associated object, not its value. - */ - - /* Get the base object */ - - Status = AcpiExResolveMultiple (WalkState, - Operand[0], &Type, &TempDesc); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* - * The type of the base object must be integer, buffer, string, or - * package. All others are not supported. - * - * NOTE: Integer is not specifically supported by the ACPI spec, - * but is supported implicitly via implicit operand conversion. - * rather than bother with conversion, we just use the byte width - * global (4 or 8 bytes). - */ - switch (Type) - { - case ACPI_TYPE_INTEGER: - Value = AcpiGbl_IntegerByteWidth; - break; - - case ACPI_TYPE_BUFFER: - Value = TempDesc->Buffer.Length; - break; - - case ACPI_TYPE_STRING: - Value = TempDesc->String.Length; - break; - - case ACPI_TYPE_PACKAGE: - Value = TempDesc->Package.Count; - break; - - default: - ACPI_ERROR ((AE_INFO, - "Operand is not Buf/Int/Str/Pkg - found type %s", - AcpiUtGetTypeName (Type))); - Status = AE_AML_OPERAND_TYPE; - goto Cleanup; - } - - /* - * Now that we have the size of the object, create a result - * object to hold the value - */ - ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); - if (!ReturnDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - ReturnDesc->Integer.Value = Value; - break; - - - case AML_REF_OF_OP: /* RefOf (SourceObject) */ - - Status = AcpiExGetObjectReference (Operand[0], &ReturnDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - break; - - - case AML_DEREF_OF_OP: /* DerefOf (ObjReference | String) */ - - /* Check for a method local or argument, or standalone String */ - - if (ACPI_GET_DESCRIPTOR_TYPE (Operand[0]) == ACPI_DESC_TYPE_NAMED) - { - TempDesc = AcpiNsGetAttachedObject ( - (ACPI_NAMESPACE_NODE *) Operand[0]); - if (TempDesc && - ((ACPI_GET_OBJECT_TYPE (TempDesc) == ACPI_TYPE_STRING) || - (ACPI_GET_OBJECT_TYPE (TempDesc) == ACPI_TYPE_LOCAL_REFERENCE))) - { - Operand[0] = TempDesc; - AcpiUtAddReference (TempDesc); - } - else - { - Status = AE_AML_OPERAND_TYPE; - goto Cleanup; - } - } - else - { - switch (ACPI_GET_OBJECT_TYPE (Operand[0])) - { - case ACPI_TYPE_LOCAL_REFERENCE: - /* - * This is a DerefOf (LocalX | ArgX) - * - * Must resolve/dereference the local/arg reference first - */ - switch (Operand[0]->Reference.Opcode) - { - case AML_LOCAL_OP: - case AML_ARG_OP: - - /* Set Operand[0] to the value of the local/arg */ - - Status = AcpiDsMethodDataGetValue ( - Operand[0]->Reference.Opcode, - Operand[0]->Reference.Offset, - WalkState, &TempDesc); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* - * Delete our reference to the input object and - * point to the object just retrieved - */ - AcpiUtRemoveReference (Operand[0]); - Operand[0] = TempDesc; - break; - - case AML_REF_OF_OP: - - /* Get the object to which the reference refers */ - - TempDesc = Operand[0]->Reference.Object; - AcpiUtRemoveReference (Operand[0]); - Operand[0] = TempDesc; - break; - - default: - - /* Must be an Index op - handled below */ - break; - } - break; - - case ACPI_TYPE_STRING: - break; - - default: - Status = AE_AML_OPERAND_TYPE; - goto Cleanup; - } - } - - if (ACPI_GET_DESCRIPTOR_TYPE (Operand[0]) != ACPI_DESC_TYPE_NAMED) - { - if (ACPI_GET_OBJECT_TYPE (Operand[0]) == ACPI_TYPE_STRING) - { - /* - * This is a DerefOf (String). The string is a reference - * to a named ACPI object. - * - * 1) Find the owning Node - * 2) Dereference the node to an actual object. Could be a - * Field, so we need to resolve the node to a value. - */ - Status = AcpiNsGetNode (WalkState->ScopeInfo->Scope.Node, - Operand[0]->String.Pointer, - ACPI_NS_SEARCH_PARENT, - ACPI_CAST_INDIRECT_PTR ( - ACPI_NAMESPACE_NODE, &ReturnDesc)); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - Status = AcpiExResolveNodeToValue ( - ACPI_CAST_INDIRECT_PTR ( - ACPI_NAMESPACE_NODE, &ReturnDesc), - WalkState); - goto Cleanup; - } - } - - /* Operand[0] may have changed from the code above */ - - if (ACPI_GET_DESCRIPTOR_TYPE (Operand[0]) == ACPI_DESC_TYPE_NAMED) - { - /* - * This is a DerefOf (ObjectReference) - * Get the actual object from the Node (This is the dereference). - * This case may only happen when a LocalX or ArgX is - * dereferenced above. - */ - ReturnDesc = AcpiNsGetAttachedObject ( - (ACPI_NAMESPACE_NODE *) Operand[0]); - AcpiUtAddReference (ReturnDesc); - } - else - { - /* - * This must be a reference object produced by either the - * Index() or RefOf() operator - */ - switch (Operand[0]->Reference.Opcode) - { - case AML_INDEX_OP: - - /* - * The target type for the Index operator must be - * either a Buffer or a Package - */ - switch (Operand[0]->Reference.TargetType) - { - case ACPI_TYPE_BUFFER_FIELD: - - TempDesc = Operand[0]->Reference.Object; - - /* - * Create a new object that contains one element of the - * buffer -- the element pointed to by the index. - * - * NOTE: index into a buffer is NOT a pointer to a - * sub-buffer of the main buffer, it is only a pointer to a - * single element (byte) of the buffer! - */ - ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); - if (!ReturnDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* - * Since we are returning the value of the buffer at the - * indexed location, we don't need to add an additional - * reference to the buffer itself. - */ - ReturnDesc->Integer.Value = - TempDesc->Buffer.Pointer[Operand[0]->Reference.Offset]; - break; - - - case ACPI_TYPE_PACKAGE: - - /* - * Return the referenced element of the package. We must - * add another reference to the referenced object, however. - */ - ReturnDesc = *(Operand[0]->Reference.Where); - if (ReturnDesc) - { - AcpiUtAddReference (ReturnDesc); - } - break; - - - default: - - ACPI_ERROR ((AE_INFO, - "Unknown Index TargetType %X in obj %p", - Operand[0]->Reference.TargetType, Operand[0])); - Status = AE_AML_OPERAND_TYPE; - goto Cleanup; - } - break; - - - case AML_REF_OF_OP: - - ReturnDesc = Operand[0]->Reference.Object; - - if (ACPI_GET_DESCRIPTOR_TYPE (ReturnDesc) == - ACPI_DESC_TYPE_NAMED) - { - ReturnDesc = AcpiNsGetAttachedObject ( - (ACPI_NAMESPACE_NODE *) ReturnDesc); - } - - /* Add another reference to the object! */ - - AcpiUtAddReference (ReturnDesc); - break; - - - default: - ACPI_ERROR ((AE_INFO, - "Unknown opcode in reference(%p) - %X", - Operand[0], Operand[0]->Reference.Opcode)); - - Status = AE_TYPE; - goto Cleanup; - } - } - break; - - - default: - - ACPI_ERROR ((AE_INFO, "Unknown AML opcode %X", - WalkState->Opcode)); - Status = AE_AML_BAD_OPCODE; - goto Cleanup; - } - - -Cleanup: - - /* Delete return object on error */ - - if (ACPI_FAILURE (Status)) - { - AcpiUtRemoveReference (ReturnDesc); - } - - /* Save return object on success */ - - else - { - WalkState->ResultObj = ReturnDesc; - } - - return_ACPI_STATUS (Status); -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exoparg2.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exoparg2.c deleted file mode 100644 index 53ee147640..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exoparg2.c +++ /dev/null @@ -1,734 +0,0 @@ -/****************************************************************************** - * - * Module Name: exoparg2 - AML execution - opcodes with 2 arguments - * $Revision: 1.141 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __EXOPARG2_C__ - -#include "acpi.h" -#include "acparser.h" -#include "acinterp.h" -#include "acevents.h" -#include "amlcode.h" - - -#define _COMPONENT ACPI_EXECUTER - ACPI_MODULE_NAME ("exoparg2") - - -/*! - * Naming convention for AML interpreter execution routines. - * - * The routines that begin execution of AML opcodes are named with a common - * convention based upon the number of arguments, the number of target operands, - * and whether or not a value is returned: - * - * AcpiExOpcode_xA_yT_zR - * - * Where: - * - * xA - ARGUMENTS: The number of arguments (input operands) that are - * required for this opcode type (1 through 6 args). - * yT - TARGETS: The number of targets (output operands) that are required - * for this opcode type (0, 1, or 2 targets). - * zR - RETURN VALUE: Indicates whether this opcode type returns a value - * as the function return (0 or 1). - * - * The AcpiExOpcode* functions are called via the Dispatcher component with - * fully resolved operands. -!*/ - - -/******************************************************************************* - * - * FUNCTION: AcpiExOpcode_2A_0T_0R - * - * PARAMETERS: WalkState - Current walk state - * - * RETURN: Status - * - * DESCRIPTION: Execute opcode with two arguments, no target, and no return - * value. - * - * ALLOCATION: Deletes both operands - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExOpcode_2A_0T_0R ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; - ACPI_NAMESPACE_NODE *Node; - UINT32 Value; - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE_STR (ExOpcode_2A_0T_0R, - AcpiPsGetOpcodeName (WalkState->Opcode)); - - - /* Examine the opcode */ - - switch (WalkState->Opcode) - { - case AML_NOTIFY_OP: /* Notify (NotifyObject, NotifyValue) */ - - /* The first operand is a namespace node */ - - Node = (ACPI_NAMESPACE_NODE *) Operand[0]; - - /* Second value is the notify value */ - - Value = (UINT32) Operand[1]->Integer.Value; - - /* Are notifies allowed on this object? */ - - if (!AcpiEvIsNotifyObject (Node)) - { - ACPI_ERROR ((AE_INFO, - "Unexpected notify object type [%s]", - AcpiUtGetTypeName (Node->Type))); - - Status = AE_AML_OPERAND_TYPE; - break; - } - -#ifdef ACPI_GPE_NOTIFY_CHECK - /* - * GPE method wake/notify check. Here, we want to ensure that we - * don't receive any "DeviceWake" Notifies from a GPE _Lxx or _Exx - * GPE method during system runtime. If we do, the GPE is marked - * as "wake-only" and disabled. - * - * 1) Is the Notify() value == DeviceWake? - * 2) Is this a GPE deferred method? (An _Lxx or _Exx method) - * 3) Did the original GPE happen at system runtime? - * (versus during wake) - * - * If all three cases are true, this is a wake-only GPE that should - * be disabled at runtime. - */ - if (Value == 2) /* DeviceWake */ - { - Status = AcpiEvCheckForWakeOnlyGpe (WalkState->GpeEventInfo); - if (ACPI_FAILURE (Status)) - { - /* AE_WAKE_ONLY_GPE only error, means ignore this notify */ - - return_ACPI_STATUS (AE_OK) - } - } -#endif - - /* - * Dispatch the notify to the appropriate handler - * NOTE: the request is queued for execution after this method - * completes. The notify handlers are NOT invoked synchronously - * from this thread -- because handlers may in turn run other - * control methods. - */ - Status = AcpiEvQueueNotifyRequest (Node, Value); - break; - - - default: - - ACPI_ERROR ((AE_INFO, "Unknown AML opcode %X", - WalkState->Opcode)); - Status = AE_AML_BAD_OPCODE; - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExOpcode_2A_2T_1R - * - * PARAMETERS: WalkState - Current walk state - * - * RETURN: Status - * - * DESCRIPTION: Execute a dyadic operator (2 operands) with 2 output targets - * and one implicit return value. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExOpcode_2A_2T_1R ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; - ACPI_OPERAND_OBJECT *ReturnDesc1 = NULL; - ACPI_OPERAND_OBJECT *ReturnDesc2 = NULL; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE_STR (ExOpcode_2A_2T_1R, - AcpiPsGetOpcodeName (WalkState->Opcode)); - - - /* Execute the opcode */ - - switch (WalkState->Opcode) - { - case AML_DIVIDE_OP: - - /* Divide (Dividend, Divisor, RemainderResult QuotientResult) */ - - ReturnDesc1 = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); - if (!ReturnDesc1) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - ReturnDesc2 = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); - if (!ReturnDesc2) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* Quotient to ReturnDesc1, remainder to ReturnDesc2 */ - - Status = AcpiUtDivide (Operand[0]->Integer.Value, - Operand[1]->Integer.Value, - &ReturnDesc1->Integer.Value, - &ReturnDesc2->Integer.Value); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - break; - - - default: - - ACPI_ERROR ((AE_INFO, "Unknown AML opcode %X", - WalkState->Opcode)); - Status = AE_AML_BAD_OPCODE; - goto Cleanup; - } - - /* Store the results to the target reference operands */ - - Status = AcpiExStore (ReturnDesc2, Operand[2], WalkState); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - Status = AcpiExStore (ReturnDesc1, Operand[3], WalkState); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* Return the remainder */ - - WalkState->ResultObj = ReturnDesc1; - - -Cleanup: - /* - * Since the remainder is not returned indirectly, remove a reference to - * it. Only the quotient is returned indirectly. - */ - AcpiUtRemoveReference (ReturnDesc2); - - if (ACPI_FAILURE (Status)) - { - /* Delete the return object */ - - AcpiUtRemoveReference (ReturnDesc1); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExOpcode_2A_1T_1R - * - * PARAMETERS: WalkState - Current walk state - * - * RETURN: Status - * - * DESCRIPTION: Execute opcode with two arguments, one target, and a return - * value. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExOpcode_2A_1T_1R ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; - ACPI_OPERAND_OBJECT *ReturnDesc = NULL; - ACPI_INTEGER Index; - ACPI_STATUS Status = AE_OK; - ACPI_SIZE Length; - - - ACPI_FUNCTION_TRACE_STR (ExOpcode_2A_1T_1R, - AcpiPsGetOpcodeName (WalkState->Opcode)); - - - /* Execute the opcode */ - - if (WalkState->OpInfo->Flags & AML_MATH) - { - /* All simple math opcodes (add, etc.) */ - - ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); - if (!ReturnDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - ReturnDesc->Integer.Value = AcpiExDoMathOp (WalkState->Opcode, - Operand[0]->Integer.Value, - Operand[1]->Integer.Value); - goto StoreResultToTarget; - } - - switch (WalkState->Opcode) - { - case AML_MOD_OP: /* Mod (Dividend, Divisor, RemainderResult (ACPI 2.0) */ - - ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); - if (!ReturnDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* ReturnDesc will contain the remainder */ - - Status = AcpiUtDivide (Operand[0]->Integer.Value, - Operand[1]->Integer.Value, - NULL, - &ReturnDesc->Integer.Value); - break; - - - case AML_CONCAT_OP: /* Concatenate (Data1, Data2, Result) */ - - Status = AcpiExDoConcatenate (Operand[0], Operand[1], - &ReturnDesc, WalkState); - break; - - - case AML_TO_STRING_OP: /* ToString (Buffer, Length, Result) (ACPI 2.0) */ - - /* - * Input object is guaranteed to be a buffer at this point (it may have - * been converted.) Copy the raw buffer data to a new object of - * type String. - */ - - /* - * Get the length of the new string. It is the smallest of: - * 1) Length of the input buffer - * 2) Max length as specified in the ToString operator - * 3) Length of input buffer up to a zero byte (null terminator) - * - * NOTE: A length of zero is ok, and will create a zero-length, null - * terminated string. - */ - Length = 0; - while ((Length < Operand[0]->Buffer.Length) && - (Length < Operand[1]->Integer.Value) && - (Operand[0]->Buffer.Pointer[Length])) - { - Length++; - } - - /* Allocate a new string object */ - - ReturnDesc = AcpiUtCreateStringObject (Length); - if (!ReturnDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* - * Copy the raw buffer data with no transform. - * (NULL terminated already) - */ - ACPI_MEMCPY (ReturnDesc->String.Pointer, - Operand[0]->Buffer.Pointer, Length); - break; - - - case AML_CONCAT_RES_OP: - - /* ConcatenateResTemplate (Buffer, Buffer, Result) (ACPI 2.0) */ - - Status = AcpiExConcatTemplate (Operand[0], Operand[1], - &ReturnDesc, WalkState); - break; - - - case AML_INDEX_OP: /* Index (Source Index Result) */ - - /* Create the internal return object */ - - ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_LOCAL_REFERENCE); - if (!ReturnDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* Initialize the Index reference object */ - - Index = Operand[1]->Integer.Value; - ReturnDesc->Reference.Offset = (UINT32) Index; - ReturnDesc->Reference.Opcode = AML_INDEX_OP; - - /* - * At this point, the Source operand is a String, Buffer, or Package. - * Verify that the index is within range. - */ - switch (ACPI_GET_OBJECT_TYPE (Operand[0])) - { - case ACPI_TYPE_STRING: - - if (Index >= Operand[0]->String.Length) - { - Status = AE_AML_STRING_LIMIT; - } - - ReturnDesc->Reference.TargetType = ACPI_TYPE_BUFFER_FIELD; - break; - - case ACPI_TYPE_BUFFER: - - if (Index >= Operand[0]->Buffer.Length) - { - Status = AE_AML_BUFFER_LIMIT; - } - - ReturnDesc->Reference.TargetType = ACPI_TYPE_BUFFER_FIELD; - break; - - case ACPI_TYPE_PACKAGE: - - if (Index >= Operand[0]->Package.Count) - { - Status = AE_AML_PACKAGE_LIMIT; - } - - ReturnDesc->Reference.TargetType = ACPI_TYPE_PACKAGE; - ReturnDesc->Reference.Where = &Operand[0]->Package.Elements [Index]; - break; - - default: - - Status = AE_AML_INTERNAL; - goto Cleanup; - } - - /* Failure means that the Index was beyond the end of the object */ - - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Index (%X%8.8X) is beyond end of object", - ACPI_FORMAT_UINT64 (Index))); - goto Cleanup; - } - - /* - * Save the target object and add a reference to it for the life - * of the index - */ - ReturnDesc->Reference.Object = Operand[0]; - AcpiUtAddReference (Operand[0]); - - /* Store the reference to the Target */ - - Status = AcpiExStore (ReturnDesc, Operand[2], WalkState); - - /* Return the reference */ - - WalkState->ResultObj = ReturnDesc; - goto Cleanup; - - - default: - - ACPI_ERROR ((AE_INFO, "Unknown AML opcode %X", - WalkState->Opcode)); - Status = AE_AML_BAD_OPCODE; - break; - } - - -StoreResultToTarget: - - if (ACPI_SUCCESS (Status)) - { - /* - * Store the result of the operation (which is now in ReturnDesc) into - * the Target descriptor. - */ - Status = AcpiExStore (ReturnDesc, Operand[2], WalkState); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - if (!WalkState->ResultObj) - { - WalkState->ResultObj = ReturnDesc; - } - } - - -Cleanup: - - /* Delete return object on error */ - - if (ACPI_FAILURE (Status)) - { - AcpiUtRemoveReference (ReturnDesc); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExOpcode_2A_0T_1R - * - * PARAMETERS: WalkState - Current walk state - * - * RETURN: Status - * - * DESCRIPTION: Execute opcode with 2 arguments, no target, and a return value - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExOpcode_2A_0T_1R ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; - ACPI_OPERAND_OBJECT *ReturnDesc = NULL; - ACPI_STATUS Status = AE_OK; - BOOLEAN LogicalResult = FALSE; - - - ACPI_FUNCTION_TRACE_STR (ExOpcode_2A_0T_1R, - AcpiPsGetOpcodeName (WalkState->Opcode)); - - - /* Create the internal return object */ - - ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); - if (!ReturnDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* Execute the Opcode */ - - if (WalkState->OpInfo->Flags & AML_LOGICAL_NUMERIC) - { - /* LogicalOp (Operand0, Operand1) */ - - Status = AcpiExDoLogicalNumericOp (WalkState->Opcode, - Operand[0]->Integer.Value, Operand[1]->Integer.Value, - &LogicalResult); - goto StoreLogicalResult; - } - else if (WalkState->OpInfo->Flags & AML_LOGICAL) - { - /* LogicalOp (Operand0, Operand1) */ - - Status = AcpiExDoLogicalOp (WalkState->Opcode, Operand[0], - Operand[1], &LogicalResult); - goto StoreLogicalResult; - } - - switch (WalkState->Opcode) - { - case AML_ACQUIRE_OP: /* Acquire (MutexObject, Timeout) */ - - Status = AcpiExAcquireMutex (Operand[1], Operand[0], WalkState); - if (Status == AE_TIME) - { - LogicalResult = TRUE; /* TRUE = Acquire timed out */ - Status = AE_OK; - } - break; - - - case AML_WAIT_OP: /* Wait (EventObject, Timeout) */ - - Status = AcpiExSystemWaitEvent (Operand[1], Operand[0]); - if (Status == AE_TIME) - { - LogicalResult = TRUE; /* TRUE, Wait timed out */ - Status = AE_OK; - } - break; - - - default: - - ACPI_ERROR ((AE_INFO, "Unknown AML opcode %X", - WalkState->Opcode)); - Status = AE_AML_BAD_OPCODE; - goto Cleanup; - } - - -StoreLogicalResult: - /* - * Set return value to according to LogicalResult. logical TRUE (all ones) - * Default is FALSE (zero) - */ - if (LogicalResult) - { - ReturnDesc->Integer.Value = ACPI_INTEGER_MAX; - } - - WalkState->ResultObj = ReturnDesc; - - -Cleanup: - - /* Delete return object on error */ - - if (ACPI_FAILURE (Status)) - { - AcpiUtRemoveReference (ReturnDesc); - } - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exoparg3.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exoparg3.c deleted file mode 100644 index 77a4e915b6..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exoparg3.c +++ /dev/null @@ -1,376 +0,0 @@ - -/****************************************************************************** - * - * Module Name: exoparg3 - AML execution - opcodes with 3 arguments - * $Revision: 1.33 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __EXOPARG3_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "acparser.h" -#include "amlcode.h" - - -#define _COMPONENT ACPI_EXECUTER - ACPI_MODULE_NAME ("exoparg3") - - -/*! - * Naming convention for AML interpreter execution routines. - * - * The routines that begin execution of AML opcodes are named with a common - * convention based upon the number of arguments, the number of target operands, - * and whether or not a value is returned: - * - * AcpiExOpcode_xA_yT_zR - * - * Where: - * - * xA - ARGUMENTS: The number of arguments (input operands) that are - * required for this opcode type (1 through 6 args). - * yT - TARGETS: The number of targets (output operands) that are required - * for this opcode type (0, 1, or 2 targets). - * zR - RETURN VALUE: Indicates whether this opcode type returns a value - * as the function return (0 or 1). - * - * The AcpiExOpcode* functions are called via the Dispatcher component with - * fully resolved operands. -!*/ - - -/******************************************************************************* - * - * FUNCTION: AcpiExOpcode_3A_0T_0R - * - * PARAMETERS: WalkState - Current walk state - * - * RETURN: Status - * - * DESCRIPTION: Execute Triadic operator (3 operands) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExOpcode_3A_0T_0R ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; - ACPI_SIGNAL_FATAL_INFO *Fatal; - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE_STR (ExOpcode_3A_0T_0R, - AcpiPsGetOpcodeName (WalkState->Opcode)); - - - switch (WalkState->Opcode) - { - case AML_FATAL_OP: /* Fatal (FatalType FatalCode FatalArg) */ - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "FatalOp: Type %X Code %X Arg %X <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n", - (UINT32) Operand[0]->Integer.Value, - (UINT32) Operand[1]->Integer.Value, - (UINT32) Operand[2]->Integer.Value)); - - Fatal = ACPI_ALLOCATE (sizeof (ACPI_SIGNAL_FATAL_INFO)); - if (Fatal) - { - Fatal->Type = (UINT32) Operand[0]->Integer.Value; - Fatal->Code = (UINT32) Operand[1]->Integer.Value; - Fatal->Argument = (UINT32) Operand[2]->Integer.Value; - } - - /* Always signal the OS! */ - - Status = AcpiOsSignal (ACPI_SIGNAL_FATAL, Fatal); - - /* Might return while OS is shutting down, just continue */ - - ACPI_FREE (Fatal); - break; - - - default: - - ACPI_ERROR ((AE_INFO, "Unknown AML opcode %X", - WalkState->Opcode)); - Status = AE_AML_BAD_OPCODE; - goto Cleanup; - } - - -Cleanup: - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExOpcode_3A_1T_1R - * - * PARAMETERS: WalkState - Current walk state - * - * RETURN: Status - * - * DESCRIPTION: Execute Triadic operator (3 operands) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExOpcode_3A_1T_1R ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; - ACPI_OPERAND_OBJECT *ReturnDesc = NULL; - char *Buffer = NULL; - ACPI_STATUS Status = AE_OK; - ACPI_INTEGER Index; - ACPI_SIZE Length; - - - ACPI_FUNCTION_TRACE_STR (ExOpcode_3A_1T_1R, - AcpiPsGetOpcodeName (WalkState->Opcode)); - - - switch (WalkState->Opcode) - { - case AML_MID_OP: /* Mid (Source[0], Index[1], Length[2], Result[3]) */ - - /* - * Create the return object. The Source operand is guaranteed to be - * either a String or a Buffer, so just use its type. - */ - ReturnDesc = AcpiUtCreateInternalObject ( - ACPI_GET_OBJECT_TYPE (Operand[0])); - if (!ReturnDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* Get the Integer values from the objects */ - - Index = Operand[1]->Integer.Value; - Length = (ACPI_SIZE) Operand[2]->Integer.Value; - - /* - * If the index is beyond the length of the String/Buffer, or if the - * requested length is zero, return a zero-length String/Buffer - */ - if (Index >= Operand[0]->String.Length) - { - Length = 0; - } - - /* Truncate request if larger than the actual String/Buffer */ - - else if ((Index + Length) > Operand[0]->String.Length) - { - Length = (ACPI_SIZE) Operand[0]->String.Length - - (ACPI_SIZE) Index; - } - - /* Strings always have a sub-pointer, not so for buffers */ - - switch (ACPI_GET_OBJECT_TYPE (Operand[0])) - { - case ACPI_TYPE_STRING: - - /* Always allocate a new buffer for the String */ - - Buffer = ACPI_ALLOCATE_ZEROED ((ACPI_SIZE) Length + 1); - if (!Buffer) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - break; - - case ACPI_TYPE_BUFFER: - - /* If the requested length is zero, don't allocate a buffer */ - - if (Length > 0) - { - /* Allocate a new buffer for the Buffer */ - - Buffer = ACPI_ALLOCATE_ZEROED (Length); - if (!Buffer) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - } - break; - - default: /* Should not happen */ - - Status = AE_AML_OPERAND_TYPE; - goto Cleanup; - } - - if (Buffer) - { - /* We have a buffer, copy the portion requested */ - - ACPI_MEMCPY (Buffer, Operand[0]->String.Pointer + Index, - Length); - } - - /* Set the length of the new String/Buffer */ - - ReturnDesc->String.Pointer = Buffer; - ReturnDesc->String.Length = (UINT32) Length; - - /* Mark buffer initialized */ - - ReturnDesc->Buffer.Flags |= AOPOBJ_DATA_VALID; - break; - - - default: - - ACPI_ERROR ((AE_INFO, "Unknown AML opcode %X", - WalkState->Opcode)); - Status = AE_AML_BAD_OPCODE; - goto Cleanup; - } - - /* Store the result in the target */ - - Status = AcpiExStore (ReturnDesc, Operand[3], WalkState); - -Cleanup: - - /* Delete return object on error */ - - if (ACPI_FAILURE (Status) || WalkState->ResultObj) - { - AcpiUtRemoveReference (ReturnDesc); - } - - /* Set the return object and exit */ - - else - { - WalkState->ResultObj = ReturnDesc; - } - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exoparg6.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exoparg6.c deleted file mode 100644 index f65c313f93..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exoparg6.c +++ /dev/null @@ -1,436 +0,0 @@ - -/****************************************************************************** - * - * Module Name: exoparg6 - AML execution - opcodes with 6 arguments - * $Revision: 1.27 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __EXOPARG6_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "acparser.h" -#include "amlcode.h" - - -#define _COMPONENT ACPI_EXECUTER - ACPI_MODULE_NAME ("exoparg6") - - -/*! - * Naming convention for AML interpreter execution routines. - * - * The routines that begin execution of AML opcodes are named with a common - * convention based upon the number of arguments, the number of target operands, - * and whether or not a value is returned: - * - * AcpiExOpcode_xA_yT_zR - * - * Where: - * - * xA - ARGUMENTS: The number of arguments (input operands) that are - * required for this opcode type (1 through 6 args). - * yT - TARGETS: The number of targets (output operands) that are required - * for this opcode type (0, 1, or 2 targets). - * zR - RETURN VALUE: Indicates whether this opcode type returns a value - * as the function return (0 or 1). - * - * The AcpiExOpcode* functions are called via the Dispatcher component with - * fully resolved operands. -!*/ - -/* Local prototypes */ - -static BOOLEAN -AcpiExDoMatch ( - UINT32 MatchOp, - ACPI_OPERAND_OBJECT *PackageObj, - ACPI_OPERAND_OBJECT *MatchObj); - - -/******************************************************************************* - * - * FUNCTION: AcpiExDoMatch - * - * PARAMETERS: MatchOp - The AML match operand - * PackageObj - Object from the target package - * MatchObj - Object to be matched - * - * RETURN: TRUE if the match is successful, FALSE otherwise - * - * DESCRIPTION: Implements the low-level match for the ASL Match operator. - * Package elements will be implicitly converted to the type of - * the match object (Integer/Buffer/String). - * - ******************************************************************************/ - -static BOOLEAN -AcpiExDoMatch ( - UINT32 MatchOp, - ACPI_OPERAND_OBJECT *PackageObj, - ACPI_OPERAND_OBJECT *MatchObj) -{ - BOOLEAN LogicalResult = TRUE; - ACPI_STATUS Status; - - - /* - * Note: Since the PackageObj/MatchObj ordering is opposite to that of - * the standard logical operators, we have to reverse them when we call - * DoLogicalOp in order to make the implicit conversion rules work - * correctly. However, this means we have to flip the entire equation - * also. A bit ugly perhaps, but overall, better than fussing the - * parameters around at runtime, over and over again. - * - * Below, P[i] refers to the package element, M refers to the Match object. - */ - switch (MatchOp) - { - case MATCH_MTR: - - /* Always true */ - - break; - - case MATCH_MEQ: - - /* - * True if equal: (P[i] == M) - * Change to: (M == P[i]) - */ - Status = AcpiExDoLogicalOp (AML_LEQUAL_OP, MatchObj, PackageObj, - &LogicalResult); - if (ACPI_FAILURE (Status)) - { - return (FALSE); - } - break; - - case MATCH_MLE: - - /* - * True if less than or equal: (P[i] <= M) (P[i] NotGreater than M) - * Change to: (M >= P[i]) (M NotLess than P[i]) - */ - Status = AcpiExDoLogicalOp (AML_LLESS_OP, MatchObj, PackageObj, - &LogicalResult); - if (ACPI_FAILURE (Status)) - { - return (FALSE); - } - LogicalResult = (BOOLEAN) !LogicalResult; - break; - - case MATCH_MLT: - - /* - * True if less than: (P[i] < M) - * Change to: (M > P[i]) - */ - Status = AcpiExDoLogicalOp (AML_LGREATER_OP, MatchObj, PackageObj, - &LogicalResult); - if (ACPI_FAILURE (Status)) - { - return (FALSE); - } - break; - - case MATCH_MGE: - - /* - * True if greater than or equal: (P[i] >= M) (P[i] NotLess than M) - * Change to: (M <= P[i]) (M NotGreater than P[i]) - */ - Status = AcpiExDoLogicalOp (AML_LGREATER_OP, MatchObj, PackageObj, - &LogicalResult); - if (ACPI_FAILURE (Status)) - { - return (FALSE); - } - LogicalResult = (BOOLEAN)!LogicalResult; - break; - - case MATCH_MGT: - - /* - * True if greater than: (P[i] > M) - * Change to: (M < P[i]) - */ - Status = AcpiExDoLogicalOp (AML_LLESS_OP, MatchObj, PackageObj, - &LogicalResult); - if (ACPI_FAILURE (Status)) - { - return (FALSE); - } - break; - - default: - - /* Undefined */ - - return (FALSE); - } - - return LogicalResult; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExOpcode_6A_0T_1R - * - * PARAMETERS: WalkState - Current walk state - * - * RETURN: Status - * - * DESCRIPTION: Execute opcode with 6 arguments, no target, and a return value - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExOpcode_6A_0T_1R ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; - ACPI_OPERAND_OBJECT *ReturnDesc = NULL; - ACPI_STATUS Status = AE_OK; - ACPI_INTEGER Index; - ACPI_OPERAND_OBJECT *ThisElement; - - - ACPI_FUNCTION_TRACE_STR (ExOpcode_6A_0T_1R, - AcpiPsGetOpcodeName (WalkState->Opcode)); - - - switch (WalkState->Opcode) - { - case AML_MATCH_OP: - /* - * Match (SearchPkg[0], MatchOp1[1], MatchObj1[2], - * MatchOp2[3], MatchObj2[4], StartIndex[5]) - */ - - /* Validate both Match Term Operators (MTR, MEQ, etc.) */ - - if ((Operand[1]->Integer.Value > MAX_MATCH_OPERATOR) || - (Operand[3]->Integer.Value > MAX_MATCH_OPERATOR)) - { - ACPI_ERROR ((AE_INFO, "Match operator out of range")); - Status = AE_AML_OPERAND_VALUE; - goto Cleanup; - } - - /* Get the package StartIndex, validate against the package length */ - - Index = Operand[5]->Integer.Value; - if (Index >= Operand[0]->Package.Count) - { - ACPI_ERROR ((AE_INFO, - "Index (%X%8.8X) beyond package end (%X)", - ACPI_FORMAT_UINT64 (Index), Operand[0]->Package.Count)); - Status = AE_AML_PACKAGE_LIMIT; - goto Cleanup; - } - - /* Create an integer for the return value */ - - ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); - if (!ReturnDesc) - { - Status = AE_NO_MEMORY; - goto Cleanup; - - } - - /* Default return value if no match found */ - - ReturnDesc->Integer.Value = ACPI_INTEGER_MAX; - - /* - * Examine each element until a match is found. Both match conditions - * must be satisfied for a match to occur. Within the loop, - * "continue" signifies that the current element does not match - * and the next should be examined. - * - * Upon finding a match, the loop will terminate via "break" at - * the bottom. If it terminates "normally", MatchValue will be - * ACPI_INTEGER_MAX (Ones) (its initial value) indicating that no - * match was found. - */ - for ( ; Index < Operand[0]->Package.Count; Index++) - { - /* Get the current package element */ - - ThisElement = Operand[0]->Package.Elements[Index]; - - /* Treat any uninitialized (NULL) elements as non-matching */ - - if (!ThisElement) - { - continue; - } - - /* - * Both match conditions must be satisfied. Execution of a continue - * (proceed to next iteration of enclosing for loop) signifies a - * non-match. - */ - if (!AcpiExDoMatch ((UINT32) Operand[1]->Integer.Value, - ThisElement, Operand[2])) - { - continue; - } - - if (!AcpiExDoMatch ((UINT32) Operand[3]->Integer.Value, - ThisElement, Operand[4])) - { - continue; - } - - /* Match found: Index is the return value */ - - ReturnDesc->Integer.Value = Index; - break; - } - break; - - - case AML_LOAD_TABLE_OP: - - Status = AcpiExLoadTableOp (WalkState, &ReturnDesc); - break; - - - default: - - ACPI_ERROR ((AE_INFO, "Unknown AML opcode %X", - WalkState->Opcode)); - Status = AE_AML_BAD_OPCODE; - goto Cleanup; - } - - WalkState->ResultObj = ReturnDesc; - - -Cleanup: - - /* Delete return object on error */ - - if (ACPI_FAILURE (Status)) - { - AcpiUtRemoveReference (ReturnDesc); - } - - return_ACPI_STATUS (Status); -} diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exprep.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exprep.c deleted file mode 100644 index 7c024ec11d..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exprep.c +++ /dev/null @@ -1,675 +0,0 @@ - -/****************************************************************************** - * - * Module Name: exprep - ACPI AML (p-code) execution - field prep utilities - * $Revision: 1.141 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __EXPREP_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acnamesp.h" - - -#define _COMPONENT ACPI_EXECUTER - ACPI_MODULE_NAME ("exprep") - -/* Local prototypes */ - -static UINT32 -AcpiExDecodeFieldAccess ( - ACPI_OPERAND_OBJECT *ObjDesc, - UINT8 FieldFlags, - UINT32 *ReturnByteAlignment); - - -#ifdef ACPI_UNDER_DEVELOPMENT - -static UINT32 -AcpiExGenerateAccess ( - UINT32 FieldBitOffset, - UINT32 FieldBitLength, - UINT32 RegionLength); - -/******************************************************************************* - * - * FUNCTION: AcpiExGenerateAccess - * - * PARAMETERS: FieldBitOffset - Start of field within parent region/buffer - * FieldBitLength - Length of field in bits - * RegionLength - Length of parent in bytes - * - * RETURN: Field granularity (8, 16, 32 or 64) and - * ByteAlignment (1, 2, 3, or 4) - * - * DESCRIPTION: Generate an optimal access width for fields defined with the - * AnyAcc keyword. - * - * NOTE: Need to have the RegionLength in order to check for boundary - * conditions (end-of-region). However, the RegionLength is a deferred - * operation. Therefore, to complete this implementation, the generation - * of this access width must be deferred until the region length has - * been evaluated. - * - ******************************************************************************/ - -static UINT32 -AcpiExGenerateAccess ( - UINT32 FieldBitOffset, - UINT32 FieldBitLength, - UINT32 RegionLength) -{ - UINT32 FieldByteLength; - UINT32 FieldByteOffset; - UINT32 FieldByteEndOffset; - UINT32 AccessByteWidth; - UINT32 FieldStartOffset; - UINT32 FieldEndOffset; - UINT32 MinimumAccessWidth = 0xFFFFFFFF; - UINT32 MinimumAccesses = 0xFFFFFFFF; - UINT32 Accesses; - - - ACPI_FUNCTION_TRACE (ExGenerateAccess); - - - /* Round Field start offset and length to "minimal" byte boundaries */ - - FieldByteOffset = ACPI_DIV_8 (ACPI_ROUND_DOWN (FieldBitOffset, 8)); - FieldByteEndOffset = ACPI_DIV_8 (ACPI_ROUND_UP (FieldBitLength + - FieldBitOffset, 8)); - FieldByteLength = FieldByteEndOffset - FieldByteOffset; - - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "Bit length %d, Bit offset %d\n", - FieldBitLength, FieldBitOffset)); - - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "Byte Length %d, Byte Offset %d, End Offset %d\n", - FieldByteLength, FieldByteOffset, FieldByteEndOffset)); - - /* - * Iterative search for the maximum access width that is both aligned - * and does not go beyond the end of the region - * - * Start at ByteAcc and work upwards to QwordAcc max. (1,2,4,8 bytes) - */ - for (AccessByteWidth = 1; AccessByteWidth <= 8; AccessByteWidth <<= 1) - { - /* - * 1) Round end offset up to next access boundary and make sure that - * this does not go beyond the end of the parent region. - * 2) When the Access width is greater than the FieldByteLength, we - * are done. (This does not optimize for the perfectly aligned - * case yet). - */ - if (ACPI_ROUND_UP (FieldByteEndOffset, AccessByteWidth) <= RegionLength) - { - FieldStartOffset = - ACPI_ROUND_DOWN (FieldByteOffset, AccessByteWidth) / - AccessByteWidth; - - FieldEndOffset = - ACPI_ROUND_UP ((FieldByteLength + FieldByteOffset), - AccessByteWidth) / AccessByteWidth; - - Accesses = FieldEndOffset - FieldStartOffset; - - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "AccessWidth %d end is within region\n", AccessByteWidth)); - - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "Field Start %d, Field End %d -- requires %d accesses\n", - FieldStartOffset, FieldEndOffset, Accesses)); - - /* Single access is optimal */ - - if (Accesses <= 1) - { - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "Entire field can be accessed with one operation of size %d\n", - AccessByteWidth)); - return_VALUE (AccessByteWidth); - } - - /* - * Fits in the region, but requires more than one read/write. - * try the next wider access on next iteration - */ - if (Accesses < MinimumAccesses) - { - MinimumAccesses = Accesses; - MinimumAccessWidth = AccessByteWidth; - } - } - else - { - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "AccessWidth %d end is NOT within region\n", AccessByteWidth)); - if (AccessByteWidth == 1) - { - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "Field goes beyond end-of-region!\n")); - - /* Field does not fit in the region at all */ - - return_VALUE (0); - } - - /* - * This width goes beyond the end-of-region, back off to - * previous access - */ - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "Backing off to previous optimal access width of %d\n", - MinimumAccessWidth)); - return_VALUE (MinimumAccessWidth); - } - } - - /* - * Could not read/write field with one operation, - * just use max access width - */ - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "Cannot access field in one operation, using width 8\n")); - return_VALUE (8); -} -#endif /* ACPI_UNDER_DEVELOPMENT */ - - -/******************************************************************************* - * - * FUNCTION: AcpiExDecodeFieldAccess - * - * PARAMETERS: ObjDesc - Field object - * FieldFlags - Encoded fieldflags (contains access bits) - * ReturnByteAlignment - Where the byte alignment is returned - * - * RETURN: Field granularity (8, 16, 32 or 64) and - * ByteAlignment (1, 2, 3, or 4) - * - * DESCRIPTION: Decode the AccessType bits of a field definition. - * - ******************************************************************************/ - -static UINT32 -AcpiExDecodeFieldAccess ( - ACPI_OPERAND_OBJECT *ObjDesc, - UINT8 FieldFlags, - UINT32 *ReturnByteAlignment) -{ - UINT32 Access; - UINT32 ByteAlignment; - UINT32 BitLength; - - - ACPI_FUNCTION_TRACE (ExDecodeFieldAccess); - - - Access = (FieldFlags & AML_FIELD_ACCESS_TYPE_MASK); - - switch (Access) - { - case AML_FIELD_ACCESS_ANY: - -#ifdef ACPI_UNDER_DEVELOPMENT - ByteAlignment = - AcpiExGenerateAccess (ObjDesc->CommonField.StartFieldBitOffset, - ObjDesc->CommonField.BitLength, - 0xFFFFFFFF /* Temp until we pass RegionLength as parameter */); - BitLength = ByteAlignment * 8; -#endif - - ByteAlignment = 1; - BitLength = 8; - break; - - case AML_FIELD_ACCESS_BYTE: - case AML_FIELD_ACCESS_BUFFER: /* ACPI 2.0 (SMBus Buffer) */ - ByteAlignment = 1; - BitLength = 8; - break; - - case AML_FIELD_ACCESS_WORD: - ByteAlignment = 2; - BitLength = 16; - break; - - case AML_FIELD_ACCESS_DWORD: - ByteAlignment = 4; - BitLength = 32; - break; - - case AML_FIELD_ACCESS_QWORD: /* ACPI 2.0 */ - ByteAlignment = 8; - BitLength = 64; - break; - - default: - /* Invalid field access type */ - - ACPI_ERROR ((AE_INFO, - "Unknown field access type %X", - Access)); - return_UINT32 (0); - } - - if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_BUFFER_FIELD) - { - /* - * BufferField access can be on any byte boundary, so the - * ByteAlignment is always 1 byte -- regardless of any ByteAlignment - * implied by the field access type. - */ - ByteAlignment = 1; - } - - *ReturnByteAlignment = ByteAlignment; - return_UINT32 (BitLength); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExPrepCommonFieldObject - * - * PARAMETERS: ObjDesc - The field object - * FieldFlags - Access, LockRule, and UpdateRule. - * The format of a FieldFlag is described - * in the ACPI specification - * FieldAttribute - Special attributes (not used) - * FieldBitPosition - Field start position - * FieldBitLength - Field length in number of bits - * - * RETURN: Status - * - * DESCRIPTION: Initialize the areas of the field object that are common - * to the various types of fields. Note: This is very "sensitive" - * code because we are solving the general case for field - * alignment. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExPrepCommonFieldObject ( - ACPI_OPERAND_OBJECT *ObjDesc, - UINT8 FieldFlags, - UINT8 FieldAttribute, - UINT32 FieldBitPosition, - UINT32 FieldBitLength) -{ - UINT32 AccessBitWidth; - UINT32 ByteAlignment; - UINT32 NearestByteAddress; - - - ACPI_FUNCTION_TRACE (ExPrepCommonFieldObject); - - - /* - * Note: the structure being initialized is the - * ACPI_COMMON_FIELD_INFO; No structure fields outside of the common - * area are initialized by this procedure. - */ - ObjDesc->CommonField.FieldFlags = FieldFlags; - ObjDesc->CommonField.Attribute = FieldAttribute; - ObjDesc->CommonField.BitLength = FieldBitLength; - - /* - * Decode the access type so we can compute offsets. The access type gives - * two pieces of information - the width of each field access and the - * necessary ByteAlignment (address granularity) of the access. - * - * For AnyAcc, the AccessBitWidth is the largest width that is both - * necessary and possible in an attempt to access the whole field in one - * I/O operation. However, for AnyAcc, the ByteAlignment is always one - * byte. - * - * For all Buffer Fields, the ByteAlignment is always one byte. - * - * For all other access types (Byte, Word, Dword, Qword), the Bitwidth is - * the same (equivalent) as the ByteAlignment. - */ - AccessBitWidth = AcpiExDecodeFieldAccess (ObjDesc, FieldFlags, - &ByteAlignment); - if (!AccessBitWidth) - { - return_ACPI_STATUS (AE_AML_OPERAND_VALUE); - } - - /* Setup width (access granularity) fields */ - - ObjDesc->CommonField.AccessByteWidth = (UINT8) - ACPI_DIV_8 (AccessBitWidth); /* 1, 2, 4, 8 */ - - ObjDesc->CommonField.AccessBitWidth = (UINT8) AccessBitWidth; - - /* - * BaseByteOffset is the address of the start of the field within the - * region. It is the byte address of the first *datum* (field-width data - * unit) of the field. (i.e., the first datum that contains at least the - * first *bit* of the field.) - * - * Note: ByteAlignment is always either equal to the AccessBitWidth or 8 - * (Byte access), and it defines the addressing granularity of the parent - * region or buffer. - */ - NearestByteAddress = - ACPI_ROUND_BITS_DOWN_TO_BYTES (FieldBitPosition); - ObjDesc->CommonField.BaseByteOffset = (UINT32) - ACPI_ROUND_DOWN (NearestByteAddress, ByteAlignment); - - /* - * StartFieldBitOffset is the offset of the first bit of the field within - * a field datum. - */ - ObjDesc->CommonField.StartFieldBitOffset = (UINT8) - (FieldBitPosition - ACPI_MUL_8 (ObjDesc->CommonField.BaseByteOffset)); - - /* - * Does the entire field fit within a single field access element? (datum) - * (i.e., without crossing a datum boundary) - */ - if ((ObjDesc->CommonField.StartFieldBitOffset + FieldBitLength) <= - (UINT16) AccessBitWidth) - { - ObjDesc->Common.Flags |= AOPOBJ_SINGLE_DATUM; - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExPrepFieldValue - * - * PARAMETERS: Info - Contains all field creation info - * - * RETURN: Status - * - * DESCRIPTION: Construct an ACPI_OPERAND_OBJECT of type DefField and - * connect it to the parent Node. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExPrepFieldValue ( - ACPI_CREATE_FIELD_INFO *Info) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - UINT32 Type; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (ExPrepFieldValue); - - - /* Parameter validation */ - - if (Info->FieldType != ACPI_TYPE_LOCAL_INDEX_FIELD) - { - if (!Info->RegionNode) - { - ACPI_ERROR ((AE_INFO, "Null RegionNode")); - return_ACPI_STATUS (AE_AML_NO_OPERAND); - } - - Type = AcpiNsGetType (Info->RegionNode); - if (Type != ACPI_TYPE_REGION) - { - ACPI_ERROR ((AE_INFO, - "Needed Region, found type %X (%s)", - Type, AcpiUtGetTypeName (Type))); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - } - - /* Allocate a new field object */ - - ObjDesc = AcpiUtCreateInternalObject (Info->FieldType); - if (!ObjDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Initialize areas of the object that are common to all fields */ - - ObjDesc->CommonField.Node = Info->FieldNode; - Status = AcpiExPrepCommonFieldObject (ObjDesc, Info->FieldFlags, - Info->Attribute, Info->FieldBitPosition, Info->FieldBitLength); - if (ACPI_FAILURE (Status)) - { - AcpiUtDeleteObjectDesc (ObjDesc); - return_ACPI_STATUS (Status); - } - - /* Initialize areas of the object that are specific to the field type */ - - switch (Info->FieldType) - { - case ACPI_TYPE_LOCAL_REGION_FIELD: - - ObjDesc->Field.RegionObj = AcpiNsGetAttachedObject (Info->RegionNode); - - /* An additional reference for the container */ - - AcpiUtAddReference (ObjDesc->Field.RegionObj); - - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "RegionField: BitOff %X, Off %X, Gran %X, Region %p\n", - ObjDesc->Field.StartFieldBitOffset, ObjDesc->Field.BaseByteOffset, - ObjDesc->Field.AccessByteWidth, ObjDesc->Field.RegionObj)); - break; - - - case ACPI_TYPE_LOCAL_BANK_FIELD: - - ObjDesc->BankField.Value = Info->BankValue; - ObjDesc->BankField.RegionObj = AcpiNsGetAttachedObject ( - Info->RegionNode); - ObjDesc->BankField.BankObj = AcpiNsGetAttachedObject ( - Info->RegisterNode); - - /* An additional reference for the attached objects */ - - AcpiUtAddReference (ObjDesc->BankField.RegionObj); - AcpiUtAddReference (ObjDesc->BankField.BankObj); - - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "Bank Field: BitOff %X, Off %X, Gran %X, Region %p, BankReg %p\n", - ObjDesc->BankField.StartFieldBitOffset, - ObjDesc->BankField.BaseByteOffset, - ObjDesc->Field.AccessByteWidth, - ObjDesc->BankField.RegionObj, - ObjDesc->BankField.BankObj)); - break; - - - case ACPI_TYPE_LOCAL_INDEX_FIELD: - - /* Get the Index and Data registers */ - - ObjDesc->IndexField.IndexObj = AcpiNsGetAttachedObject ( - Info->RegisterNode); - ObjDesc->IndexField.DataObj = AcpiNsGetAttachedObject ( - Info->DataRegisterNode); - - if (!ObjDesc->IndexField.DataObj || !ObjDesc->IndexField.IndexObj) - { - ACPI_ERROR ((AE_INFO, "Null Index Object during field prep")); - AcpiUtDeleteObjectDesc (ObjDesc); - return_ACPI_STATUS (AE_AML_INTERNAL); - } - - /* An additional reference for the attached objects */ - - AcpiUtAddReference (ObjDesc->IndexField.DataObj); - AcpiUtAddReference (ObjDesc->IndexField.IndexObj); - - /* - * April 2006: Changed to match MS behavior - * - * The value written to the Index register is the byte offset of the - * target field in units of the granularity of the IndexField - * - * Previously, the value was calculated as an index in terms of the - * width of the Data register, as below: - * - * ObjDesc->IndexField.Value = (UINT32) - * (Info->FieldBitPosition / ACPI_MUL_8 ( - * ObjDesc->Field.AccessByteWidth)); - * - * February 2006: Tried value as a byte offset: - * ObjDesc->IndexField.Value = (UINT32) - * ACPI_DIV_8 (Info->FieldBitPosition); - */ - ObjDesc->IndexField.Value = (UINT32) ACPI_ROUND_DOWN ( - ACPI_DIV_8 (Info->FieldBitPosition), - ObjDesc->IndexField.AccessByteWidth); - - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "IndexField: BitOff %X, Off %X, Value %X, Gran %X, Index %p, Data %p\n", - ObjDesc->IndexField.StartFieldBitOffset, - ObjDesc->IndexField.BaseByteOffset, - ObjDesc->IndexField.Value, - ObjDesc->Field.AccessByteWidth, - ObjDesc->IndexField.IndexObj, - ObjDesc->IndexField.DataObj)); - break; - - default: - /* No other types should get here */ - break; - } - - /* - * Store the constructed descriptor (ObjDesc) into the parent Node, - * preserving the current type of that NamedObj. - */ - Status = AcpiNsAttachObject (Info->FieldNode, ObjDesc, - AcpiNsGetType (Info->FieldNode)); - - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Set NamedObj %p [%4.4s], ObjDesc %p\n", - Info->FieldNode, AcpiUtGetNodeName (Info->FieldNode), ObjDesc)); - - /* Remove local reference to the object */ - - AcpiUtRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exregion.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exregion.c deleted file mode 100644 index 306ea5a8e4..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exregion.c +++ /dev/null @@ -1,612 +0,0 @@ - -/****************************************************************************** - * - * Module Name: exregion - ACPI default OpRegion (address space) handlers - * $Revision: 1.99 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __EXREGION_C__ - -#include "acpi.h" -#include "acinterp.h" - - -#define _COMPONENT ACPI_EXECUTER - ACPI_MODULE_NAME ("exregion") - - -/******************************************************************************* - * - * FUNCTION: AcpiExSystemMemorySpaceHandler - * - * PARAMETERS: Function - Read or Write operation - * Address - Where in the space to read or write - * BitWidth - Field width in bits (8, 16, or 32) - * Value - Pointer to in or out value - * HandlerContext - Pointer to Handler's context - * RegionContext - Pointer to context specific to the - * accessed region - * - * RETURN: Status - * - * DESCRIPTION: Handler for the System Memory address space (Op Region) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExSystemMemorySpaceHandler ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - ACPI_INTEGER *Value, - void *HandlerContext, - void *RegionContext) -{ - ACPI_STATUS Status = AE_OK; - void *LogicalAddrPtr = NULL; - ACPI_MEM_SPACE_CONTEXT *MemInfo = RegionContext; - UINT32 Length; - ACPI_SIZE WindowSize; -#ifdef ACPI_MISALIGNMENT_NOT_SUPPORTED - UINT32 Remainder; -#endif - - - ACPI_FUNCTION_TRACE (ExSystemMemorySpaceHandler); - - - /* Validate and translate the bit width */ - - switch (BitWidth) - { - case 8: - Length = 1; - break; - - case 16: - Length = 2; - break; - - case 32: - Length = 4; - break; - - case 64: - Length = 8; - break; - - default: - ACPI_ERROR ((AE_INFO, "Invalid SystemMemory width %d", - BitWidth)); - return_ACPI_STATUS (AE_AML_OPERAND_VALUE); - } - -#ifdef ACPI_MISALIGNMENT_NOT_SUPPORTED - /* - * Hardware does not support non-aligned data transfers, we must verify - * the request. - */ - (void) AcpiUtShortDivide ((ACPI_INTEGER) Address, Length, NULL, &Remainder); - if (Remainder != 0) - { - return_ACPI_STATUS (AE_AML_ALIGNMENT); - } -#endif - - /* - * Does the request fit into the cached memory mapping? - * Is 1) Address below the current mapping? OR - * 2) Address beyond the current mapping? - */ - if ((Address < MemInfo->MappedPhysicalAddress) || - (((ACPI_INTEGER) Address + Length) > - ((ACPI_INTEGER) - MemInfo->MappedPhysicalAddress + MemInfo->MappedLength))) - { - /* - * The request cannot be resolved by the current memory mapping; - * Delete the existing mapping and create a new one. - */ - if (MemInfo->MappedLength) - { - /* Valid mapping, delete it */ - - AcpiOsUnmapMemory (MemInfo->MappedLogicalAddress, - MemInfo->MappedLength); - } - - /* - * Don't attempt to map memory beyond the end of the region, and - * constrain the maximum mapping size to something reasonable. - */ - WindowSize = (ACPI_SIZE) - ((MemInfo->Address + MemInfo->Length) - Address); - - if (WindowSize > ACPI_SYSMEM_REGION_WINDOW_SIZE) - { - WindowSize = ACPI_SYSMEM_REGION_WINDOW_SIZE; - } - - /* Create a new mapping starting at the address given */ - - MemInfo->MappedLogicalAddress = AcpiOsMapMemory ((ACPI_NATIVE_UINT) Address, WindowSize); - if (!MemInfo->MappedLogicalAddress) - { - ACPI_ERROR ((AE_INFO, - "Could not map memory at %8.8X%8.8X, size %X", - ACPI_FORMAT_UINT64 (Address), (UINT32) WindowSize)); - MemInfo->MappedLength = 0; - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Save the physical address and mapping size */ - - MemInfo->MappedPhysicalAddress = Address; - MemInfo->MappedLength = WindowSize; - } - - /* - * Generate a logical pointer corresponding to the address we want to - * access - */ - LogicalAddrPtr = MemInfo->MappedLogicalAddress + - ((ACPI_INTEGER) Address - (ACPI_INTEGER) MemInfo->MappedPhysicalAddress); - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "System-Memory (width %d) R/W %d Address=%8.8X%8.8X\n", - BitWidth, Function, ACPI_FORMAT_UINT64 (Address))); - - /* - * Perform the memory read or write - * - * Note: For machines that do not support non-aligned transfers, the target - * address was checked for alignment above. We do not attempt to break the - * transfer up into smaller (byte-size) chunks because the AML specifically - * asked for a transfer width that the hardware may require. - */ - switch (Function) - { - case ACPI_READ: - - *Value = 0; - switch (BitWidth) - { - case 8: - *Value = (ACPI_INTEGER) ACPI_GET8 (LogicalAddrPtr); - break; - - case 16: - *Value = (ACPI_INTEGER) ACPI_GET16 (LogicalAddrPtr); - break; - - case 32: - *Value = (ACPI_INTEGER) ACPI_GET32 (LogicalAddrPtr); - break; - -#if ACPI_MACHINE_WIDTH != 16 - case 64: - *Value = (ACPI_INTEGER) ACPI_GET64 (LogicalAddrPtr); - break; -#endif - default: - /* BitWidth was already validated */ - break; - } - break; - - case ACPI_WRITE: - - switch (BitWidth) - { - case 8: - ACPI_SET8 (LogicalAddrPtr) = (UINT8) *Value; - break; - - case 16: - ACPI_SET16 (LogicalAddrPtr) = (UINT16) *Value; - break; - - case 32: - ACPI_SET32 ( LogicalAddrPtr) = (UINT32) *Value; - break; - -#if ACPI_MACHINE_WIDTH != 16 - case 64: - ACPI_SET64 (LogicalAddrPtr) = (UINT64) *Value; - break; -#endif - - default: - /* BitWidth was already validated */ - break; - } - break; - - default: - Status = AE_BAD_PARAMETER; - break; - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExSystemIoSpaceHandler - * - * PARAMETERS: Function - Read or Write operation - * Address - Where in the space to read or write - * BitWidth - Field width in bits (8, 16, or 32) - * Value - Pointer to in or out value - * HandlerContext - Pointer to Handler's context - * RegionContext - Pointer to context specific to the - * accessed region - * - * RETURN: Status - * - * DESCRIPTION: Handler for the System IO address space (Op Region) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExSystemIoSpaceHandler ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - ACPI_INTEGER *Value, - void *HandlerContext, - void *RegionContext) -{ - ACPI_STATUS Status = AE_OK; - UINT32 Value32; - - - ACPI_FUNCTION_TRACE (ExSystemIoSpaceHandler); - - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "System-IO (width %d) R/W %d Address=%8.8X%8.8X\n", - BitWidth, Function, ACPI_FORMAT_UINT64 (Address))); - - /* Decode the function parameter */ - - switch (Function) - { - case ACPI_READ: - - Status = AcpiOsReadPort ((ACPI_IO_ADDRESS) Address, - &Value32, BitWidth); - *Value = Value32; - break; - - case ACPI_WRITE: - - Status = AcpiOsWritePort ((ACPI_IO_ADDRESS) Address, - (UINT32) *Value, BitWidth); - break; - - default: - Status = AE_BAD_PARAMETER; - break; - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExPciConfigSpaceHandler - * - * PARAMETERS: Function - Read or Write operation - * Address - Where in the space to read or write - * BitWidth - Field width in bits (8, 16, or 32) - * Value - Pointer to in or out value - * HandlerContext - Pointer to Handler's context - * RegionContext - Pointer to context specific to the - * accessed region - * - * RETURN: Status - * - * DESCRIPTION: Handler for the PCI Config address space (Op Region) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExPciConfigSpaceHandler ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - ACPI_INTEGER *Value, - void *HandlerContext, - void *RegionContext) -{ - ACPI_STATUS Status = AE_OK; - ACPI_PCI_ID *PciId; - UINT16 PciRegister; - - - ACPI_FUNCTION_TRACE (ExPciConfigSpaceHandler); - - - /* - * The arguments to AcpiOs(Read|Write)PciConfiguration are: - * - * PciSegment is the PCI bus segment range 0-31 - * PciBus is the PCI bus number range 0-255 - * PciDevice is the PCI device number range 0-31 - * PciFunction is the PCI device function number - * PciRegister is the Config space register range 0-255 bytes - * - * Value - input value for write, output address for read - * - */ - PciId = (ACPI_PCI_ID *) RegionContext; - PciRegister = (UINT16) (UINT32) Address; - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Pci-Config %d (%d) Seg(%04x) Bus(%04x) Dev(%04x) Func(%04x) Reg(%04x)\n", - Function, BitWidth, PciId->Segment, PciId->Bus, PciId->Device, - PciId->Function, PciRegister)); - - switch (Function) - { - case ACPI_READ: - - *Value = 0; - Status = AcpiOsReadPciConfiguration (PciId, PciRegister, - Value, BitWidth); - break; - - case ACPI_WRITE: - - Status = AcpiOsWritePciConfiguration (PciId, PciRegister, - *Value, BitWidth); - break; - - default: - - Status = AE_BAD_PARAMETER; - break; - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExCmosSpaceHandler - * - * PARAMETERS: Function - Read or Write operation - * Address - Where in the space to read or write - * BitWidth - Field width in bits (8, 16, or 32) - * Value - Pointer to in or out value - * HandlerContext - Pointer to Handler's context - * RegionContext - Pointer to context specific to the - * accessed region - * - * RETURN: Status - * - * DESCRIPTION: Handler for the CMOS address space (Op Region) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExCmosSpaceHandler ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - ACPI_INTEGER *Value, - void *HandlerContext, - void *RegionContext) -{ - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE (ExCmosSpaceHandler); - - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExPciBarSpaceHandler - * - * PARAMETERS: Function - Read or Write operation - * Address - Where in the space to read or write - * BitWidth - Field width in bits (8, 16, or 32) - * Value - Pointer to in or out value - * HandlerContext - Pointer to Handler's context - * RegionContext - Pointer to context specific to the - * accessed region - * - * RETURN: Status - * - * DESCRIPTION: Handler for the PCI BarTarget address space (Op Region) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExPciBarSpaceHandler ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - ACPI_INTEGER *Value, - void *HandlerContext, - void *RegionContext) -{ - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE (ExPciBarSpaceHandler); - - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExDataTableSpaceHandler - * - * PARAMETERS: Function - Read or Write operation - * Address - Where in the space to read or write - * BitWidth - Field width in bits (8, 16, or 32) - * Value - Pointer to in or out value - * HandlerContext - Pointer to Handler's context - * RegionContext - Pointer to context specific to the - * accessed region - * - * RETURN: Status - * - * DESCRIPTION: Handler for the Data Table address space (Op Region) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExDataTableSpaceHandler ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - ACPI_INTEGER *Value, - void *HandlerContext, - void *RegionContext) -{ - ACPI_FUNCTION_TRACE (ExDataTableSpaceHandler); - - - /* Perform the memory read or write */ - - switch (Function) - { - case ACPI_READ: - - ACPI_MEMCPY (ACPI_CAST_PTR (char, Value), ACPI_PHYSADDR_TO_PTR (Address), - ACPI_DIV_8 (BitWidth)); - break; - - case ACPI_WRITE: - default: - - return_ACPI_STATUS (AE_SUPPORT); - } - - return_ACPI_STATUS (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exresnte.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exresnte.c deleted file mode 100644 index c7b5a460c5..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exresnte.c +++ /dev/null @@ -1,377 +0,0 @@ - -/****************************************************************************** - * - * Module Name: exresnte - AML Interpreter object resolution - * $Revision: 1.74 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __EXRESNTE_C__ - -#include "acpi.h" -#include "acdispat.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "acparser.h" -#include "amlcode.h" - - -#define _COMPONENT ACPI_EXECUTER - ACPI_MODULE_NAME ("exresnte") - - -/******************************************************************************* - * - * FUNCTION: AcpiExResolveNodeToValue - * - * PARAMETERS: ObjectPtr - Pointer to a location that contains - * a pointer to a NS node, and will receive a - * pointer to the resolved object. - * WalkState - Current state. Valid only if executing AML - * code. NULL if simply resolving an object - * - * RETURN: Status - * - * DESCRIPTION: Resolve a Namespace node to a valued object - * - * Note: for some of the data types, the pointer attached to the Node - * can be either a pointer to an actual internal object or a pointer into the - * AML stream itself. These types are currently: - * - * ACPI_TYPE_INTEGER - * ACPI_TYPE_STRING - * ACPI_TYPE_BUFFER - * ACPI_TYPE_MUTEX - * ACPI_TYPE_PACKAGE - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExResolveNodeToValue ( - ACPI_NAMESPACE_NODE **ObjectPtr, - ACPI_WALK_STATE *WalkState) - -{ - ACPI_STATUS Status = AE_OK; - ACPI_OPERAND_OBJECT *SourceDesc; - ACPI_OPERAND_OBJECT *ObjDesc = NULL; - ACPI_NAMESPACE_NODE *Node; - ACPI_OBJECT_TYPE EntryType; - - - ACPI_FUNCTION_TRACE (ExResolveNodeToValue); - - - /* - * The stack pointer points to a ACPI_NAMESPACE_NODE (Node). Get the - * object that is attached to the Node. - */ - Node = *ObjectPtr; - SourceDesc = AcpiNsGetAttachedObject (Node); - EntryType = AcpiNsGetType ((ACPI_HANDLE) Node); - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Entry=%p SourceDesc=%p [%s]\n", - Node, SourceDesc, AcpiUtGetTypeName (EntryType))); - - if ((EntryType == ACPI_TYPE_LOCAL_ALIAS) || - (EntryType == ACPI_TYPE_LOCAL_METHOD_ALIAS)) - { - /* There is always exactly one level of indirection */ - - Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Node->Object); - SourceDesc = AcpiNsGetAttachedObject (Node); - EntryType = AcpiNsGetType ((ACPI_HANDLE) Node); - *ObjectPtr = Node; - } - - /* - * Several object types require no further processing: - * 1) Device/Thermal objects don't have a "real" subobject, return the Node - * 2) Method locals and arguments have a pseudo-Node - */ - if ((EntryType == ACPI_TYPE_DEVICE) || - (EntryType == ACPI_TYPE_THERMAL) || - (Node->Flags & (ANOBJ_METHOD_ARG | ANOBJ_METHOD_LOCAL))) - { - return_ACPI_STATUS (AE_OK); - } - - if (!SourceDesc) - { - ACPI_ERROR ((AE_INFO, "No object attached to node %p", - Node)); - return_ACPI_STATUS (AE_AML_NO_OPERAND); - } - - /* - * Action is based on the type of the Node, which indicates the type - * of the attached object or pointer - */ - switch (EntryType) - { - case ACPI_TYPE_PACKAGE: - - if (ACPI_GET_OBJECT_TYPE (SourceDesc) != ACPI_TYPE_PACKAGE) - { - ACPI_ERROR ((AE_INFO, "Object not a Package, type %s", - AcpiUtGetObjectTypeName (SourceDesc))); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - Status = AcpiDsGetPackageArguments (SourceDesc); - if (ACPI_SUCCESS (Status)) - { - /* Return an additional reference to the object */ - - ObjDesc = SourceDesc; - AcpiUtAddReference (ObjDesc); - } - break; - - - case ACPI_TYPE_BUFFER: - - if (ACPI_GET_OBJECT_TYPE (SourceDesc) != ACPI_TYPE_BUFFER) - { - ACPI_ERROR ((AE_INFO, "Object not a Buffer, type %s", - AcpiUtGetObjectTypeName (SourceDesc))); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - Status = AcpiDsGetBufferArguments (SourceDesc); - if (ACPI_SUCCESS (Status)) - { - /* Return an additional reference to the object */ - - ObjDesc = SourceDesc; - AcpiUtAddReference (ObjDesc); - } - break; - - - case ACPI_TYPE_STRING: - - if (ACPI_GET_OBJECT_TYPE (SourceDesc) != ACPI_TYPE_STRING) - { - ACPI_ERROR ((AE_INFO, "Object not a String, type %s", - AcpiUtGetObjectTypeName (SourceDesc))); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - /* Return an additional reference to the object */ - - ObjDesc = SourceDesc; - AcpiUtAddReference (ObjDesc); - break; - - - case ACPI_TYPE_INTEGER: - - if (ACPI_GET_OBJECT_TYPE (SourceDesc) != ACPI_TYPE_INTEGER) - { - ACPI_ERROR ((AE_INFO, "Object not a Integer, type %s", - AcpiUtGetObjectTypeName (SourceDesc))); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - /* Return an additional reference to the object */ - - ObjDesc = SourceDesc; - AcpiUtAddReference (ObjDesc); - break; - - - case ACPI_TYPE_BUFFER_FIELD: - case ACPI_TYPE_LOCAL_REGION_FIELD: - case ACPI_TYPE_LOCAL_BANK_FIELD: - case ACPI_TYPE_LOCAL_INDEX_FIELD: - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "FieldRead Node=%p SourceDesc=%p Type=%X\n", - Node, SourceDesc, EntryType)); - - Status = AcpiExReadDataFromField (WalkState, SourceDesc, &ObjDesc); - break; - - /* For these objects, just return the object attached to the Node */ - - case ACPI_TYPE_MUTEX: - case ACPI_TYPE_METHOD: - case ACPI_TYPE_POWER: - case ACPI_TYPE_PROCESSOR: - case ACPI_TYPE_EVENT: - case ACPI_TYPE_REGION: - - /* Return an additional reference to the object */ - - ObjDesc = SourceDesc; - AcpiUtAddReference (ObjDesc); - break; - - /* TYPE_ANY is untyped, and thus there is no object associated with it */ - - case ACPI_TYPE_ANY: - - ACPI_ERROR ((AE_INFO, - "Untyped entry %p, no attached object!", Node)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); /* Cannot be AE_TYPE */ - - - case ACPI_TYPE_LOCAL_REFERENCE: - - switch (SourceDesc->Reference.Opcode) - { - case AML_LOAD_OP: - - /* This is a DdbHandle */ - /* Return an additional reference to the object */ - - case AML_REF_OF_OP: - - ObjDesc = SourceDesc; - AcpiUtAddReference (ObjDesc); - break; - - default: - /* No named references are allowed here */ - - ACPI_ERROR ((AE_INFO, - "Unsupported Reference opcode %X (%s)", - SourceDesc->Reference.Opcode, - AcpiPsGetOpcodeName (SourceDesc->Reference.Opcode))); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - break; - - - default: - - /* Default case is for unknown types */ - - ACPI_ERROR ((AE_INFO, - "Node %p - Unknown object type %X", - Node, EntryType)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - - } /* switch (EntryType) */ - - - /* Return the object descriptor */ - - *ObjectPtr = (void *) ObjDesc; - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exresolv.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exresolv.c deleted file mode 100644 index 61442afda0..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exresolv.c +++ /dev/null @@ -1,658 +0,0 @@ - -/****************************************************************************** - * - * Module Name: exresolv - AML Interpreter object resolution - * $Revision: 1.140 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __EXRESOLV_C__ - -#include "acpi.h" -#include "amlcode.h" -#include "acdispat.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "acparser.h" - - -#define _COMPONENT ACPI_EXECUTER - ACPI_MODULE_NAME ("exresolv") - -/* Local prototypes */ - -static ACPI_STATUS -AcpiExResolveObjectToValue ( - ACPI_OPERAND_OBJECT **StackPtr, - ACPI_WALK_STATE *WalkState); - - -/******************************************************************************* - * - * FUNCTION: AcpiExResolveToValue - * - * PARAMETERS: **StackPtr - Points to entry on ObjStack, which can - * be either an (ACPI_OPERAND_OBJECT *) - * or an ACPI_HANDLE. - * WalkState - Current method state - * - * RETURN: Status - * - * DESCRIPTION: Convert Reference objects to values - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExResolveToValue ( - ACPI_OPERAND_OBJECT **StackPtr, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE_PTR (ExResolveToValue, StackPtr); - - - if (!StackPtr || !*StackPtr) - { - ACPI_ERROR ((AE_INFO, "Internal - null pointer")); - return_ACPI_STATUS (AE_AML_NO_OPERAND); - } - - /* - * The entity pointed to by the StackPtr can be either - * 1) A valid ACPI_OPERAND_OBJECT, or - * 2) A ACPI_NAMESPACE_NODE (NamedObj) - */ - if (ACPI_GET_DESCRIPTOR_TYPE (*StackPtr) == ACPI_DESC_TYPE_OPERAND) - { - Status = AcpiExResolveObjectToValue (StackPtr, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - if (!*StackPtr) - { - ACPI_ERROR ((AE_INFO, "Internal - null pointer")); - return_ACPI_STATUS (AE_AML_NO_OPERAND); - } - } - - /* - * Object on the stack may have changed if AcpiExResolveObjectToValue() - * was called (i.e., we can't use an _else_ here.) - */ - if (ACPI_GET_DESCRIPTOR_TYPE (*StackPtr) == ACPI_DESC_TYPE_NAMED) - { - Status = AcpiExResolveNodeToValue ( - ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, StackPtr), - WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Resolved object %p\n", *StackPtr)); - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExResolveObjectToValue - * - * PARAMETERS: StackPtr - Pointer to an internal object - * WalkState - Current method state - * - * RETURN: Status - * - * DESCRIPTION: Retrieve the value from an internal object. The Reference type - * uses the associated AML opcode to determine the value. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiExResolveObjectToValue ( - ACPI_OPERAND_OBJECT **StackPtr, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - ACPI_OPERAND_OBJECT *StackDesc; - void *TempNode; - ACPI_OPERAND_OBJECT *ObjDesc = NULL; - UINT16 Opcode; - - - ACPI_FUNCTION_TRACE (ExResolveObjectToValue); - - - StackDesc = *StackPtr; - - /* This is an ACPI_OPERAND_OBJECT */ - - switch (ACPI_GET_OBJECT_TYPE (StackDesc)) - { - case ACPI_TYPE_LOCAL_REFERENCE: - - Opcode = StackDesc->Reference.Opcode; - - switch (Opcode) - { - case AML_NAME_OP: - - /* - * Convert name reference to a namespace node - * Then, AcpiExResolveNodeToValue can be used to get the value - */ - TempNode = StackDesc->Reference.Object; - - /* Delete the Reference Object */ - - AcpiUtRemoveReference (StackDesc); - - /* Return the namespace node */ - - (*StackPtr) = TempNode; - break; - - - case AML_LOCAL_OP: - case AML_ARG_OP: - - /* - * Get the local from the method's state info - * Note: this increments the local's object reference count - */ - Status = AcpiDsMethodDataGetValue (Opcode, - StackDesc->Reference.Offset, WalkState, &ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[Arg/Local %X] ValueObj is %p\n", - StackDesc->Reference.Offset, ObjDesc)); - - /* - * Now we can delete the original Reference Object and - * replace it with the resolved value - */ - AcpiUtRemoveReference (StackDesc); - *StackPtr = ObjDesc; - break; - - - case AML_INDEX_OP: - - switch (StackDesc->Reference.TargetType) - { - case ACPI_TYPE_BUFFER_FIELD: - - /* Just return - leave the Reference on the stack */ - break; - - - case ACPI_TYPE_PACKAGE: - - ObjDesc = *StackDesc->Reference.Where; - if (ObjDesc) - { - /* - * Valid obj descriptor, copy pointer to return value - * (i.e., dereference the package index) - * Delete the ref object, increment the returned object - */ - AcpiUtRemoveReference (StackDesc); - AcpiUtAddReference (ObjDesc); - *StackPtr = ObjDesc; - } - else - { - /* - * A NULL object descriptor means an unitialized element of - * the package, can't dereference it - */ - ACPI_ERROR ((AE_INFO, - "Attempt to deref an Index to NULL pkg element Idx=%p", - StackDesc)); - Status = AE_AML_UNINITIALIZED_ELEMENT; - } - break; - - - default: - - /* Invalid reference object */ - - ACPI_ERROR ((AE_INFO, - "Unknown TargetType %X in Index/Reference obj %p", - StackDesc->Reference.TargetType, StackDesc)); - Status = AE_AML_INTERNAL; - break; - } - break; - - - case AML_REF_OF_OP: - case AML_DEBUG_OP: - case AML_LOAD_OP: - - /* Just leave the object as-is */ - - break; - - case AML_INT_NAMEPATH_OP: /* Reference to a named object */ - - /* Dereference the name */ - - if ((StackDesc->Reference.Node->Type == ACPI_TYPE_DEVICE) || - (StackDesc->Reference.Node->Type == ACPI_TYPE_THERMAL)) - { - /* These node types do not have 'real' subobjects */ - - *StackPtr = (void *) StackDesc->Reference.Node; - } - else - { - /* Get the object pointed to by the namespace node */ - - *StackPtr = (StackDesc->Reference.Node)->Object; - AcpiUtAddReference (*StackPtr); - } - - AcpiUtRemoveReference (StackDesc); - break; - - default: - - ACPI_ERROR ((AE_INFO, - "Unknown Reference opcode %X (%s) in %p", - Opcode, AcpiPsGetOpcodeName (Opcode), StackDesc)); - Status = AE_AML_INTERNAL; - break; - } - break; - - - case ACPI_TYPE_BUFFER: - - Status = AcpiDsGetBufferArguments (StackDesc); - break; - - - case ACPI_TYPE_PACKAGE: - - Status = AcpiDsGetPackageArguments (StackDesc); - break; - - - case ACPI_TYPE_BUFFER_FIELD: - case ACPI_TYPE_LOCAL_REGION_FIELD: - case ACPI_TYPE_LOCAL_BANK_FIELD: - case ACPI_TYPE_LOCAL_INDEX_FIELD: - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "FieldRead SourceDesc=%p Type=%X\n", - StackDesc, ACPI_GET_OBJECT_TYPE (StackDesc))); - - Status = AcpiExReadDataFromField (WalkState, StackDesc, &ObjDesc); - - /* Remove a reference to the original operand, then override */ - - AcpiUtRemoveReference (*StackPtr); - *StackPtr = (void *) ObjDesc; - break; - - default: - break; - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExResolveMultiple - * - * PARAMETERS: WalkState - Current state (contains AML opcode) - * Operand - Starting point for resolution - * ReturnType - Where the object type is returned - * ReturnDesc - Where the resolved object is returned - * - * RETURN: Status - * - * DESCRIPTION: Return the base object and type. Traverse a reference list if - * necessary to get to the base object. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExResolveMultiple ( - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT *Operand, - ACPI_OBJECT_TYPE *ReturnType, - ACPI_OPERAND_OBJECT **ReturnDesc) -{ - ACPI_OPERAND_OBJECT *ObjDesc = (void *) Operand; - ACPI_NAMESPACE_NODE *Node; - ACPI_OBJECT_TYPE Type; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (AcpiExResolveMultiple); - - - /* Operand can be either a namespace node or an operand descriptor */ - - switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc)) - { - case ACPI_DESC_TYPE_OPERAND: - Type = ObjDesc->Common.Type; - break; - - case ACPI_DESC_TYPE_NAMED: - Type = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Type; - ObjDesc = AcpiNsGetAttachedObject ((ACPI_NAMESPACE_NODE *) ObjDesc); - - /* If we had an Alias node, use the attached object for type info */ - - if (Type == ACPI_TYPE_LOCAL_ALIAS) - { - Type = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Type; - ObjDesc = AcpiNsGetAttachedObject ((ACPI_NAMESPACE_NODE *) ObjDesc); - } - break; - - default: - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - /* If type is anything other than a reference, we are done */ - - if (Type != ACPI_TYPE_LOCAL_REFERENCE) - { - goto Exit; - } - - /* - * For reference objects created via the RefOf or Index operators, - * we need to get to the base object (as per the ACPI specification - * of the ObjectType and SizeOf operators). This means traversing - * the list of possibly many nested references. - */ - while (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_LOCAL_REFERENCE) - { - switch (ObjDesc->Reference.Opcode) - { - case AML_REF_OF_OP: - case AML_INT_NAMEPATH_OP: - - /* Dereference the reference pointer */ - - if (ObjDesc->Reference.Opcode == AML_REF_OF_OP) - { - Node = ObjDesc->Reference.Object; - } - else /* AML_INT_NAMEPATH_OP */ - { - Node = ObjDesc->Reference.Node; - } - - /* All "References" point to a NS node */ - - if (ACPI_GET_DESCRIPTOR_TYPE (Node) != ACPI_DESC_TYPE_NAMED) - { - ACPI_ERROR ((AE_INFO, - "Not a NS node %p [%s]", - Node, AcpiUtGetDescriptorName (Node))); - return_ACPI_STATUS (AE_AML_INTERNAL); - } - - /* Get the attached object */ - - ObjDesc = AcpiNsGetAttachedObject (Node); - if (!ObjDesc) - { - /* No object, use the NS node type */ - - Type = AcpiNsGetType (Node); - goto Exit; - } - - /* Check for circular references */ - - if (ObjDesc == Operand) - { - return_ACPI_STATUS (AE_AML_CIRCULAR_REFERENCE); - } - break; - - - case AML_INDEX_OP: - - /* Get the type of this reference (index into another object) */ - - Type = ObjDesc->Reference.TargetType; - if (Type != ACPI_TYPE_PACKAGE) - { - goto Exit; - } - - /* - * The main object is a package, we want to get the type - * of the individual package element that is referenced by - * the index. - * - * This could of course in turn be another reference object. - */ - ObjDesc = *(ObjDesc->Reference.Where); - if (!ObjDesc) - { - /* NULL package elements are allowed */ - - Type = 0; /* Uninitialized */ - goto Exit; - } - break; - - - case AML_LOCAL_OP: - case AML_ARG_OP: - - if (ReturnDesc) - { - Status = AcpiDsMethodDataGetValue (ObjDesc->Reference.Opcode, - ObjDesc->Reference.Offset, WalkState, &ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - AcpiUtRemoveReference (ObjDesc); - } - else - { - Status = AcpiDsMethodDataGetNode (ObjDesc->Reference.Opcode, - ObjDesc->Reference.Offset, WalkState, &Node); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - ObjDesc = AcpiNsGetAttachedObject (Node); - if (!ObjDesc) - { - Type = ACPI_TYPE_ANY; - goto Exit; - } - } - break; - - - case AML_DEBUG_OP: - - /* The Debug Object is of type "DebugObject" */ - - Type = ACPI_TYPE_DEBUG_OBJECT; - goto Exit; - - - default: - - ACPI_ERROR ((AE_INFO, - "Unknown Reference subtype %X", - ObjDesc->Reference.Opcode)); - return_ACPI_STATUS (AE_AML_INTERNAL); - } - } - - /* - * Now we are guaranteed to have an object that has not been created - * via the RefOf or Index operators. - */ - Type = ACPI_GET_OBJECT_TYPE (ObjDesc); - - -Exit: - /* Convert internal types to external types */ - - switch (Type) - { - case ACPI_TYPE_LOCAL_REGION_FIELD: - case ACPI_TYPE_LOCAL_BANK_FIELD: - case ACPI_TYPE_LOCAL_INDEX_FIELD: - - Type = ACPI_TYPE_FIELD_UNIT; - break; - - case ACPI_TYPE_LOCAL_SCOPE: - - /* Per ACPI Specification, Scope is untyped */ - - Type = ACPI_TYPE_ANY; - break; - - default: - /* No change to Type required */ - break; - } - - *ReturnType = Type; - if (ReturnDesc) - { - *ReturnDesc = ObjDesc; - } - return_ACPI_STATUS (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exresop.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exresop.c deleted file mode 100644 index c087c9b258..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exresop.c +++ /dev/null @@ -1,823 +0,0 @@ - -/****************************************************************************** - * - * Module Name: exresop - AML Interpreter operand/object resolution - * $Revision: 1.93 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __EXRESOP_C__ - -#include "acpi.h" -#include "amlcode.h" -#include "acparser.h" -#include "acinterp.h" -#include "acnamesp.h" - - -#define _COMPONENT ACPI_EXECUTER - ACPI_MODULE_NAME ("exresop") - -/* Local prototypes */ - -static ACPI_STATUS -AcpiExCheckObjectType ( - ACPI_OBJECT_TYPE TypeNeeded, - ACPI_OBJECT_TYPE ThisType, - void *Object); - - -/******************************************************************************* - * - * FUNCTION: AcpiExCheckObjectType - * - * PARAMETERS: TypeNeeded Object type needed - * ThisType Actual object type - * Object Object pointer - * - * RETURN: Status - * - * DESCRIPTION: Check required type against actual type - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiExCheckObjectType ( - ACPI_OBJECT_TYPE TypeNeeded, - ACPI_OBJECT_TYPE ThisType, - void *Object) -{ - ACPI_FUNCTION_ENTRY (); - - - if (TypeNeeded == ACPI_TYPE_ANY) - { - /* All types OK, so we don't perform any typechecks */ - - return (AE_OK); - } - - if (TypeNeeded == ACPI_TYPE_LOCAL_REFERENCE) - { - /* - * Allow the AML "Constant" opcodes (Zero, One, etc.) to be reference - * objects and thus allow them to be targets. (As per the ACPI - * specification, a store to a constant is a noop.) - */ - if ((ThisType == ACPI_TYPE_INTEGER) && - (((ACPI_OPERAND_OBJECT *) Object)->Common.Flags & AOPOBJ_AML_CONSTANT)) - { - return (AE_OK); - } - } - - if (TypeNeeded != ThisType) - { - ACPI_ERROR ((AE_INFO, - "Needed type [%s], found [%s] %p", - AcpiUtGetTypeName (TypeNeeded), - AcpiUtGetTypeName (ThisType), Object)); - - return (AE_AML_OPERAND_TYPE); - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExResolveOperands - * - * PARAMETERS: Opcode - Opcode being interpreted - * StackPtr - Pointer to the operand stack to be - * resolved - * WalkState - Current state - * - * RETURN: Status - * - * DESCRIPTION: Convert multiple input operands to the types required by the - * target operator. - * - * Each 5-bit group in ArgTypes represents one required - * operand and indicates the required Type. The corresponding operand - * will be converted to the required type if possible, otherwise we - * abort with an exception. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExResolveOperands ( - UINT16 Opcode, - ACPI_OPERAND_OBJECT **StackPtr, - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status = AE_OK; - UINT8 ObjectType; - void *TempNode; - UINT32 ArgTypes; - const ACPI_OPCODE_INFO *OpInfo; - UINT32 ThisArgType; - ACPI_OBJECT_TYPE TypeNeeded; - UINT16 TargetOp = 0; - - - ACPI_FUNCTION_TRACE_U32 (ExResolveOperands, Opcode); - - - OpInfo = AcpiPsGetOpcodeInfo (Opcode); - if (OpInfo->Class == AML_CLASS_UNKNOWN) - { - return_ACPI_STATUS (AE_AML_BAD_OPCODE); - } - - ArgTypes = OpInfo->RuntimeArgs; - if (ArgTypes == ARGI_INVALID_OPCODE) - { - ACPI_ERROR ((AE_INFO, "Unknown AML opcode %X", - Opcode)); - - return_ACPI_STATUS (AE_AML_INTERNAL); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Opcode %X [%s] RequiredOperandTypes=%8.8X\n", - Opcode, OpInfo->Name, ArgTypes)); - - /* - * Normal exit is with (ArgTypes == 0) at end of argument list. - * Function will return an exception from within the loop upon - * finding an entry which is not (or cannot be converted - * to) the required type; if stack underflows; or upon - * finding a NULL stack entry (which should not happen). - */ - while (GET_CURRENT_ARG_TYPE (ArgTypes)) - { - if (!StackPtr || !*StackPtr) - { - ACPI_ERROR ((AE_INFO, "Null stack entry at %p", - StackPtr)); - - return_ACPI_STATUS (AE_AML_INTERNAL); - } - - /* Extract useful items */ - - ObjDesc = *StackPtr; - - /* Decode the descriptor type */ - - switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc)) - { - case ACPI_DESC_TYPE_NAMED: - - /* Namespace Node */ - - ObjectType = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Type; - - /* - * Resolve an alias object. The construction of these objects - * guarantees that there is only one level of alias indirection; - * thus, the attached object is always the aliased namespace node - */ - if (ObjectType == ACPI_TYPE_LOCAL_ALIAS) - { - ObjDesc = AcpiNsGetAttachedObject ((ACPI_NAMESPACE_NODE *) ObjDesc); - *StackPtr = ObjDesc; - ObjectType = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Type; - } - break; - - - case ACPI_DESC_TYPE_OPERAND: - - /* ACPI internal object */ - - ObjectType = ACPI_GET_OBJECT_TYPE (ObjDesc); - - /* Check for bad ACPI_OBJECT_TYPE */ - - if (!AcpiUtValidObjectType (ObjectType)) - { - ACPI_ERROR ((AE_INFO, - "Bad operand object type [%X]", - ObjectType)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - if (ObjectType == (UINT8) ACPI_TYPE_LOCAL_REFERENCE) - { - /* Decode the Reference */ - - OpInfo = AcpiPsGetOpcodeInfo (Opcode); - if (OpInfo->Class == AML_CLASS_UNKNOWN) - { - return_ACPI_STATUS (AE_AML_BAD_OPCODE); - } - - switch (ObjDesc->Reference.Opcode) - { - case AML_DEBUG_OP: - TargetOp = AML_DEBUG_OP; - - /*lint -fallthrough */ - - case AML_NAME_OP: - case AML_INDEX_OP: - case AML_REF_OF_OP: - case AML_ARG_OP: - case AML_LOCAL_OP: - case AML_LOAD_OP: /* DdbHandle from LOAD_OP or LOAD_TABLE_OP */ - case AML_INT_NAMEPATH_OP: /* Reference to a named object */ - - ACPI_DEBUG_ONLY_MEMBERS (ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Operand is a Reference, RefOpcode [%s]\n", - (AcpiPsGetOpcodeInfo (ObjDesc->Reference.Opcode))->Name))); - break; - - default: - ACPI_ERROR ((AE_INFO, - "Operand is a Reference, Unknown Reference Opcode: %X", - ObjDesc->Reference.Opcode)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - } - break; - - - default: - - /* Invalid descriptor */ - - ACPI_ERROR ((AE_INFO, - "Invalid descriptor %p [%s]", - ObjDesc, AcpiUtGetDescriptorName (ObjDesc))); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - /* Get one argument type, point to the next */ - - ThisArgType = GET_CURRENT_ARG_TYPE (ArgTypes); - INCREMENT_ARG_LIST (ArgTypes); - - /* - * Handle cases where the object does not need to be - * resolved to a value - */ - switch (ThisArgType) - { - case ARGI_REF_OR_STRING: /* Can be a String or Reference */ - - if ((ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_OPERAND) && - (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_STRING)) - { - /* - * String found - the string references a named object and - * must be resolved to a node - */ - goto NextOperand; - } - - /* - * Else not a string - fall through to the normal Reference - * case below - */ - /*lint -fallthrough */ - - case ARGI_REFERENCE: /* References: */ - case ARGI_INTEGER_REF: - case ARGI_OBJECT_REF: - case ARGI_DEVICE_REF: - case ARGI_TARGETREF: /* Allows implicit conversion rules before store */ - case ARGI_FIXED_TARGET: /* No implicit conversion before store to target */ - case ARGI_SIMPLE_TARGET: /* Name, Local, or Arg - no implicit conversion */ - - /* - * Need an operand of type ACPI_TYPE_LOCAL_REFERENCE - * A Namespace Node is OK as-is - */ - if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED) - { - goto NextOperand; - } - - Status = AcpiExCheckObjectType (ACPI_TYPE_LOCAL_REFERENCE, - ObjectType, ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - if (ObjDesc->Reference.Opcode == AML_NAME_OP) - { - /* Convert a named reference to the actual named object */ - - TempNode = ObjDesc->Reference.Object; - AcpiUtRemoveReference (ObjDesc); - (*StackPtr) = TempNode; - } - goto NextOperand; - - - case ARGI_DATAREFOBJ: /* Store operator only */ - - /* - * We don't want to resolve IndexOp reference objects during - * a store because this would be an implicit DeRefOf operation. - * Instead, we just want to store the reference object. - * -- All others must be resolved below. - */ - if ((Opcode == AML_STORE_OP) && - (ACPI_GET_OBJECT_TYPE (*StackPtr) == ACPI_TYPE_LOCAL_REFERENCE) && - ((*StackPtr)->Reference.Opcode == AML_INDEX_OP)) - { - goto NextOperand; - } - break; - - default: - /* All cases covered above */ - break; - } - - /* - * Resolve this object to a value - */ - Status = AcpiExResolveToValue (StackPtr, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Get the resolved object */ - - ObjDesc = *StackPtr; - - /* - * Check the resulting object (value) type - */ - switch (ThisArgType) - { - /* - * For the simple cases, only one type of resolved object - * is allowed - */ - case ARGI_MUTEX: - - /* Need an operand of type ACPI_TYPE_MUTEX */ - - TypeNeeded = ACPI_TYPE_MUTEX; - break; - - case ARGI_EVENT: - - /* Need an operand of type ACPI_TYPE_EVENT */ - - TypeNeeded = ACPI_TYPE_EVENT; - break; - - case ARGI_PACKAGE: /* Package */ - - /* Need an operand of type ACPI_TYPE_PACKAGE */ - - TypeNeeded = ACPI_TYPE_PACKAGE; - break; - - case ARGI_ANYTYPE: - - /* Any operand type will do */ - - TypeNeeded = ACPI_TYPE_ANY; - break; - - case ARGI_DDBHANDLE: - - /* Need an operand of type ACPI_TYPE_DDB_HANDLE */ - - TypeNeeded = ACPI_TYPE_LOCAL_REFERENCE; - break; - - - /* - * The more complex cases allow multiple resolved object types - */ - case ARGI_INTEGER: - - /* - * Need an operand of type ACPI_TYPE_INTEGER, - * But we can implicitly convert from a STRING or BUFFER - * Aka - "Implicit Source Operand Conversion" - */ - Status = AcpiExConvertToInteger (ObjDesc, StackPtr, 16); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_TYPE) - { - ACPI_ERROR ((AE_INFO, - "Needed [Integer/String/Buffer], found [%s] %p", - AcpiUtGetObjectTypeName (ObjDesc), ObjDesc)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - return_ACPI_STATUS (Status); - } - - if (ObjDesc != *StackPtr) - { - AcpiUtRemoveReference (ObjDesc); - } - goto NextOperand; - - - case ARGI_BUFFER: - - /* - * Need an operand of type ACPI_TYPE_BUFFER, - * But we can implicitly convert from a STRING or INTEGER - * Aka - "Implicit Source Operand Conversion" - */ - Status = AcpiExConvertToBuffer (ObjDesc, StackPtr); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_TYPE) - { - ACPI_ERROR ((AE_INFO, - "Needed [Integer/String/Buffer], found [%s] %p", - AcpiUtGetObjectTypeName (ObjDesc), ObjDesc)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - return_ACPI_STATUS (Status); - } - - if (ObjDesc != *StackPtr) - { - AcpiUtRemoveReference (ObjDesc); - } - goto NextOperand; - - - case ARGI_STRING: - - /* - * Need an operand of type ACPI_TYPE_STRING, - * But we can implicitly convert from a BUFFER or INTEGER - * Aka - "Implicit Source Operand Conversion" - */ - Status = AcpiExConvertToString (ObjDesc, StackPtr, - ACPI_IMPLICIT_CONVERT_HEX); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_TYPE) - { - ACPI_ERROR ((AE_INFO, - "Needed [Integer/String/Buffer], found [%s] %p", - AcpiUtGetObjectTypeName (ObjDesc), ObjDesc)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - return_ACPI_STATUS (Status); - } - - if (ObjDesc != *StackPtr) - { - AcpiUtRemoveReference (ObjDesc); - } - goto NextOperand; - - - case ARGI_COMPUTEDATA: - - /* Need an operand of type INTEGER, STRING or BUFFER */ - - switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) - { - case ACPI_TYPE_INTEGER: - case ACPI_TYPE_STRING: - case ACPI_TYPE_BUFFER: - - /* Valid operand */ - break; - - default: - ACPI_ERROR ((AE_INFO, - "Needed [Integer/String/Buffer], found [%s] %p", - AcpiUtGetObjectTypeName (ObjDesc), ObjDesc)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - goto NextOperand; - - - case ARGI_BUFFER_OR_STRING: - - /* Need an operand of type STRING or BUFFER */ - - switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) - { - case ACPI_TYPE_STRING: - case ACPI_TYPE_BUFFER: - - /* Valid operand */ - break; - - case ACPI_TYPE_INTEGER: - - /* Highest priority conversion is to type Buffer */ - - Status = AcpiExConvertToBuffer (ObjDesc, StackPtr); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - if (ObjDesc != *StackPtr) - { - AcpiUtRemoveReference (ObjDesc); - } - break; - - default: - ACPI_ERROR ((AE_INFO, - "Needed [Integer/String/Buffer], found [%s] %p", - AcpiUtGetObjectTypeName (ObjDesc), ObjDesc)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - goto NextOperand; - - - case ARGI_DATAOBJECT: - /* - * ARGI_DATAOBJECT is only used by the SizeOf operator. - * Need a buffer, string, package, or RefOf reference. - * - * The only reference allowed here is a direct reference to - * a namespace node. - */ - switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) - { - case ACPI_TYPE_PACKAGE: - case ACPI_TYPE_STRING: - case ACPI_TYPE_BUFFER: - case ACPI_TYPE_LOCAL_REFERENCE: - - /* Valid operand */ - break; - - default: - ACPI_ERROR ((AE_INFO, - "Needed [Buffer/String/Package/Reference], found [%s] %p", - AcpiUtGetObjectTypeName (ObjDesc), ObjDesc)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - goto NextOperand; - - - case ARGI_COMPLEXOBJ: - - /* Need a buffer or package or (ACPI 2.0) String */ - - switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) - { - case ACPI_TYPE_PACKAGE: - case ACPI_TYPE_STRING: - case ACPI_TYPE_BUFFER: - - /* Valid operand */ - break; - - default: - ACPI_ERROR ((AE_INFO, - "Needed [Buffer/String/Package], found [%s] %p", - AcpiUtGetObjectTypeName (ObjDesc), ObjDesc)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - goto NextOperand; - - - case ARGI_REGION_OR_BUFFER: /* Used by Load() only */ - - /* Need an operand of type REGION or a BUFFER (which could be a resolved region field) */ - - switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) - { - case ACPI_TYPE_BUFFER: - case ACPI_TYPE_REGION: - - /* Valid operand */ - break; - - default: - ACPI_ERROR ((AE_INFO, - "Needed [Region/Buffer], found [%s] %p", - AcpiUtGetObjectTypeName (ObjDesc), ObjDesc)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - goto NextOperand; - - - case ARGI_DATAREFOBJ: - - /* Used by the Store() operator only */ - - switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) - { - case ACPI_TYPE_INTEGER: - case ACPI_TYPE_PACKAGE: - case ACPI_TYPE_STRING: - case ACPI_TYPE_BUFFER: - case ACPI_TYPE_BUFFER_FIELD: - case ACPI_TYPE_LOCAL_REFERENCE: - case ACPI_TYPE_LOCAL_REGION_FIELD: - case ACPI_TYPE_LOCAL_BANK_FIELD: - case ACPI_TYPE_LOCAL_INDEX_FIELD: - case ACPI_TYPE_DDB_HANDLE: - - /* Valid operand */ - break; - - default: - - if (AcpiGbl_EnableInterpreterSlack) - { - /* - * Enable original behavior of Store(), allowing any and all - * objects as the source operand. The ACPI spec does not - * allow this, however. - */ - break; - } - - if (TargetOp == AML_DEBUG_OP) - { - /* Allow store of any object to the Debug object */ - - break; - } - - ACPI_ERROR ((AE_INFO, - "Needed Integer/Buffer/String/Package/Ref/Ddb], found [%s] %p", - AcpiUtGetObjectTypeName (ObjDesc), ObjDesc)); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - goto NextOperand; - - - default: - - /* Unknown type */ - - ACPI_ERROR ((AE_INFO, - "Internal - Unknown ARGI (required operand) type %X", - ThisArgType)); - - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* - * Make sure that the original object was resolved to the - * required object type (Simple cases only). - */ - Status = AcpiExCheckObjectType (TypeNeeded, - ACPI_GET_OBJECT_TYPE (*StackPtr), *StackPtr); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - -NextOperand: - /* - * If more operands needed, decrement StackPtr to point - * to next operand on stack - */ - if (GET_CURRENT_ARG_TYPE (ArgTypes)) - { - StackPtr--; - } - } - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exstore.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exstore.c deleted file mode 100644 index bc3ee25f39..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exstore.c +++ /dev/null @@ -1,757 +0,0 @@ - -/****************************************************************************** - * - * Module Name: exstore - AML Interpreter object store support - * $Revision: 1.200 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __EXSTORE_C__ - -#include "acpi.h" -#include "acdispat.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acparser.h" - - -#define _COMPONENT ACPI_EXECUTER - ACPI_MODULE_NAME ("exstore") - -/* Local prototypes */ - -static void -AcpiExDoDebugObject ( - ACPI_OPERAND_OBJECT *SourceDesc, - UINT32 Level, - UINT32 Index); - -static ACPI_STATUS -AcpiExStoreObjectToIndex ( - ACPI_OPERAND_OBJECT *ValDesc, - ACPI_OPERAND_OBJECT *DestDesc, - ACPI_WALK_STATE *WalkState); - - -/******************************************************************************* - * - * FUNCTION: AcpiExDoDebugObject - * - * PARAMETERS: SourceDesc - Value to be stored - * Level - Indentation level (used for packages) - * Index - Current package element, zero if not pkg - * - * RETURN: None - * - * DESCRIPTION: Handles stores to the Debug Object. - * - ******************************************************************************/ - -static void -AcpiExDoDebugObject ( - ACPI_OPERAND_OBJECT *SourceDesc, - UINT32 Level, - UINT32 Index) -{ - UINT32 i; - - - ACPI_FUNCTION_TRACE_PTR (ExDoDebugObject, SourceDesc); - - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "[ACPI Debug] %*s", - Level, " ")); - - /* Display index for package output only */ - - if (Index > 0) - { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, - "(%.2u) ", Index -1)); - } - - if (!SourceDesc) - { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "\n")); - return_VOID; - } - - if (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc) == ACPI_DESC_TYPE_OPERAND) - { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "%s: ", - AcpiUtGetObjectTypeName (SourceDesc))); - - if (!AcpiUtValidInternalObject (SourceDesc)) - { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, - "%p, Invalid Internal Object!\n", SourceDesc)); - return_VOID; - } - } - else if (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc) == ACPI_DESC_TYPE_NAMED) - { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "%s: %p\n", - AcpiUtGetTypeName (((ACPI_NAMESPACE_NODE *) SourceDesc)->Type), - SourceDesc)); - return_VOID; - } - else - { - return_VOID; - } - - switch (ACPI_GET_OBJECT_TYPE (SourceDesc)) - { - case ACPI_TYPE_INTEGER: - - /* Output correct integer width */ - - if (AcpiGbl_IntegerByteWidth == 4) - { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "0x%8.8X\n", - (UINT32) SourceDesc->Integer.Value)); - } - else - { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "0x%8.8X%8.8X\n", - ACPI_FORMAT_UINT64 (SourceDesc->Integer.Value))); - } - break; - - case ACPI_TYPE_BUFFER: - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "[0x%.2X]\n", - (UINT32) SourceDesc->Buffer.Length)); - ACPI_DUMP_BUFFER (SourceDesc->Buffer.Pointer, - (SourceDesc->Buffer.Length < 32) ? SourceDesc->Buffer.Length : 32); - break; - - case ACPI_TYPE_STRING: - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "[0x%.2X] \"%s\"\n", - SourceDesc->String.Length, SourceDesc->String.Pointer)); - break; - - case ACPI_TYPE_PACKAGE: - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "[0x%.2X Elements]\n", - SourceDesc->Package.Count)); - - /* Output the entire contents of the package */ - - for (i = 0; i < SourceDesc->Package.Count; i++) - { - AcpiExDoDebugObject (SourceDesc->Package.Elements[i], - Level+4, i+1); - } - break; - - case ACPI_TYPE_LOCAL_REFERENCE: - - if (SourceDesc->Reference.Opcode == AML_INDEX_OP) - { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "[%s, 0x%X]\n", - AcpiPsGetOpcodeName (SourceDesc->Reference.Opcode), - SourceDesc->Reference.Offset)); - } - else - { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "[%s]\n", - AcpiPsGetOpcodeName (SourceDesc->Reference.Opcode))); - } - - - if (SourceDesc->Reference.Object) - { - if (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc->Reference.Object) == - ACPI_DESC_TYPE_NAMED) - { - AcpiExDoDebugObject (((ACPI_NAMESPACE_NODE *) - SourceDesc->Reference.Object)->Object, - Level+4, 0); - } - else - { - AcpiExDoDebugObject (SourceDesc->Reference.Object, Level+4, 0); - } - } - else if (SourceDesc->Reference.Node) - { - AcpiExDoDebugObject ((SourceDesc->Reference.Node)->Object, - Level+4, 0); - } - break; - - default: - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "%p %s\n", - SourceDesc, AcpiUtGetObjectTypeName (SourceDesc))); - break; - } - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC, "\n")); - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExStore - * - * PARAMETERS: *SourceDesc - Value to be stored - * *DestDesc - Where to store it. Must be an NS node - * or an ACPI_OPERAND_OBJECT of type - * Reference; - * WalkState - Current walk state - * - * RETURN: Status - * - * DESCRIPTION: Store the value described by SourceDesc into the location - * described by DestDesc. Called by various interpreter - * functions to store the result of an operation into - * the destination operand -- not just simply the actual "Store" - * ASL operator. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExStore ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *DestDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - ACPI_OPERAND_OBJECT *RefDesc = DestDesc; - - - ACPI_FUNCTION_TRACE_PTR (ExStore, DestDesc); - - - /* Validate parameters */ - - if (!SourceDesc || !DestDesc) - { - ACPI_ERROR ((AE_INFO, "Null parameter")); - return_ACPI_STATUS (AE_AML_NO_OPERAND); - } - - /* DestDesc can be either a namespace node or an ACPI object */ - - if (ACPI_GET_DESCRIPTOR_TYPE (DestDesc) == ACPI_DESC_TYPE_NAMED) - { - /* - * Dest is a namespace node, - * Storing an object into a Named node. - */ - Status = AcpiExStoreObjectToNode (SourceDesc, - (ACPI_NAMESPACE_NODE *) DestDesc, WalkState, - ACPI_IMPLICIT_CONVERSION); - - return_ACPI_STATUS (Status); - } - - /* Destination object must be a Reference or a Constant object */ - - switch (ACPI_GET_OBJECT_TYPE (DestDesc)) - { - case ACPI_TYPE_LOCAL_REFERENCE: - break; - - case ACPI_TYPE_INTEGER: - - /* Allow stores to Constants -- a Noop as per ACPI spec */ - - if (DestDesc->Common.Flags & AOPOBJ_AML_CONSTANT) - { - return_ACPI_STATUS (AE_OK); - } - - /*lint -fallthrough */ - - default: - - /* Destination is not a Reference object */ - - ACPI_ERROR ((AE_INFO, - "Target is not a Reference or Constant object - %s [%p]", - AcpiUtGetObjectTypeName (DestDesc), DestDesc)); - - ACPI_DUMP_STACK_ENTRY (SourceDesc); - ACPI_DUMP_STACK_ENTRY (DestDesc); - ACPI_DUMP_OPERANDS (&DestDesc, ACPI_IMODE_EXECUTE, "ExStore", - 2, "Target is not a Reference or Constant object"); - - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - /* - * Examine the Reference opcode. These cases are handled: - * - * 1) Store to Name (Change the object associated with a name) - * 2) Store to an indexed area of a Buffer or Package - * 3) Store to a Method Local or Arg - * 4) Store to the debug object - */ - switch (RefDesc->Reference.Opcode) - { - case AML_NAME_OP: - case AML_REF_OF_OP: - - /* Storing an object into a Name "container" */ - - Status = AcpiExStoreObjectToNode (SourceDesc, - RefDesc->Reference.Object, - WalkState, ACPI_IMPLICIT_CONVERSION); - break; - - - case AML_INDEX_OP: - - /* Storing to an Index (pointer into a packager or buffer) */ - - Status = AcpiExStoreObjectToIndex (SourceDesc, RefDesc, WalkState); - break; - - - case AML_LOCAL_OP: - case AML_ARG_OP: - - /* Store to a method local/arg */ - - Status = AcpiDsStoreObjectToLocal (RefDesc->Reference.Opcode, - RefDesc->Reference.Offset, SourceDesc, WalkState); - break; - - - case AML_DEBUG_OP: - - /* - * Storing to the Debug object causes the value stored to be - * displayed and otherwise has no effect -- see ACPI Specification - */ - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "**** Write to Debug Object: Object %p %s ****:\n\n", - SourceDesc, AcpiUtGetObjectTypeName (SourceDesc))); - - AcpiExDoDebugObject (SourceDesc, 0, 0); - break; - - - default: - - ACPI_ERROR ((AE_INFO, "Unknown Reference opcode %X", - RefDesc->Reference.Opcode)); - ACPI_DUMP_ENTRY (RefDesc, ACPI_LV_ERROR); - - Status = AE_AML_INTERNAL; - break; - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExStoreObjectToIndex - * - * PARAMETERS: *SourceDesc - Value to be stored - * *DestDesc - Named object to receive the value - * WalkState - Current walk state - * - * RETURN: Status - * - * DESCRIPTION: Store the object to indexed Buffer or Package element - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiExStoreObjectToIndex ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *IndexDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *NewDesc; - UINT8 Value = 0; - UINT32 i; - - - ACPI_FUNCTION_TRACE (ExStoreObjectToIndex); - - - /* - * Destination must be a reference pointer, and - * must point to either a buffer or a package - */ - switch (IndexDesc->Reference.TargetType) - { - case ACPI_TYPE_PACKAGE: - /* - * Storing to a package element. Copy the object and replace - * any existing object with the new object. No implicit - * conversion is performed. - * - * The object at *(IndexDesc->Reference.Where) is the - * element within the package that is to be modified. - * The parent package object is at IndexDesc->Reference.Object - */ - ObjDesc = *(IndexDesc->Reference.Where); - - Status = AcpiUtCopyIobjectToIobject (SourceDesc, &NewDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - if (ObjDesc) - { - /* Decrement reference count by the ref count of the parent package */ - - for (i = 0; - i < ((ACPI_OPERAND_OBJECT *) - IndexDesc->Reference.Object)->Common.ReferenceCount; - i++) - { - AcpiUtRemoveReference (ObjDesc); - } - } - - *(IndexDesc->Reference.Where) = NewDesc; - - /* Increment ref count by the ref count of the parent package-1 */ - - for (i = 1; - i < ((ACPI_OPERAND_OBJECT *) - IndexDesc->Reference.Object)->Common.ReferenceCount; - i++) - { - AcpiUtAddReference (NewDesc); - } - - break; - - - case ACPI_TYPE_BUFFER_FIELD: - - /* - * Store into a Buffer or String (not actually a real BufferField) - * at a location defined by an Index. - * - * The first 8-bit element of the source object is written to the - * 8-bit Buffer location defined by the Index destination object, - * according to the ACPI 2.0 specification. - */ - - /* - * Make sure the target is a Buffer or String. An error should - * not happen here, since the ReferenceObject was constructed - * by the INDEX_OP code. - */ - ObjDesc = IndexDesc->Reference.Object; - if ((ACPI_GET_OBJECT_TYPE (ObjDesc) != ACPI_TYPE_BUFFER) && - (ACPI_GET_OBJECT_TYPE (ObjDesc) != ACPI_TYPE_STRING)) - { - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - /* - * The assignment of the individual elements will be slightly - * different for each source type. - */ - switch (ACPI_GET_OBJECT_TYPE (SourceDesc)) - { - case ACPI_TYPE_INTEGER: - - /* Use the least-significant byte of the integer */ - - Value = (UINT8) (SourceDesc->Integer.Value); - break; - - case ACPI_TYPE_BUFFER: - case ACPI_TYPE_STRING: - - /* Note: Takes advantage of common string/buffer fields */ - - Value = SourceDesc->Buffer.Pointer[0]; - break; - - default: - - /* All other types are invalid */ - - ACPI_ERROR ((AE_INFO, - "Source must be Integer/Buffer/String type, not %s", - AcpiUtGetObjectTypeName (SourceDesc))); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - /* Store the source value into the target buffer byte */ - - ObjDesc->Buffer.Pointer[IndexDesc->Reference.Offset] = Value; - break; - - - default: - ACPI_ERROR ((AE_INFO, - "Target is not a Package or BufferField")); - Status = AE_AML_OPERAND_TYPE; - break; - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExStoreObjectToNode - * - * PARAMETERS: SourceDesc - Value to be stored - * Node - Named object to receive the value - * WalkState - Current walk state - * ImplicitConversion - Perform implicit conversion (yes/no) - * - * RETURN: Status - * - * DESCRIPTION: Store the object to the named object. - * - * The Assignment of an object to a named object is handled here - * The value passed in will replace the current value (if any) - * with the input value. - * - * When storing into an object the data is converted to the - * target object type then stored in the object. This means - * that the target object type (for an initialized target) will - * not be changed by a store operation. - * - * Assumes parameters are already validated. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExStoreObjectToNode ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_NAMESPACE_NODE *Node, - ACPI_WALK_STATE *WalkState, - UINT8 ImplicitConversion) -{ - ACPI_STATUS Status = AE_OK; - ACPI_OPERAND_OBJECT *TargetDesc; - ACPI_OPERAND_OBJECT *NewDesc; - ACPI_OBJECT_TYPE TargetType; - - - ACPI_FUNCTION_TRACE_PTR (ExStoreObjectToNode, SourceDesc); - - - /* Get current type of the node, and object attached to Node */ - - TargetType = AcpiNsGetType (Node); - TargetDesc = AcpiNsGetAttachedObject (Node); - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Storing %p(%s) into node %p(%s)\n", - SourceDesc, AcpiUtGetObjectTypeName (SourceDesc), - Node, AcpiUtGetTypeName (TargetType))); - - /* - * Resolve the source object to an actual value - * (If it is a reference object) - */ - Status = AcpiExResolveObject (&SourceDesc, TargetType, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* If no implicit conversion, drop into the default case below */ - - if ((!ImplicitConversion) || (WalkState->Opcode == AML_COPY_OP)) - { - /* Force execution of default (no implicit conversion) */ - - TargetType = ACPI_TYPE_ANY; - } - - /* Do the actual store operation */ - - switch (TargetType) - { - case ACPI_TYPE_BUFFER_FIELD: - case ACPI_TYPE_LOCAL_REGION_FIELD: - case ACPI_TYPE_LOCAL_BANK_FIELD: - case ACPI_TYPE_LOCAL_INDEX_FIELD: - - /* For fields, copy the source data to the target field. */ - - Status = AcpiExWriteDataToField (SourceDesc, TargetDesc, - &WalkState->ResultObj); - break; - - - case ACPI_TYPE_INTEGER: - case ACPI_TYPE_STRING: - case ACPI_TYPE_BUFFER: - - /* - * These target types are all of type Integer/String/Buffer, and - * therefore support implicit conversion before the store. - * - * Copy and/or convert the source object to a new target object - */ - Status = AcpiExStoreObjectToObject (SourceDesc, TargetDesc, - &NewDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - if (NewDesc != TargetDesc) - { - /* - * Store the new NewDesc as the new value of the Name, and set - * the Name's type to that of the value being stored in it. - * SourceDesc reference count is incremented by AttachObject. - * - * Note: This may change the type of the node if an explicit store - * has been performed such that the node/object type has been - * changed. - */ - Status = AcpiNsAttachObject (Node, NewDesc, NewDesc->Common.Type); - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Store %s into %s via Convert/Attach\n", - AcpiUtGetObjectTypeName (SourceDesc), - AcpiUtGetObjectTypeName (NewDesc))); - } - break; - - - default: - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Storing %s (%p) directly into node (%p) with no implicit conversion\n", - AcpiUtGetObjectTypeName (SourceDesc), SourceDesc, Node)); - - /* No conversions for all other types. Just attach the source object */ - - Status = AcpiNsAttachObject (Node, SourceDesc, - ACPI_GET_OBJECT_TYPE (SourceDesc)); - break; - } - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exstoren.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exstoren.c deleted file mode 100644 index 452563ff44..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exstoren.c +++ /dev/null @@ -1,385 +0,0 @@ - -/****************************************************************************** - * - * Module Name: exstoren - AML Interpreter object store support, - * Store to Node (namespace object) - * $Revision: 1.70 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __EXSTOREN_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "amlcode.h" - - -#define _COMPONENT ACPI_EXECUTER - ACPI_MODULE_NAME ("exstoren") - - -/******************************************************************************* - * - * FUNCTION: AcpiExResolveObject - * - * PARAMETERS: SourceDescPtr - Pointer to the source object - * TargetType - Current type of the target - * WalkState - Current walk state - * - * RETURN: Status, resolved object in SourceDescPtr. - * - * DESCRIPTION: Resolve an object. If the object is a reference, dereference - * it and return the actual object in the SourceDescPtr. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExResolveObject ( - ACPI_OPERAND_OBJECT **SourceDescPtr, - ACPI_OBJECT_TYPE TargetType, - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT *SourceDesc = *SourceDescPtr; - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE (ExResolveObject); - - - /* Ensure we have a Target that can be stored to */ - - switch (TargetType) - { - case ACPI_TYPE_BUFFER_FIELD: - case ACPI_TYPE_LOCAL_REGION_FIELD: - case ACPI_TYPE_LOCAL_BANK_FIELD: - case ACPI_TYPE_LOCAL_INDEX_FIELD: - /* - * These cases all require only Integers or values that - * can be converted to Integers (Strings or Buffers) - */ - - case ACPI_TYPE_INTEGER: - case ACPI_TYPE_STRING: - case ACPI_TYPE_BUFFER: - - /* - * Stores into a Field/Region or into a Integer/Buffer/String - * are all essentially the same. This case handles the - * "interchangeable" types Integer, String, and Buffer. - */ - if (ACPI_GET_OBJECT_TYPE (SourceDesc) == ACPI_TYPE_LOCAL_REFERENCE) - { - /* Resolve a reference object first */ - - Status = AcpiExResolveToValue (SourceDescPtr, WalkState); - if (ACPI_FAILURE (Status)) - { - break; - } - } - - /* For CopyObject, no further validation necessary */ - - if (WalkState->Opcode == AML_COPY_OP) - { - break; - } - - /* Must have a Integer, Buffer, or String */ - - if ((ACPI_GET_OBJECT_TYPE (SourceDesc) != ACPI_TYPE_INTEGER) && - (ACPI_GET_OBJECT_TYPE (SourceDesc) != ACPI_TYPE_BUFFER) && - (ACPI_GET_OBJECT_TYPE (SourceDesc) != ACPI_TYPE_STRING) && - !((ACPI_GET_OBJECT_TYPE (SourceDesc) == ACPI_TYPE_LOCAL_REFERENCE) && (SourceDesc->Reference.Opcode == AML_LOAD_OP))) - { - /* Conversion successful but still not a valid type */ - - ACPI_ERROR ((AE_INFO, - "Cannot assign type %s to %s (must be type Int/Str/Buf)", - AcpiUtGetObjectTypeName (SourceDesc), - AcpiUtGetTypeName (TargetType))); - Status = AE_AML_OPERAND_TYPE; - } - break; - - - case ACPI_TYPE_LOCAL_ALIAS: - case ACPI_TYPE_LOCAL_METHOD_ALIAS: - - /* - * All aliases should have been resolved earlier, during the - * operand resolution phase. - */ - ACPI_ERROR ((AE_INFO, "Store into an unresolved Alias object")); - Status = AE_AML_INTERNAL; - break; - - - case ACPI_TYPE_PACKAGE: - default: - - /* - * All other types than Alias and the various Fields come here, - * including the untyped case - ACPI_TYPE_ANY. - */ - break; - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExStoreObjectToObject - * - * PARAMETERS: SourceDesc - Object to store - * DestDesc - Object to receive a copy of the source - * NewDesc - New object if DestDesc is obsoleted - * WalkState - Current walk state - * - * RETURN: Status - * - * DESCRIPTION: "Store" an object to another object. This may include - * converting the source type to the target type (implicit - * conversion), and a copy of the value of the source to - * the target. - * - * The Assignment of an object to another (not named) object - * is handled here. - * The Source passed in will replace the current value (if any) - * with the input value. - * - * When storing into an object the data is converted to the - * target object type then stored in the object. This means - * that the target object type (for an initialized target) will - * not be changed by a store operation. - * - * This module allows destination types of Number, String, - * Buffer, and Package. - * - * Assumes parameters are already validated. NOTE: SourceDesc - * resolution (from a reference object) must be performed by - * the caller if necessary. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExStoreObjectToObject ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *DestDesc, - ACPI_OPERAND_OBJECT **NewDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_OPERAND_OBJECT *ActualSrcDesc; - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE_PTR (ExStoreObjectToObject, SourceDesc); - - - ActualSrcDesc = SourceDesc; - if (!DestDesc) - { - /* - * There is no destination object (An uninitialized node or - * package element), so we can simply copy the source object - * creating a new destination object - */ - Status = AcpiUtCopyIobjectToIobject (ActualSrcDesc, NewDesc, WalkState); - return_ACPI_STATUS (Status); - } - - if (ACPI_GET_OBJECT_TYPE (SourceDesc) != ACPI_GET_OBJECT_TYPE (DestDesc)) - { - /* - * The source type does not match the type of the destination. - * Perform the "implicit conversion" of the source to the current type - * of the target as per the ACPI specification. - * - * If no conversion performed, ActualSrcDesc = SourceDesc. - * Otherwise, ActualSrcDesc is a temporary object to hold the - * converted object. - */ - Status = AcpiExConvertToTargetType (ACPI_GET_OBJECT_TYPE (DestDesc), - SourceDesc, &ActualSrcDesc, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - if (SourceDesc == ActualSrcDesc) - { - /* - * No conversion was performed. Return the SourceDesc as the - * new object. - */ - *NewDesc = SourceDesc; - return_ACPI_STATUS (AE_OK); - } - } - - /* - * We now have two objects of identical types, and we can perform a - * copy of the *value* of the source object. - */ - switch (ACPI_GET_OBJECT_TYPE (DestDesc)) - { - case ACPI_TYPE_INTEGER: - - DestDesc->Integer.Value = ActualSrcDesc->Integer.Value; - - /* Truncate value if we are executing from a 32-bit ACPI table */ - - AcpiExTruncateFor32bitTable (DestDesc); - break; - - case ACPI_TYPE_STRING: - - Status = AcpiExStoreStringToString (ActualSrcDesc, DestDesc); - break; - - case ACPI_TYPE_BUFFER: - - Status = AcpiExStoreBufferToBuffer (ActualSrcDesc, DestDesc); - break; - - case ACPI_TYPE_PACKAGE: - - Status = AcpiUtCopyIobjectToIobject (ActualSrcDesc, &DestDesc, - WalkState); - break; - - default: - /* - * All other types come here. - */ - ACPI_WARNING ((AE_INFO, "Store into type %s not implemented", - AcpiUtGetObjectTypeName (DestDesc))); - - Status = AE_NOT_IMPLEMENTED; - break; - } - - if (ActualSrcDesc != SourceDesc) - { - /* Delete the intermediate (temporary) source object */ - - AcpiUtRemoveReference (ActualSrcDesc); - } - - *NewDesc = DestDesc; - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exstorob.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exstorob.c deleted file mode 100644 index 4810c0b860..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exstorob.c +++ /dev/null @@ -1,302 +0,0 @@ - -/****************************************************************************** - * - * Module Name: exstorob - AML Interpreter object store support, store to object - * $Revision: 1.61 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __EXSTOROB_C__ - -#include "acpi.h" -#include "acinterp.h" - - -#define _COMPONENT ACPI_EXECUTER - ACPI_MODULE_NAME ("exstorob") - - -/******************************************************************************* - * - * FUNCTION: AcpiExStoreBufferToBuffer - * - * PARAMETERS: SourceDesc - Source object to copy - * TargetDesc - Destination object of the copy - * - * RETURN: Status - * - * DESCRIPTION: Copy a buffer object to another buffer object. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExStoreBufferToBuffer ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *TargetDesc) -{ - UINT32 Length; - UINT8 *Buffer; - - - ACPI_FUNCTION_TRACE_PTR (ExStoreBufferToBuffer, SourceDesc); - - - /* We know that SourceDesc is a buffer by now */ - - Buffer = ACPI_CAST_PTR (UINT8, SourceDesc->Buffer.Pointer); - Length = SourceDesc->Buffer.Length; - - /* - * If target is a buffer of length zero or is a static buffer, - * allocate a new buffer of the proper length - */ - if ((TargetDesc->Buffer.Length == 0) || - (TargetDesc->Common.Flags & AOPOBJ_STATIC_POINTER)) - { - TargetDesc->Buffer.Pointer = ACPI_ALLOCATE (Length); - if (!TargetDesc->Buffer.Pointer) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - TargetDesc->Buffer.Length = Length; - } - - /* Copy source buffer to target buffer */ - - if (Length <= TargetDesc->Buffer.Length) - { - /* Clear existing buffer and copy in the new one */ - - ACPI_MEMSET (TargetDesc->Buffer.Pointer, 0, TargetDesc->Buffer.Length); - ACPI_MEMCPY (TargetDesc->Buffer.Pointer, Buffer, Length); - -#ifdef ACPI_OBSOLETE_BEHAVIOR - /* - * NOTE: ACPI versions up to 3.0 specified that the buffer must be - * truncated if the string is smaller than the buffer. However, "other" - * implementations of ACPI never did this and thus became the defacto - * standard. ACPI 3.0A changes this behavior such that the buffer - * is no longer truncated. - */ - - /* - * OBSOLETE BEHAVIOR: - * If the original source was a string, we must truncate the buffer, - * according to the ACPI spec. Integer-to-Buffer and Buffer-to-Buffer - * copy must not truncate the original buffer. - */ - if (OriginalSrcType == ACPI_TYPE_STRING) - { - /* Set the new length of the target */ - - TargetDesc->Buffer.Length = Length; - } -#endif - } - else - { - /* Truncate the source, copy only what will fit */ - - ACPI_MEMCPY (TargetDesc->Buffer.Pointer, Buffer, - TargetDesc->Buffer.Length); - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Truncating source buffer from %X to %X\n", - Length, TargetDesc->Buffer.Length)); - } - - /* Copy flags */ - - TargetDesc->Buffer.Flags = SourceDesc->Buffer.Flags; - TargetDesc->Common.Flags &= ~AOPOBJ_STATIC_POINTER; - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExStoreStringToString - * - * PARAMETERS: SourceDesc - Source object to copy - * TargetDesc - Destination object of the copy - * - * RETURN: Status - * - * DESCRIPTION: Copy a String object to another String object - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExStoreStringToString ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *TargetDesc) -{ - UINT32 Length; - UINT8 *Buffer; - - - ACPI_FUNCTION_TRACE_PTR (ExStoreStringToString, SourceDesc); - - - /* We know that SourceDesc is a string by now */ - - Buffer = ACPI_CAST_PTR (UINT8, SourceDesc->String.Pointer); - Length = SourceDesc->String.Length; - - /* - * Replace existing string value if it will fit and the string - * pointer is not a static pointer (part of an ACPI table) - */ - if ((Length < TargetDesc->String.Length) && - (!(TargetDesc->Common.Flags & AOPOBJ_STATIC_POINTER))) - { - /* - * String will fit in existing non-static buffer. - * Clear old string and copy in the new one - */ - ACPI_MEMSET (TargetDesc->String.Pointer, 0, - (ACPI_SIZE) TargetDesc->String.Length + 1); - ACPI_MEMCPY (TargetDesc->String.Pointer, Buffer, Length); - } - else - { - /* - * Free the current buffer, then allocate a new buffer - * large enough to hold the value - */ - if (TargetDesc->String.Pointer && - (!(TargetDesc->Common.Flags & AOPOBJ_STATIC_POINTER))) - { - /* Only free if not a pointer into the DSDT */ - - ACPI_FREE (TargetDesc->String.Pointer); - } - - TargetDesc->String.Pointer = ACPI_ALLOCATE_ZEROED ( - (ACPI_SIZE) Length + 1); - if (!TargetDesc->String.Pointer) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - TargetDesc->Common.Flags &= ~AOPOBJ_STATIC_POINTER; - ACPI_MEMCPY (TargetDesc->String.Pointer, Buffer, Length); - } - - /* Set the new target length */ - - TargetDesc->String.Length = Length; - return_ACPI_STATUS (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exsystem.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exsystem.c deleted file mode 100644 index 3f6852cd3d..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exsystem.c +++ /dev/null @@ -1,419 +0,0 @@ - -/****************************************************************************** - * - * Module Name: exsystem - Interface to OS services - * $Revision: 1.92 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __EXSYSTEM_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "acevents.h" - -#define _COMPONENT ACPI_EXECUTER - ACPI_MODULE_NAME ("exsystem") - - -/******************************************************************************* - * - * FUNCTION: AcpiExSystemWaitSemaphore - * - * PARAMETERS: Semaphore - Semaphore to wait on - * Timeout - Max time to wait - * - * RETURN: Status - * - * DESCRIPTION: Implements a semaphore wait with a check to see if the - * semaphore is available immediately. If it is not, the - * interpreter is released before waiting. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExSystemWaitSemaphore ( - ACPI_SEMAPHORE Semaphore, - UINT16 Timeout) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (ExSystemWaitSemaphore); - - - Status = AcpiOsWaitSemaphore (Semaphore, 1, ACPI_DO_NOT_WAIT); - if (ACPI_SUCCESS (Status)) - { - return_ACPI_STATUS (Status); - } - - if (Status == AE_TIME) - { - /* We must wait, so unlock the interpreter */ - - AcpiExRelinquishInterpreter (); - - Status = AcpiOsWaitSemaphore (Semaphore, 1, Timeout); - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "*** Thread awake after blocking, %s\n", - AcpiFormatException (Status))); - - /* Reacquire the interpreter */ - - AcpiExReacquireInterpreter (); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExSystemWaitMutex - * - * PARAMETERS: Mutex - Mutex to wait on - * Timeout - Max time to wait - * - * RETURN: Status - * - * DESCRIPTION: Implements a mutex wait with a check to see if the - * mutex is available immediately. If it is not, the - * interpreter is released before waiting. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExSystemWaitMutex ( - ACPI_MUTEX Mutex, - UINT16 Timeout) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (ExSystemWaitMutex); - - - Status = AcpiOsAcquireMutex (Mutex, ACPI_DO_NOT_WAIT); - if (ACPI_SUCCESS (Status)) - { - return_ACPI_STATUS (Status); - } - - if (Status == AE_TIME) - { - /* We must wait, so unlock the interpreter */ - - AcpiExRelinquishInterpreter (); - - Status = AcpiOsAcquireMutex (Mutex, Timeout); - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "*** Thread awake after blocking, %s\n", - AcpiFormatException (Status))); - - /* Reacquire the interpreter */ - - AcpiExReacquireInterpreter (); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExSystemDoStall - * - * PARAMETERS: HowLong - The amount of time to stall, - * in microseconds - * - * RETURN: Status - * - * DESCRIPTION: Suspend running thread for specified amount of time. - * Note: ACPI specification requires that Stall() does not - * relinquish the processor, and delays longer than 100 usec - * should use Sleep() instead. We allow stalls up to 255 usec - * for compatibility with other interpreters and existing BIOSs. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExSystemDoStall ( - UINT32 HowLong) -{ - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_ENTRY (); - - - if (HowLong > 255) /* 255 microseconds */ - { - /* - * Longer than 255 usec, this is an error - * - * (ACPI specifies 100 usec as max, but this gives some slack in - * order to support existing BIOSs) - */ - ACPI_ERROR ((AE_INFO, "Time parameter is too large (%d)", - HowLong)); - Status = AE_AML_OPERAND_VALUE; - } - else - { - AcpiOsStall (HowLong); - } - - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExSystemDoSuspend - * - * PARAMETERS: HowLong - The amount of time to suspend, - * in milliseconds - * - * RETURN: None - * - * DESCRIPTION: Suspend running thread for specified amount of time. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExSystemDoSuspend ( - ACPI_INTEGER HowLong) -{ - ACPI_FUNCTION_ENTRY (); - - - /* Since this thread will sleep, we must release the interpreter */ - - AcpiExRelinquishInterpreter (); - - AcpiOsSleep (HowLong); - - /* And now we must get the interpreter again */ - - AcpiExReacquireInterpreter (); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExSystemSignalEvent - * - * PARAMETERS: ObjDesc - The object descriptor for this op - * - * RETURN: Status - * - * DESCRIPTION: Provides an access point to perform synchronization operations - * within the AML. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExSystemSignalEvent ( - ACPI_OPERAND_OBJECT *ObjDesc) -{ - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE (ExSystemSignalEvent); - - - if (ObjDesc) - { - Status = AcpiOsSignalSemaphore (ObjDesc->Event.OsSemaphore, 1); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExSystemWaitEvent - * - * PARAMETERS: TimeDesc - The 'time to delay' object descriptor - * ObjDesc - The object descriptor for this op - * - * RETURN: Status - * - * DESCRIPTION: Provides an access point to perform synchronization operations - * within the AML. This operation is a request to wait for an - * event. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExSystemWaitEvent ( - ACPI_OPERAND_OBJECT *TimeDesc, - ACPI_OPERAND_OBJECT *ObjDesc) -{ - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE (ExSystemWaitEvent); - - - if (ObjDesc) - { - Status = AcpiExSystemWaitSemaphore (ObjDesc->Event.OsSemaphore, - (UINT16) TimeDesc->Integer.Value); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExSystemResetEvent - * - * PARAMETERS: ObjDesc - The object descriptor for this op - * - * RETURN: Status - * - * DESCRIPTION: Reset an event to a known state. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiExSystemResetEvent ( - ACPI_OPERAND_OBJECT *ObjDesc) -{ - ACPI_STATUS Status = AE_OK; - ACPI_SEMAPHORE TempSemaphore; - - - ACPI_FUNCTION_ENTRY (); - - - /* - * We are going to simply delete the existing semaphore and - * create a new one! - */ - Status = AcpiOsCreateSemaphore (ACPI_NO_UNIT_LIMIT, 0, &TempSemaphore); - if (ACPI_SUCCESS (Status)) - { - (void) AcpiOsDeleteSemaphore (ObjDesc->Event.OsSemaphore); - ObjDesc->Event.OsSemaphore = TempSemaphore; - } - - return (Status); -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exutils.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exutils.c deleted file mode 100644 index 7b15fb1431..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/executer/exutils.c +++ /dev/null @@ -1,557 +0,0 @@ - -/****************************************************************************** - * - * Module Name: exutils - interpreter/scanner utilities - * $Revision: 1.125 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __EXUTILS_C__ - -/* - * DEFINE_AML_GLOBALS is tested in amlcode.h - * to determine whether certain global names should be "defined" or only - * "declared" in the current compilation. This enhances maintainability - * by enabling a single header file to embody all knowledge of the names - * in question. - * - * Exactly one module of any executable should #define DEFINE_GLOBALS - * before #including the header files which use this convention. The - * names in question will be defined and initialized in that module, - * and declared as extern in all other modules which #include those - * header files. - */ - -#define DEFINE_AML_GLOBALS - -#include "acpi.h" -#include "acinterp.h" -#include "amlcode.h" -#include "acevents.h" - -#define _COMPONENT ACPI_EXECUTER - ACPI_MODULE_NAME ("exutils") - -/* Local prototypes */ - -static UINT32 -AcpiExDigitsNeeded ( - ACPI_INTEGER Value, - UINT32 Base); - - -#ifndef ACPI_NO_METHOD_EXECUTION -/******************************************************************************* - * - * FUNCTION: AcpiExEnterInterpreter - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Enter the interpreter execution region. Failure to enter - * the interpreter region is a fatal system error. Used in - * conjunction with ExitInterpreter. - * - ******************************************************************************/ - -void -AcpiExEnterInterpreter ( - void) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (ExEnterInterpreter); - - - Status = AcpiUtAcquireMutex (ACPI_MTX_INTERPRETER); - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR ((AE_INFO, "Could not acquire AML Interpreter mutex")); - } - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExReacquireInterpreter - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Reacquire the interpreter execution region from within the - * interpreter code. Failure to enter the interpreter region is a - * fatal system error. Used in conjuction with - * RelinquishInterpreter - * - ******************************************************************************/ - -void -AcpiExReacquireInterpreter ( - void) -{ - ACPI_FUNCTION_TRACE (ExReacquireInterpreter); - - - /* - * If the global serialized flag is set, do not release the interpreter, - * since it was not actually released by AcpiExRelinquishInterpreter. - * This forces the interpreter to be single threaded. - */ - if (!AcpiGbl_AllMethodsSerialized) - { - AcpiExEnterInterpreter (); - } - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExExitInterpreter - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Exit the interpreter execution region. This is the top level - * routine used to exit the interpreter when all processing has - * been completed. - * - ******************************************************************************/ - -void -AcpiExExitInterpreter ( - void) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (ExExitInterpreter); - - - Status = AcpiUtReleaseMutex (ACPI_MTX_INTERPRETER); - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR ((AE_INFO, "Could not release AML Interpreter mutex")); - } - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExRelinquishInterpreter - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Exit the interpreter execution region, from within the - * interpreter - before attempting an operation that will possibly - * block the running thread. - * - * Cases where the interpreter is unlocked internally - * 1) Method to be blocked on a Sleep() AML opcode - * 2) Method to be blocked on an Acquire() AML opcode - * 3) Method to be blocked on a Wait() AML opcode - * 4) Method to be blocked to acquire the global lock - * 5) Method to be blocked waiting to execute a serialized control method - * that is currently executing - * 6) About to invoke a user-installed opregion handler - * - ******************************************************************************/ - -void -AcpiExRelinquishInterpreter ( - void) -{ - ACPI_FUNCTION_TRACE (ExRelinquishInterpreter); - - - /* - * If the global serialized flag is set, do not release the interpreter. - * This forces the interpreter to be single threaded. - */ - if (!AcpiGbl_AllMethodsSerialized) - { - AcpiExExitInterpreter (); - } - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExTruncateFor32bitTable - * - * PARAMETERS: ObjDesc - Object to be truncated - * - * RETURN: none - * - * DESCRIPTION: Truncate an ACPI Integer to 32 bits if the execution mode is - * 32-bit, as determined by the revision of the DSDT. - * - ******************************************************************************/ - -void -AcpiExTruncateFor32bitTable ( - ACPI_OPERAND_OBJECT *ObjDesc) -{ - - ACPI_FUNCTION_ENTRY (); - - - /* - * Object must be a valid number and we must be executing - * a control method - */ - if ((!ObjDesc) || - (ACPI_GET_OBJECT_TYPE (ObjDesc) != ACPI_TYPE_INTEGER)) - { - return; - } - - if (AcpiGbl_IntegerByteWidth == 4) - { - /* - * We are running a method that exists in a 32-bit ACPI table. - * Truncate the value to 32 bits by zeroing out the upper 32-bit field - */ - ObjDesc->Integer.Value &= (ACPI_INTEGER) ACPI_UINT32_MAX; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExAcquireGlobalLock - * - * PARAMETERS: FieldFlags - Flags with Lock rule: - * AlwaysLock or NeverLock - * - * RETURN: TRUE/FALSE indicating whether the lock was actually acquired - * - * DESCRIPTION: Obtain the global lock and keep track of this fact via two - * methods. A global variable keeps the state of the lock, and - * the state is returned to the caller. - * - ******************************************************************************/ - -BOOLEAN -AcpiExAcquireGlobalLock ( - UINT32 FieldFlags) -{ - BOOLEAN Locked = FALSE; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (ExAcquireGlobalLock); - - - /* Only attempt lock if the AlwaysLock bit is set */ - - if (FieldFlags & AML_FIELD_LOCK_RULE_MASK) - { - /* We should attempt to get the lock, wait forever */ - - Status = AcpiEvAcquireGlobalLock (ACPI_WAIT_FOREVER); - if (ACPI_SUCCESS (Status)) - { - Locked = TRUE; - } - else - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Could not acquire Global Lock")); - } - } - - return_UINT8 (Locked); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExReleaseGlobalLock - * - * PARAMETERS: LockedByMe - Return value from corresponding call to - * AcquireGlobalLock. - * - * RETURN: None - * - * DESCRIPTION: Release the global lock if it is locked. - * - ******************************************************************************/ - -void -AcpiExReleaseGlobalLock ( - BOOLEAN LockedByMe) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (ExReleaseGlobalLock); - - - /* Only attempt unlock if the caller locked it */ - - if (LockedByMe) - { - /* OK, now release the lock */ - - Status = AcpiEvReleaseGlobalLock (); - if (ACPI_FAILURE (Status)) - { - /* Report the error, but there isn't much else we can do */ - - ACPI_EXCEPTION ((AE_INFO, Status, - "Could not release ACPI Global Lock")); - } - } - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExDigitsNeeded - * - * PARAMETERS: Value - Value to be represented - * Base - Base of representation - * - * RETURN: The number of digits. - * - * DESCRIPTION: Calculate the number of digits needed to represent the Value - * in the given Base (Radix) - * - ******************************************************************************/ - -static UINT32 -AcpiExDigitsNeeded ( - ACPI_INTEGER Value, - UINT32 Base) -{ - UINT32 NumDigits; - ACPI_INTEGER CurrentValue; - - - ACPI_FUNCTION_TRACE (ExDigitsNeeded); - - - /* ACPI_INTEGER is unsigned, so we don't worry about a '-' prefix */ - - if (Value == 0) - { - return_UINT32 (1); - } - - CurrentValue = Value; - NumDigits = 0; - - /* Count the digits in the requested base */ - - while (CurrentValue) - { - (void) AcpiUtShortDivide (CurrentValue, Base, &CurrentValue, NULL); - NumDigits++; - } - - return_UINT32 (NumDigits); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExEisaIdToString - * - * PARAMETERS: NumericId - EISA ID to be converted - * OutString - Where to put the converted string (8 bytes) - * - * RETURN: None - * - * DESCRIPTION: Convert a numeric EISA ID to string representation - * - ******************************************************************************/ - -void -AcpiExEisaIdToString ( - UINT32 NumericId, - char *OutString) -{ - UINT32 EisaId; - - - ACPI_FUNCTION_ENTRY (); - - - /* Swap ID to big-endian to get contiguous bits */ - - EisaId = AcpiUtDwordByteSwap (NumericId); - - OutString[0] = (char) ('@' + (((unsigned long) EisaId >> 26) & 0x1f)); - OutString[1] = (char) ('@' + ((EisaId >> 21) & 0x1f)); - OutString[2] = (char) ('@' + ((EisaId >> 16) & 0x1f)); - OutString[3] = AcpiUtHexToAsciiChar ((ACPI_INTEGER) EisaId, 12); - OutString[4] = AcpiUtHexToAsciiChar ((ACPI_INTEGER) EisaId, 8); - OutString[5] = AcpiUtHexToAsciiChar ((ACPI_INTEGER) EisaId, 4); - OutString[6] = AcpiUtHexToAsciiChar ((ACPI_INTEGER) EisaId, 0); - OutString[7] = 0; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExUnsignedIntegerToString - * - * PARAMETERS: Value - Value to be converted - * OutString - Where to put the converted string (8 bytes) - * - * RETURN: None, string - * - * DESCRIPTION: Convert a number to string representation. Assumes string - * buffer is large enough to hold the string. - * - ******************************************************************************/ - -void -AcpiExUnsignedIntegerToString ( - ACPI_INTEGER Value, - char *OutString) -{ - UINT32 Count; - UINT32 DigitsNeeded; - UINT32 Remainder; - - - ACPI_FUNCTION_ENTRY (); - - - DigitsNeeded = AcpiExDigitsNeeded (Value, 10); - OutString[DigitsNeeded] = 0; - - for (Count = DigitsNeeded; Count > 0; Count--) - { - (void) AcpiUtShortDivide (Value, 10, &Value, &Remainder); - OutString[Count-1] = (char) ('0' + Remainder);\ - } -} - -#endif diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psargs.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psargs.c deleted file mode 100644 index a5aca6460a..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psargs.c +++ /dev/null @@ -1,869 +0,0 @@ -/****************************************************************************** - * - * Module Name: psargs - Parse AML opcode arguments - * $Revision: 1.91 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __PSARGS_C__ - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acdispat.h" - -#define _COMPONENT ACPI_PARSER - ACPI_MODULE_NAME ("psargs") - -/* Local prototypes */ - -static UINT32 -AcpiPsGetNextPackageLength ( - ACPI_PARSE_STATE *ParserState); - -static ACPI_PARSE_OBJECT * -AcpiPsGetNextField ( - ACPI_PARSE_STATE *ParserState); - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetNextPackageLength - * - * PARAMETERS: ParserState - Current parser state object - * - * RETURN: Decoded package length. On completion, the AML pointer points - * past the length byte or bytes. - * - * DESCRIPTION: Decode and return a package length field. - * Note: Largest package length is 28 bits, from ACPI specification - * - ******************************************************************************/ - -static UINT32 -AcpiPsGetNextPackageLength ( - ACPI_PARSE_STATE *ParserState) -{ - UINT8 *Aml = ParserState->Aml; - UINT32 PackageLength = 0; - ACPI_NATIVE_UINT ByteCount; - UINT8 ByteZeroMask = 0x3F; /* Default [0:5] */ - - - ACPI_FUNCTION_TRACE (PsGetNextPackageLength); - - - /* - * Byte 0 bits [6:7] contain the number of additional bytes - * used to encode the package length, either 0,1,2, or 3 - */ - ByteCount = (Aml[0] >> 6); - ParserState->Aml += (ByteCount + 1); - - /* Get bytes 3, 2, 1 as needed */ - - while (ByteCount) - { - /* - * Final bit positions for the package length bytes: - * Byte3->[20:27] - * Byte2->[12:19] - * Byte1->[04:11] - * Byte0->[00:03] - */ - PackageLength |= (Aml[ByteCount] << ((ByteCount << 3) - 4)); - - ByteZeroMask = 0x0F; /* Use bits [0:3] of byte 0 */ - ByteCount--; - } - - /* Byte 0 is a special case, either bits [0:3] or [0:5] are used */ - - PackageLength |= (Aml[0] & ByteZeroMask); - return_UINT32 (PackageLength); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetNextPackageEnd - * - * PARAMETERS: ParserState - Current parser state object - * - * RETURN: Pointer to end-of-package +1 - * - * DESCRIPTION: Get next package length and return a pointer past the end of - * the package. Consumes the package length field - * - ******************************************************************************/ - -UINT8 * -AcpiPsGetNextPackageEnd ( - ACPI_PARSE_STATE *ParserState) -{ - UINT8 *Start = ParserState->Aml; - UINT32 PackageLength; - - - ACPI_FUNCTION_TRACE (PsGetNextPackageEnd); - - - /* Function below updates ParserState->Aml */ - - PackageLength = AcpiPsGetNextPackageLength (ParserState); - - return_PTR (Start + PackageLength); /* end of package */ -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetNextNamestring - * - * PARAMETERS: ParserState - Current parser state object - * - * RETURN: Pointer to the start of the name string (pointer points into - * the AML. - * - * DESCRIPTION: Get next raw namestring within the AML stream. Handles all name - * prefix characters. Set parser state to point past the string. - * (Name is consumed from the AML.) - * - ******************************************************************************/ - -char * -AcpiPsGetNextNamestring ( - ACPI_PARSE_STATE *ParserState) -{ - UINT8 *Start = ParserState->Aml; - UINT8 *End = ParserState->Aml; - - - ACPI_FUNCTION_TRACE (PsGetNextNamestring); - - - /* Point past any namestring prefix characters (backslash or carat) */ - - while (AcpiPsIsPrefixChar (*End)) - { - End++; - } - - /* Decode the path prefix character */ - - switch (*End) - { - case 0: - - /* NullName */ - - if (End == Start) - { - Start = NULL; - } - End++; - break; - - case AML_DUAL_NAME_PREFIX: - - /* Two name segments */ - - End += 1 + (2 * ACPI_NAME_SIZE); - break; - - case AML_MULTI_NAME_PREFIX_OP: - - /* Multiple name segments, 4 chars each, count in next byte */ - - End += 2 + (*(End + 1) * ACPI_NAME_SIZE); - break; - - default: - - /* Single name segment */ - - End += ACPI_NAME_SIZE; - break; - } - - ParserState->Aml = End; - return_PTR ((char *) Start); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetNextNamepath - * - * PARAMETERS: ParserState - Current parser state object - * Arg - Where the namepath will be stored - * ArgCount - If the namepath points to a control method - * the method's argument is returned here. - * PossibleMethodCall - Whether the namepath can possibly be the - * start of a method call - * - * RETURN: Status - * - * DESCRIPTION: Get next name (if method call, return # of required args). - * Names are looked up in the internal namespace to determine - * if the name represents a control method. If a method - * is found, the number of arguments to the method is returned. - * This information is critical for parsing to continue correctly. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiPsGetNextNamepath ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_STATE *ParserState, - ACPI_PARSE_OBJECT *Arg, - BOOLEAN PossibleMethodCall) -{ - char *Path; - ACPI_PARSE_OBJECT *NameOp; - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *MethodDesc; - ACPI_NAMESPACE_NODE *Node; - ACPI_GENERIC_STATE ScopeInfo; - - - ACPI_FUNCTION_TRACE (PsGetNextNamepath); - - - Path = AcpiPsGetNextNamestring (ParserState); - AcpiPsInitOp (Arg, AML_INT_NAMEPATH_OP); - - /* Null path case is allowed, just exit */ - - if (!Path) - { - Arg->Common.Value.Name = Path; - return_ACPI_STATUS (AE_OK); - } - - /* Setup search scope info */ - - ScopeInfo.Scope.Node = NULL; - Node = ParserState->StartNode; - if (Node) - { - ScopeInfo.Scope.Node = Node; - } - - /* - * Lookup the name in the internal namespace. We don't want to add - * anything new to the namespace here, however, so we use MODE_EXECUTE. - * Allow searching of the parent tree, but don't open a new scope - - * we just want to lookup the object (must be mode EXECUTE to perform - * the upsearch) - */ - Status = AcpiNsLookup (&ScopeInfo, Path, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, &Node); - - /* - * If this name is a control method invocation, we must - * setup the method call - */ - if (ACPI_SUCCESS (Status) && - PossibleMethodCall && - (Node->Type == ACPI_TYPE_METHOD)) - { - /* This name is actually a control method invocation */ - - MethodDesc = AcpiNsGetAttachedObject (Node); - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, - "Control Method - %p Desc %p Path=%p\n", Node, MethodDesc, Path)); - - NameOp = AcpiPsAllocOp (AML_INT_NAMEPATH_OP); - if (!NameOp) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Change Arg into a METHOD CALL and attach name to it */ - - AcpiPsInitOp (Arg, AML_INT_METHODCALL_OP); - NameOp->Common.Value.Name = Path; - - /* Point METHODCALL/NAME to the METHOD Node */ - - NameOp->Common.Node = Node; - AcpiPsAppendArg (Arg, NameOp); - - if (!MethodDesc) - { - ACPI_ERROR ((AE_INFO, - "Control Method %p has no attached object", - Node)); - return_ACPI_STATUS (AE_AML_INTERNAL); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, - "Control Method - %p Args %X\n", - Node, MethodDesc->Method.ParamCount)); - - /* Get the number of arguments to expect */ - - WalkState->ArgCount = MethodDesc->Method.ParamCount; - return_ACPI_STATUS (AE_OK); - } - - /* - * Special handling if the name was not found during the lookup - - * some NotFound cases are allowed - */ - if (Status == AE_NOT_FOUND) - { - /* 1) NotFound is ok during load pass 1/2 (allow forward references) */ - - if ((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) != - ACPI_PARSE_EXECUTE) - { - Status = AE_OK; - } - - /* 2) NotFound during a CondRefOf(x) is ok by definition */ - - else if (WalkState->Op->Common.AmlOpcode == AML_COND_REF_OF_OP) - { - Status = AE_OK; - } - - /* - * 3) NotFound while building a Package is ok at this point, we - * may flag as an error later if slack mode is not enabled. - * (Some ASL code depends on allowing this behavior) - */ - else if ((Arg->Common.Parent) && - ((Arg->Common.Parent->Common.AmlOpcode == AML_PACKAGE_OP) || - (Arg->Common.Parent->Common.AmlOpcode == AML_VAR_PACKAGE_OP))) - { - Status = AE_OK; - } - } - - /* Final exception check (may have been changed from code above) */ - - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR_NAMESPACE (Path, Status); - - if ((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == - ACPI_PARSE_EXECUTE) - { - /* Report a control method execution error */ - - Status = AcpiDsMethodError (Status, WalkState); - } - } - - /* Save the namepath */ - - Arg->Common.Value.Name = Path; - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetNextSimpleArg - * - * PARAMETERS: ParserState - Current parser state object - * ArgType - The argument type (AML_*_ARG) - * Arg - Where the argument is returned - * - * RETURN: None - * - * DESCRIPTION: Get the next simple argument (constant, string, or namestring) - * - ******************************************************************************/ - -void -AcpiPsGetNextSimpleArg ( - ACPI_PARSE_STATE *ParserState, - UINT32 ArgType, - ACPI_PARSE_OBJECT *Arg) -{ - UINT32 Length; - UINT16 Opcode; - UINT8 *Aml = ParserState->Aml; - - - ACPI_FUNCTION_TRACE_U32 (PsGetNextSimpleArg, ArgType); - - - switch (ArgType) - { - case ARGP_BYTEDATA: - - /* Get 1 byte from the AML stream */ - - Opcode = AML_BYTE_OP; - Arg->Common.Value.Integer = (ACPI_INTEGER) *Aml; - Length = 1; - break; - - - case ARGP_WORDDATA: - - /* Get 2 bytes from the AML stream */ - - Opcode = AML_WORD_OP; - ACPI_MOVE_16_TO_64 (&Arg->Common.Value.Integer, Aml); - Length = 2; - break; - - - case ARGP_DWORDDATA: - - /* Get 4 bytes from the AML stream */ - - Opcode = AML_DWORD_OP; - ACPI_MOVE_32_TO_64 (&Arg->Common.Value.Integer, Aml); - Length = 4; - break; - - - case ARGP_QWORDDATA: - - /* Get 8 bytes from the AML stream */ - - Opcode = AML_QWORD_OP; - ACPI_MOVE_64_TO_64 (&Arg->Common.Value.Integer, Aml); - Length = 8; - break; - - - case ARGP_CHARLIST: - - /* Get a pointer to the string, point past the string */ - - Opcode = AML_STRING_OP; - Arg->Common.Value.String = ACPI_CAST_PTR (char, Aml); - - /* Find the null terminator */ - - Length = 0; - while (Aml[Length]) - { - Length++; - } - Length++; - break; - - - case ARGP_NAME: - case ARGP_NAMESTRING: - - AcpiPsInitOp (Arg, AML_INT_NAMEPATH_OP); - Arg->Common.Value.Name = AcpiPsGetNextNamestring (ParserState); - return_VOID; - - - default: - - ACPI_ERROR ((AE_INFO, "Invalid ArgType %X", ArgType)); - return_VOID; - } - - AcpiPsInitOp (Arg, Opcode); - ParserState->Aml += Length; - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetNextField - * - * PARAMETERS: ParserState - Current parser state object - * - * RETURN: A newly allocated FIELD op - * - * DESCRIPTION: Get next field (NamedField, ReservedField, or AccessField) - * - ******************************************************************************/ - -static ACPI_PARSE_OBJECT * -AcpiPsGetNextField ( - ACPI_PARSE_STATE *ParserState) -{ - UINT32 AmlOffset = (UINT32) - ACPI_PTR_DIFF (ParserState->Aml, - ParserState->AmlStart); - ACPI_PARSE_OBJECT *Field; - UINT16 Opcode; - UINT32 Name; - - - ACPI_FUNCTION_TRACE (PsGetNextField); - - - /* Determine field type */ - - switch (ACPI_GET8 (ParserState->Aml)) - { - default: - - Opcode = AML_INT_NAMEDFIELD_OP; - break; - - case 0x00: - - Opcode = AML_INT_RESERVEDFIELD_OP; - ParserState->Aml++; - break; - - case 0x01: - - Opcode = AML_INT_ACCESSFIELD_OP; - ParserState->Aml++; - break; - } - - /* Allocate a new field op */ - - Field = AcpiPsAllocOp (Opcode); - if (!Field) - { - return_PTR (NULL); - } - - Field->Common.AmlOffset = AmlOffset; - - /* Decode the field type */ - - switch (Opcode) - { - case AML_INT_NAMEDFIELD_OP: - - /* Get the 4-character name */ - - ACPI_MOVE_32_TO_32 (&Name, ParserState->Aml); - AcpiPsSetName (Field, Name); - ParserState->Aml += ACPI_NAME_SIZE; - - /* Get the length which is encoded as a package length */ - - Field->Common.Value.Size = AcpiPsGetNextPackageLength (ParserState); - break; - - - case AML_INT_RESERVEDFIELD_OP: - - /* Get the length which is encoded as a package length */ - - Field->Common.Value.Size = AcpiPsGetNextPackageLength (ParserState); - break; - - - case AML_INT_ACCESSFIELD_OP: - - /* - * Get AccessType and AccessAttrib and merge into the field Op - * AccessType is first operand, AccessAttribute is second - */ - Field->Common.Value.Integer = (((UINT32) ACPI_GET8 (ParserState->Aml) << 8)); - ParserState->Aml++; - Field->Common.Value.Integer |= ACPI_GET8 (ParserState->Aml); - ParserState->Aml++; - break; - - default: - - /* Opcode was set in previous switch */ - break; - } - - return_PTR (Field); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetNextArg - * - * PARAMETERS: WalkState - Current state - * ParserState - Current parser state object - * ArgType - The argument type (AML_*_ARG) - * ReturnArg - Where the next arg is returned - * - * RETURN: Status, and an op object containing the next argument. - * - * DESCRIPTION: Get next argument (including complex list arguments that require - * pushing the parser stack) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiPsGetNextArg ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_STATE *ParserState, - UINT32 ArgType, - ACPI_PARSE_OBJECT **ReturnArg) -{ - ACPI_PARSE_OBJECT *Arg = NULL; - ACPI_PARSE_OBJECT *Prev = NULL; - ACPI_PARSE_OBJECT *Field; - UINT32 Subop; - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE_PTR (PsGetNextArg, ParserState); - - - switch (ArgType) - { - case ARGP_BYTEDATA: - case ARGP_WORDDATA: - case ARGP_DWORDDATA: - case ARGP_CHARLIST: - case ARGP_NAME: - case ARGP_NAMESTRING: - - /* Constants, strings, and namestrings are all the same size */ - - Arg = AcpiPsAllocOp (AML_BYTE_OP); - if (!Arg) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - AcpiPsGetNextSimpleArg (ParserState, ArgType, Arg); - break; - - - case ARGP_PKGLENGTH: - - /* Package length, nothing returned */ - - ParserState->PkgEnd = AcpiPsGetNextPackageEnd (ParserState); - break; - - - case ARGP_FIELDLIST: - - if (ParserState->Aml < ParserState->PkgEnd) - { - /* Non-empty list */ - - while (ParserState->Aml < ParserState->PkgEnd) - { - Field = AcpiPsGetNextField (ParserState); - if (!Field) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - if (Prev) - { - Prev->Common.Next = Field; - } - else - { - Arg = Field; - } - Prev = Field; - } - - /* Skip to End of byte data */ - - ParserState->Aml = ParserState->PkgEnd; - } - break; - - - case ARGP_BYTELIST: - - if (ParserState->Aml < ParserState->PkgEnd) - { - /* Non-empty list */ - - Arg = AcpiPsAllocOp (AML_INT_BYTELIST_OP); - if (!Arg) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Fill in bytelist data */ - - Arg->Common.Value.Size = (UINT32) - ACPI_PTR_DIFF (ParserState->PkgEnd, ParserState->Aml); - Arg->Named.Data = ParserState->Aml; - - /* Skip to End of byte data */ - - ParserState->Aml = ParserState->PkgEnd; - } - break; - - - case ARGP_TARGET: - case ARGP_SUPERNAME: - case ARGP_SIMPLENAME: - - Subop = AcpiPsPeekOpcode (ParserState); - if (Subop == 0 || - AcpiPsIsLeadingChar (Subop) || - AcpiPsIsPrefixChar (Subop)) - { - /* NullName or NameString */ - - Arg = AcpiPsAllocOp (AML_INT_NAMEPATH_OP); - if (!Arg) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - Status = AcpiPsGetNextNamepath (WalkState, ParserState, Arg, 0); - } - else - { - /* Single complex argument, nothing returned */ - - WalkState->ArgCount = 1; - } - break; - - - case ARGP_DATAOBJ: - case ARGP_TERMARG: - - /* Single complex argument, nothing returned */ - - WalkState->ArgCount = 1; - break; - - - case ARGP_DATAOBJLIST: - case ARGP_TERMLIST: - case ARGP_OBJLIST: - - if (ParserState->Aml < ParserState->PkgEnd) - { - /* Non-empty list of variable arguments, nothing returned */ - - WalkState->ArgCount = ACPI_VAR_ARGS; - } - break; - - - default: - - ACPI_ERROR ((AE_INFO, "Invalid ArgType: %X", ArgType)); - Status = AE_AML_OPERAND_TYPE; - break; - } - - *ReturnArg = Arg; - return_ACPI_STATUS (Status); -} diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psloop.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psloop.c deleted file mode 100644 index 2f27961f86..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psloop.c +++ /dev/null @@ -1,1178 +0,0 @@ -/****************************************************************************** - * - * Module Name: psloop - Main AML parse loop - * $Revision: 1.13 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -/* - * Parse the AML and build an operation tree as most interpreters, (such as - * Perl) do. Parsing is done by hand rather than with a YACC generated parser - * to tightly constrain stack and dynamic memory usage. Parsing is kept - * flexible and the code fairly compact by parsing based on a list of AML - * opcode templates in AmlOpInfo[]. - */ - -#include "acpi.h" -#include "acparser.h" -#include "acdispat.h" -#include "amlcode.h" - -#define _COMPONENT ACPI_PARSER - ACPI_MODULE_NAME ("psloop") - -static UINT32 AcpiGbl_Depth = 0; - - -/* Local prototypes */ - -static ACPI_STATUS -AcpiPsGetAmlOpcode ( - ACPI_WALK_STATE *WalkState); - -static ACPI_STATUS -AcpiPsBuildNamedOp ( - ACPI_WALK_STATE *WalkState, - UINT8 *AmlOpStart, - ACPI_PARSE_OBJECT *UnnamedOp, - ACPI_PARSE_OBJECT **Op); - -static ACPI_STATUS -AcpiPsCreateOp ( - ACPI_WALK_STATE *WalkState, - UINT8 *AmlOpStart, - ACPI_PARSE_OBJECT **NewOp); - -static ACPI_STATUS -AcpiPsGetArguments ( - ACPI_WALK_STATE *WalkState, - UINT8 *AmlOpStart, - ACPI_PARSE_OBJECT *Op); - -static ACPI_STATUS -AcpiPsCompleteOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT **Op, - ACPI_STATUS Status); - -static ACPI_STATUS -AcpiPsCompleteFinalOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - ACPI_STATUS Status); - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetAmlOpcode - * - * PARAMETERS: WalkState - Current state - * - * RETURN: Status - * - * DESCRIPTION: Extract the next AML opcode from the input stream. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiPsGetAmlOpcode ( - ACPI_WALK_STATE *WalkState) -{ - - ACPI_FUNCTION_TRACE_PTR (PsGetAmlOpcode, WalkState); - - - WalkState->AmlOffset = (UINT32) ACPI_PTR_DIFF (WalkState->ParserState.Aml, - WalkState->ParserState.AmlStart); - WalkState->Opcode = AcpiPsPeekOpcode (&(WalkState->ParserState)); - - /* - * First cut to determine what we have found: - * 1) A valid AML opcode - * 2) A name string - * 3) An unknown/invalid opcode - */ - WalkState->OpInfo = AcpiPsGetOpcodeInfo (WalkState->Opcode); - - switch (WalkState->OpInfo->Class) - { - case AML_CLASS_ASCII: - case AML_CLASS_PREFIX: - /* - * Starts with a valid prefix or ASCII char, this is a name - * string. Convert the bare name string to a namepath. - */ - WalkState->Opcode = AML_INT_NAMEPATH_OP; - WalkState->ArgTypes = ARGP_NAMESTRING; - break; - - case AML_CLASS_UNKNOWN: - - /* The opcode is unrecognized. Just skip unknown opcodes */ - - ACPI_ERROR ((AE_INFO, - "Found unknown opcode %X at AML address %p offset %X, ignoring", - WalkState->Opcode, WalkState->ParserState.Aml, WalkState->AmlOffset)); - - ACPI_DUMP_BUFFER (WalkState->ParserState.Aml, 128); - - /* Assume one-byte bad opcode */ - - WalkState->ParserState.Aml++; - return_ACPI_STATUS (AE_CTRL_PARSE_CONTINUE); - - default: - - /* Found opcode info, this is a normal opcode */ - - WalkState->ParserState.Aml += AcpiPsGetOpcodeSize (WalkState->Opcode); - WalkState->ArgTypes = WalkState->OpInfo->ParseArgs; - break; - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsBuildNamedOp - * - * PARAMETERS: WalkState - Current state - * AmlOpStart - Begin of named Op in AML - * UnnamedOp - Early Op (not a named Op) - * Op - Returned Op - * - * RETURN: Status - * - * DESCRIPTION: Parse a named Op - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiPsBuildNamedOp ( - ACPI_WALK_STATE *WalkState, - UINT8 *AmlOpStart, - ACPI_PARSE_OBJECT *UnnamedOp, - ACPI_PARSE_OBJECT **Op) -{ - ACPI_STATUS Status = AE_OK; - ACPI_PARSE_OBJECT *Arg = NULL; - - - ACPI_FUNCTION_TRACE_PTR (PsBuildNamedOp, WalkState); - - - UnnamedOp->Common.Value.Arg = NULL; - UnnamedOp->Common.AmlOpcode = WalkState->Opcode; - - /* - * Get and append arguments until we find the node that contains - * the name (the type ARGP_NAME). - */ - while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) && - (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) != ARGP_NAME)) - { - Status = AcpiPsGetNextArg (WalkState, &(WalkState->ParserState), - GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), &Arg); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - AcpiPsAppendArg (UnnamedOp, Arg); - INCREMENT_ARG_LIST (WalkState->ArgTypes); - } - - /* - * Make sure that we found a NAME and didn't run out of arguments - */ - if (!GET_CURRENT_ARG_TYPE (WalkState->ArgTypes)) - { - return_ACPI_STATUS (AE_AML_NO_OPERAND); - } - - /* We know that this arg is a name, move to next arg */ - - INCREMENT_ARG_LIST (WalkState->ArgTypes); - - /* - * Find the object. This will either insert the object into - * the namespace or simply look it up - */ - WalkState->Op = NULL; - - Status = WalkState->DescendingCallback (WalkState, Op); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, "During name lookup/catalog")); - return_ACPI_STATUS (Status); - } - - if (!*Op) - { - return_ACPI_STATUS (AE_CTRL_PARSE_CONTINUE); - } - - Status = AcpiPsNextParseState (WalkState, *Op, Status); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_CTRL_PENDING) - { - return_ACPI_STATUS (AE_CTRL_PARSE_PENDING); - } - return_ACPI_STATUS (Status); - } - - AcpiPsAppendArg (*Op, UnnamedOp->Common.Value.Arg); - AcpiGbl_Depth++; - - if ((*Op)->Common.AmlOpcode == AML_REGION_OP) - { - /* - * Defer final parsing of an OperationRegion body, because we don't - * have enough info in the first pass to parse it correctly (i.e., - * there may be method calls within the TermArg elements of the body.) - * - * However, we must continue parsing because the opregion is not a - * standalone package -- we don't know where the end is at this point. - * - * (Length is unknown until parse of the body complete) - */ - (*Op)->Named.Data = AmlOpStart; - (*Op)->Named.Length = 0; - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsCreateOp - * - * PARAMETERS: WalkState - Current state - * AmlOpStart - Op start in AML - * NewOp - Returned Op - * - * RETURN: Status - * - * DESCRIPTION: Get Op from AML - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiPsCreateOp ( - ACPI_WALK_STATE *WalkState, - UINT8 *AmlOpStart, - ACPI_PARSE_OBJECT **NewOp) -{ - ACPI_STATUS Status = AE_OK; - ACPI_PARSE_OBJECT *Op; - ACPI_PARSE_OBJECT *NamedOp = NULL; - - - ACPI_FUNCTION_TRACE_PTR (PsCreateOp, WalkState); - - - Status = AcpiPsGetAmlOpcode (WalkState); - if (Status == AE_CTRL_PARSE_CONTINUE) - { - return_ACPI_STATUS (AE_CTRL_PARSE_CONTINUE); - } - - /* Create Op structure and append to parent's argument list */ - - WalkState->OpInfo = AcpiPsGetOpcodeInfo (WalkState->Opcode); - Op = AcpiPsAllocOp (WalkState->Opcode); - if (!Op) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - if (WalkState->OpInfo->Flags & AML_NAMED) - { - Status = AcpiPsBuildNamedOp (WalkState, AmlOpStart, Op, &NamedOp); - AcpiPsFreeOp (Op); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - *NewOp = NamedOp; - return_ACPI_STATUS (AE_OK); - } - - /* Not a named opcode, just allocate Op and append to parent */ - - if (WalkState->OpInfo->Flags & AML_CREATE) - { - /* - * Backup to beginning of CreateXXXfield declaration - * BodyLength is unknown until we parse the body - */ - Op->Named.Data = AmlOpStart; - Op->Named.Length = 0; - } - - AcpiPsAppendArg (AcpiPsGetParentScope (&(WalkState->ParserState)), Op); - - if (WalkState->DescendingCallback != NULL) - { - /* - * Find the object. This will either insert the object into - * the namespace or simply look it up - */ - WalkState->Op = *NewOp = Op; - - Status = WalkState->DescendingCallback (WalkState, &Op); - Status = AcpiPsNextParseState (WalkState, Op, Status); - if (Status == AE_CTRL_PENDING) - { - Status = AE_CTRL_PARSE_PENDING; - } - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetArguments - * - * PARAMETERS: WalkState - Current state - * AmlOpStart - Op start in AML - * Op - Current Op - * - * RETURN: Status - * - * DESCRIPTION: Get arguments for passed Op. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiPsGetArguments ( - ACPI_WALK_STATE *WalkState, - UINT8 *AmlOpStart, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_STATUS Status = AE_OK; - ACPI_PARSE_OBJECT *Arg = NULL; - - - ACPI_FUNCTION_TRACE_PTR (PsGetArguments, WalkState); - - - switch (Op->Common.AmlOpcode) - { - case AML_BYTE_OP: /* AML_BYTEDATA_ARG */ - case AML_WORD_OP: /* AML_WORDDATA_ARG */ - case AML_DWORD_OP: /* AML_DWORDATA_ARG */ - case AML_QWORD_OP: /* AML_QWORDATA_ARG */ - case AML_STRING_OP: /* AML_ASCIICHARLIST_ARG */ - - /* Fill in constant or string argument directly */ - - AcpiPsGetNextSimpleArg (&(WalkState->ParserState), - GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), Op); - break; - - case AML_INT_NAMEPATH_OP: /* AML_NAMESTRING_ARG */ - - Status = AcpiPsGetNextNamepath (WalkState, &(WalkState->ParserState), Op, 1); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - WalkState->ArgTypes = 0; - break; - - default: - /* - * Op is not a constant or string, append each argument to the Op - */ - while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) && !WalkState->ArgCount) - { - WalkState->AmlOffset = (UINT32) ACPI_PTR_DIFF (WalkState->ParserState.Aml, - WalkState->ParserState.AmlStart); - - Status = AcpiPsGetNextArg (WalkState, &(WalkState->ParserState), - GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), &Arg); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - if (Arg) - { - Arg->Common.AmlOffset = WalkState->AmlOffset; - AcpiPsAppendArg (Op, Arg); - } - - INCREMENT_ARG_LIST (WalkState->ArgTypes); - } - - - /* Special processing for certain opcodes */ - - /* TBD (remove): Temporary mechanism to disable this code if needed */ - -#ifdef ACPI_ENABLE_MODULE_LEVEL_CODE - - if ((WalkState->PassNumber <= ACPI_IMODE_LOAD_PASS1) && - ((WalkState->ParseFlags & ACPI_PARSE_DISASSEMBLE) == 0)) - { - /* - * We want to skip If/Else/While constructs during Pass1 because we - * want to actually conditionally execute the code during Pass2. - * - * Except for disassembly, where we always want to walk the - * If/Else/While packages - */ - switch (Op->Common.AmlOpcode) - { - case AML_IF_OP: - case AML_ELSE_OP: - case AML_WHILE_OP: - - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, - "Pass1: Skipping an If/Else/While body\n")); - - /* Skip body of if/else/while in pass 1 */ - - WalkState->ParserState.Aml = WalkState->ParserState.PkgEnd; - WalkState->ArgCount = 0; - break; - - default: - break; - } - } -#endif - - switch (Op->Common.AmlOpcode) - { - case AML_METHOD_OP: - /* - * Skip parsing of control method because we don't have enough - * info in the first pass to parse it correctly. - * - * Save the length and address of the body - */ - Op->Named.Data = WalkState->ParserState.Aml; - Op->Named.Length = (UINT32) - (WalkState->ParserState.PkgEnd - WalkState->ParserState.Aml); - - /* Skip body of method */ - - WalkState->ParserState.Aml = WalkState->ParserState.PkgEnd; - WalkState->ArgCount = 0; - break; - - case AML_BUFFER_OP: - case AML_PACKAGE_OP: - case AML_VAR_PACKAGE_OP: - - if ((Op->Common.Parent) && - (Op->Common.Parent->Common.AmlOpcode == AML_NAME_OP) && - (WalkState->PassNumber <= ACPI_IMODE_LOAD_PASS2)) - { - /* - * Skip parsing of Buffers and Packages because we don't have - * enough info in the first pass to parse them correctly. - */ - Op->Named.Data = AmlOpStart; - Op->Named.Length = (UINT32) - (WalkState->ParserState.PkgEnd - AmlOpStart); - - /* Skip body */ - - WalkState->ParserState.Aml = WalkState->ParserState.PkgEnd; - WalkState->ArgCount = 0; - } - break; - - case AML_WHILE_OP: - - if (WalkState->ControlState) - { - WalkState->ControlState->Control.PackageEnd = - WalkState->ParserState.PkgEnd; - } - break; - - default: - - /* No action for all other opcodes */ - break; - } - - break; - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsCompleteOp - * - * PARAMETERS: WalkState - Current state - * Op - Returned Op - * Status - Parse status before complete Op - * - * RETURN: Status - * - * DESCRIPTION: Complete Op - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiPsCompleteOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT **Op, - ACPI_STATUS Status) -{ - ACPI_STATUS Status2; - - - ACPI_FUNCTION_TRACE_PTR (PsCompleteOp, WalkState); - - - /* - * Finished one argument of the containing scope - */ - WalkState->ParserState.Scope->ParseScope.ArgCount--; - - /* Close this Op (will result in parse subtree deletion) */ - - Status2 = AcpiPsCompleteThisOp (WalkState, *Op); - if (ACPI_FAILURE (Status2)) - { - return_ACPI_STATUS (Status2); - } - - *Op = NULL; - - switch (Status) - { - case AE_OK: - break; - - - case AE_CTRL_TRANSFER: - - /* We are about to transfer to a called method */ - - WalkState->PrevOp = NULL; - WalkState->PrevArgTypes = WalkState->ArgTypes; - return_ACPI_STATUS (Status); - - - case AE_CTRL_END: - - AcpiPsPopScope (&(WalkState->ParserState), Op, - &WalkState->ArgTypes, &WalkState->ArgCount); - - if (*Op) - { - WalkState->Op = *Op; - WalkState->OpInfo = AcpiPsGetOpcodeInfo ((*Op)->Common.AmlOpcode); - WalkState->Opcode = (*Op)->Common.AmlOpcode; - - Status = WalkState->AscendingCallback (WalkState); - Status = AcpiPsNextParseState (WalkState, *Op, Status); - - Status2 = AcpiPsCompleteThisOp (WalkState, *Op); - if (ACPI_FAILURE (Status2)) - { - return_ACPI_STATUS (Status2); - } - } - - Status = AE_OK; - break; - - - case AE_CTRL_BREAK: - case AE_CTRL_CONTINUE: - - /* Pop off scopes until we find the While */ - - while (!(*Op) || ((*Op)->Common.AmlOpcode != AML_WHILE_OP)) - { - AcpiPsPopScope (&(WalkState->ParserState), Op, - &WalkState->ArgTypes, &WalkState->ArgCount); - - if ((*Op)->Common.AmlOpcode != AML_WHILE_OP) - { - Status2 = AcpiDsResultStackPop (WalkState); - if (ACPI_FAILURE (Status2)) - { - return_ACPI_STATUS (Status2); - } - } - } - - /* Close this iteration of the While loop */ - - WalkState->Op = *Op; - WalkState->OpInfo = AcpiPsGetOpcodeInfo ((*Op)->Common.AmlOpcode); - WalkState->Opcode = (*Op)->Common.AmlOpcode; - - Status = WalkState->AscendingCallback (WalkState); - Status = AcpiPsNextParseState (WalkState, *Op, Status); - - Status2 = AcpiPsCompleteThisOp (WalkState, *Op); - if (ACPI_FAILURE (Status2)) - { - return_ACPI_STATUS (Status2); - } - - Status = AE_OK; - break; - - - case AE_CTRL_TERMINATE: - - /* Clean up */ - do - { - if (*Op) - { - Status2 = AcpiPsCompleteThisOp (WalkState, *Op); - if (ACPI_FAILURE (Status2)) - { - return_ACPI_STATUS (Status2); - } - Status2 = AcpiDsResultStackPop (WalkState); - if (ACPI_FAILURE (Status2)) - { - return_ACPI_STATUS (Status2); - } - - AcpiUtDeleteGenericState ( - AcpiUtPopGenericState (&WalkState->ControlState)); - } - - AcpiPsPopScope (&(WalkState->ParserState), Op, - &WalkState->ArgTypes, &WalkState->ArgCount); - - } while (*Op); - - return_ACPI_STATUS (AE_OK); - - - default: /* All other non-AE_OK status */ - - do - { - if (*Op) - { - Status2 = AcpiPsCompleteThisOp (WalkState, *Op); - if (ACPI_FAILURE (Status2)) - { - return_ACPI_STATUS (Status2); - } - } - - AcpiPsPopScope (&(WalkState->ParserState), Op, - &WalkState->ArgTypes, &WalkState->ArgCount); - - } while (*Op); - - -#if 0 - /* - * TBD: Cleanup parse ops on error - */ - if (*Op == NULL) - { - AcpiPsPopScope (ParserState, Op, - &WalkState->ArgTypes, &WalkState->ArgCount); - } -#endif - WalkState->PrevOp = NULL; - WalkState->PrevArgTypes = WalkState->ArgTypes; - return_ACPI_STATUS (Status); - } - - /* This scope complete? */ - - if (AcpiPsHasCompletedScope (&(WalkState->ParserState))) - { - AcpiPsPopScope (&(WalkState->ParserState), Op, - &WalkState->ArgTypes, &WalkState->ArgCount); - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Popped scope, Op=%p\n", *Op)); - } - else - { - *Op = NULL; - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsCompleteFinalOp - * - * PARAMETERS: WalkState - Current state - * Op - Current Op - * Status - Current parse status before complete last - * Op - * - * RETURN: Status - * - * DESCRIPTION: Complete last Op. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiPsCompleteFinalOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - ACPI_STATUS Status) -{ - ACPI_STATUS Status2; - - - ACPI_FUNCTION_TRACE_PTR (PsCompleteFinalOp, WalkState); - - - /* - * Complete the last Op (if not completed), and clear the scope stack. - * It is easily possible to end an AML "package" with an unbounded number - * of open scopes (such as when several ASL blocks are closed with - * sequential closing braces). We want to terminate each one cleanly. - */ - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "AML package complete at Op %p\n", Op)); - do - { - if (Op) - { - if (WalkState->AscendingCallback != NULL) - { - WalkState->Op = Op; - WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - WalkState->Opcode = Op->Common.AmlOpcode; - - Status = WalkState->AscendingCallback (WalkState); - Status = AcpiPsNextParseState (WalkState, Op, Status); - if (Status == AE_CTRL_PENDING) - { - Status = AcpiPsCompleteOp (WalkState, &Op, AE_OK); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - if (Status == AE_CTRL_TERMINATE) - { - Status = AE_OK; - - /* Clean up */ - do - { - if (Op) - { - Status2 = AcpiPsCompleteThisOp (WalkState, Op); - if (ACPI_FAILURE (Status2)) - { - return_ACPI_STATUS (Status2); - } - } - - AcpiPsPopScope (&(WalkState->ParserState), &Op, - &WalkState->ArgTypes, &WalkState->ArgCount); - - } while (Op); - - return_ACPI_STATUS (Status); - } - - else if (ACPI_FAILURE (Status)) - { - /* First error is most important */ - - (void) AcpiPsCompleteThisOp (WalkState, Op); - return_ACPI_STATUS (Status); - } - } - - Status2 = AcpiPsCompleteThisOp (WalkState, Op); - if (ACPI_FAILURE (Status2)) - { - return_ACPI_STATUS (Status2); - } - } - - AcpiPsPopScope (&(WalkState->ParserState), &Op, &WalkState->ArgTypes, - &WalkState->ArgCount); - - } while (Op); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsParseLoop - * - * PARAMETERS: WalkState - Current state - * - * RETURN: Status - * - * DESCRIPTION: Parse AML (pointed to by the current parser state) and return - * a tree of ops. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiPsParseLoop ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - ACPI_PARSE_OBJECT *Op = NULL; /* current op */ - ACPI_PARSE_STATE *ParserState; - UINT8 *AmlOpStart = NULL; - - - ACPI_FUNCTION_TRACE_PTR (PsParseLoop, WalkState); - - - if (WalkState->DescendingCallback == NULL) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - ParserState = &WalkState->ParserState; - WalkState->ArgTypes = 0; - -#if (!defined (ACPI_NO_METHOD_EXECUTION) && !defined (ACPI_CONSTANT_EVAL_ONLY)) - - if (WalkState->WalkType & ACPI_WALK_METHOD_RESTART) - { - /* We are restarting a preempted control method */ - - if (AcpiPsHasCompletedScope (ParserState)) - { - /* - * We must check if a predicate to an IF or WHILE statement - * was just completed - */ - if ((ParserState->Scope->ParseScope.Op) && - ((ParserState->Scope->ParseScope.Op->Common.AmlOpcode == AML_IF_OP) || - (ParserState->Scope->ParseScope.Op->Common.AmlOpcode == AML_WHILE_OP)) && - (WalkState->ControlState) && - (WalkState->ControlState->Common.State == - ACPI_CONTROL_PREDICATE_EXECUTING)) - { - /* - * A predicate was just completed, get the value of the - * predicate and branch based on that value - */ - WalkState->Op = NULL; - Status = AcpiDsGetPredicateValue (WalkState, ACPI_TO_POINTER (TRUE)); - if (ACPI_FAILURE (Status) && - ((Status & AE_CODE_MASK) != AE_CODE_CONTROL)) - { - if (Status == AE_AML_NO_RETURN_VALUE) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Invoked method did not return a value")); - - } - - ACPI_EXCEPTION ((AE_INFO, Status, "GetPredicate Failed")); - return_ACPI_STATUS (Status); - } - - Status = AcpiPsNextParseState (WalkState, Op, Status); - } - - AcpiPsPopScope (ParserState, &Op, - &WalkState->ArgTypes, &WalkState->ArgCount); - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Popped scope, Op=%p\n", Op)); - } - else if (WalkState->PrevOp) - { - /* We were in the middle of an op */ - - Op = WalkState->PrevOp; - WalkState->ArgTypes = WalkState->PrevArgTypes; - } - } -#endif - - /* Iterative parsing loop, while there is more AML to process: */ - - while ((ParserState->Aml < ParserState->AmlEnd) || (Op)) - { - AmlOpStart = ParserState->Aml; - if (!Op) - { - Status = AcpiPsCreateOp (WalkState, AmlOpStart, &Op); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_CTRL_PARSE_CONTINUE) - { - continue; - } - - if (Status == AE_CTRL_PARSE_PENDING) - { - Status = AE_OK; - } - - Status = AcpiPsCompleteOp (WalkState, &Op, Status); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - continue; - } - - Op->Common.AmlOffset = WalkState->AmlOffset; - - if (WalkState->OpInfo) - { - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, - "Opcode %4.4X [%s] Op %p Aml %p AmlOffset %5.5X\n", - (UINT32) Op->Common.AmlOpcode, WalkState->OpInfo->Name, - Op, ParserState->Aml, Op->Common.AmlOffset)); - } - } - - - /* - * Start ArgCount at zero because we don't know if there are - * any args yet - */ - WalkState->ArgCount = 0; - - /* Are there any arguments that must be processed? */ - - if (WalkState->ArgTypes) - { - /* Get arguments */ - - Status = AcpiPsGetArguments (WalkState, AmlOpStart, Op); - if (ACPI_FAILURE (Status)) - { - Status = AcpiPsCompleteOp (WalkState, &Op, Status); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - continue; - } - } - - /* Check for arguments that need to be processed */ - - if (WalkState->ArgCount) - { - /* - * There are arguments (complex ones), push Op and - * prepare for argument - */ - Status = AcpiPsPushScope (ParserState, Op, - WalkState->ArgTypes, WalkState->ArgCount); - if (ACPI_FAILURE (Status)) - { - Status = AcpiPsCompleteOp (WalkState, &Op, Status); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - continue; - } - - Op = NULL; - continue; - } - - /* - * All arguments have been processed -- Op is complete, - * prepare for next - */ - WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - if (WalkState->OpInfo->Flags & AML_NAMED) - { - if (AcpiGbl_Depth) - { - AcpiGbl_Depth--; - } - - if (Op->Common.AmlOpcode == AML_REGION_OP) - { - /* - * Skip parsing of control method or opregion body, - * because we don't have enough info in the first pass - * to parse them correctly. - * - * Completed parsing an OpRegion declaration, we now - * know the length. - */ - Op->Named.Length = (UINT32) (ParserState->Aml - Op->Named.Data); - } - } - - if (WalkState->OpInfo->Flags & AML_CREATE) - { - /* - * Backup to beginning of CreateXXXfield declaration (1 for - * Opcode) - * - * BodyLength is unknown until we parse the body - */ - Op->Named.Length = (UINT32) (ParserState->Aml - Op->Named.Data); - } - - /* This op complete, notify the dispatcher */ - - if (WalkState->AscendingCallback != NULL) - { - WalkState->Op = Op; - WalkState->Opcode = Op->Common.AmlOpcode; - - Status = WalkState->AscendingCallback (WalkState); - Status = AcpiPsNextParseState (WalkState, Op, Status); - if (Status == AE_CTRL_PENDING) - { - Status = AE_OK; - } - } - - Status = AcpiPsCompleteOp (WalkState, &Op, Status); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - } /* while ParserState->Aml */ - - Status = AcpiPsCompleteFinalOp (WalkState, Op, Status); - return_ACPI_STATUS (Status); -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psopcode.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psopcode.c deleted file mode 100644 index 833073f612..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psopcode.c +++ /dev/null @@ -1,561 +0,0 @@ -/****************************************************************************** - * - * Module Name: psopcode - Parser/Interpreter opcode information table - * $Revision: 1.97 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acparser.h" -#include "acopcode.h" -#include "amlcode.h" - - -#define _COMPONENT ACPI_PARSER - ACPI_MODULE_NAME ("psopcode") - - -/******************************************************************************* - * - * NAME: AcpiGbl_AmlOpInfo - * - * DESCRIPTION: Opcode table. Each entry contains - * The name is a simple ascii string, the operand specifier is an - * ascii string with one letter per operand. The letter specifies - * the operand type. - * - ******************************************************************************/ - -/* - * Summary of opcode types/flags - * - - Opcodes that have associated namespace objects (AML_NSOBJECT flag) - - AML_SCOPE_OP - AML_DEVICE_OP - AML_THERMAL_ZONE_OP - AML_METHOD_OP - AML_POWER_RES_OP - AML_PROCESSOR_OP - AML_FIELD_OP - AML_INDEX_FIELD_OP - AML_BANK_FIELD_OP - AML_NAME_OP - AML_ALIAS_OP - AML_MUTEX_OP - AML_EVENT_OP - AML_REGION_OP - AML_CREATE_FIELD_OP - AML_CREATE_BIT_FIELD_OP - AML_CREATE_BYTE_FIELD_OP - AML_CREATE_WORD_FIELD_OP - AML_CREATE_DWORD_FIELD_OP - AML_CREATE_QWORD_FIELD_OP - AML_INT_NAMEDFIELD_OP - AML_INT_METHODCALL_OP - AML_INT_NAMEPATH_OP - - Opcodes that are "namespace" opcodes (AML_NSOPCODE flag) - - AML_SCOPE_OP - AML_DEVICE_OP - AML_THERMAL_ZONE_OP - AML_METHOD_OP - AML_POWER_RES_OP - AML_PROCESSOR_OP - AML_FIELD_OP - AML_INDEX_FIELD_OP - AML_BANK_FIELD_OP - AML_NAME_OP - AML_ALIAS_OP - AML_MUTEX_OP - AML_EVENT_OP - AML_REGION_OP - AML_INT_NAMEDFIELD_OP - - Opcodes that have an associated namespace node (AML_NSNODE flag) - - AML_SCOPE_OP - AML_DEVICE_OP - AML_THERMAL_ZONE_OP - AML_METHOD_OP - AML_POWER_RES_OP - AML_PROCESSOR_OP - AML_NAME_OP - AML_ALIAS_OP - AML_MUTEX_OP - AML_EVENT_OP - AML_REGION_OP - AML_CREATE_FIELD_OP - AML_CREATE_BIT_FIELD_OP - AML_CREATE_BYTE_FIELD_OP - AML_CREATE_WORD_FIELD_OP - AML_CREATE_DWORD_FIELD_OP - AML_CREATE_QWORD_FIELD_OP - AML_INT_NAMEDFIELD_OP - AML_INT_METHODCALL_OP - AML_INT_NAMEPATH_OP - - Opcodes that define named ACPI objects (AML_NAMED flag) - - AML_SCOPE_OP - AML_DEVICE_OP - AML_THERMAL_ZONE_OP - AML_METHOD_OP - AML_POWER_RES_OP - AML_PROCESSOR_OP - AML_NAME_OP - AML_ALIAS_OP - AML_MUTEX_OP - AML_EVENT_OP - AML_REGION_OP - AML_INT_NAMEDFIELD_OP - - Opcodes that contain executable AML as part of the definition that - must be deferred until needed - - AML_METHOD_OP - AML_VAR_PACKAGE_OP - AML_CREATE_FIELD_OP - AML_CREATE_BIT_FIELD_OP - AML_CREATE_BYTE_FIELD_OP - AML_CREATE_WORD_FIELD_OP - AML_CREATE_DWORD_FIELD_OP - AML_CREATE_QWORD_FIELD_OP - AML_REGION_OP - AML_BUFFER_OP - - Field opcodes - - AML_CREATE_FIELD_OP - AML_FIELD_OP - AML_INDEX_FIELD_OP - AML_BANK_FIELD_OP - - Field "Create" opcodes - - AML_CREATE_FIELD_OP - AML_CREATE_BIT_FIELD_OP - AML_CREATE_BYTE_FIELD_OP - AML_CREATE_WORD_FIELD_OP - AML_CREATE_DWORD_FIELD_OP - AML_CREATE_QWORD_FIELD_OP - - ******************************************************************************/ - - -/* - * Master Opcode information table. A summary of everything we know about each - * opcode, all in one place. - */ -const ACPI_OPCODE_INFO AcpiGbl_AmlOpInfo[AML_NUM_OPCODES] = -{ -/*! [Begin] no source code translation */ -/* Index Name Parser Args Interpreter Args ObjectType Class Type Flags */ - -/* 00 */ ACPI_OP ("Zero", ARGP_ZERO_OP, ARGI_ZERO_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, AML_CONSTANT), -/* 01 */ ACPI_OP ("One", ARGP_ONE_OP, ARGI_ONE_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, AML_CONSTANT), -/* 02 */ ACPI_OP ("Alias", ARGP_ALIAS_OP, ARGI_ALIAS_OP, ACPI_TYPE_LOCAL_ALIAS, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED), -/* 03 */ ACPI_OP ("Name", ARGP_NAME_OP, ARGI_NAME_OP, ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_COMPLEX, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED), -/* 04 */ ACPI_OP ("ByteConst", ARGP_BYTE_OP, ARGI_BYTE_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT), -/* 05 */ ACPI_OP ("WordConst", ARGP_WORD_OP, ARGI_WORD_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT), -/* 06 */ ACPI_OP ("DwordConst", ARGP_DWORD_OP, ARGI_DWORD_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT), -/* 07 */ ACPI_OP ("String", ARGP_STRING_OP, ARGI_STRING_OP, ACPI_TYPE_STRING, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT), -/* 08 */ ACPI_OP ("Scope", ARGP_SCOPE_OP, ARGI_SCOPE_OP, ACPI_TYPE_LOCAL_SCOPE, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED), -/* 09 */ ACPI_OP ("Buffer", ARGP_BUFFER_OP, ARGI_BUFFER_OP, ACPI_TYPE_BUFFER, AML_CLASS_CREATE, AML_TYPE_CREATE_OBJECT, AML_HAS_ARGS | AML_DEFER | AML_CONSTANT), -/* 0A */ ACPI_OP ("Package", ARGP_PACKAGE_OP, ARGI_PACKAGE_OP, ACPI_TYPE_PACKAGE, AML_CLASS_CREATE, AML_TYPE_CREATE_OBJECT, AML_HAS_ARGS | AML_DEFER | AML_CONSTANT), -/* 0B */ ACPI_OP ("Method", ARGP_METHOD_OP, ARGI_METHOD_OP, ACPI_TYPE_METHOD, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_COMPLEX, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED | AML_DEFER), -/* 0C */ ACPI_OP ("Local0", ARGP_LOCAL0, ARGI_LOCAL0, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0), -/* 0D */ ACPI_OP ("Local1", ARGP_LOCAL1, ARGI_LOCAL1, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0), -/* 0E */ ACPI_OP ("Local2", ARGP_LOCAL2, ARGI_LOCAL2, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0), -/* 0F */ ACPI_OP ("Local3", ARGP_LOCAL3, ARGI_LOCAL3, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0), -/* 10 */ ACPI_OP ("Local4", ARGP_LOCAL4, ARGI_LOCAL4, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0), -/* 11 */ ACPI_OP ("Local5", ARGP_LOCAL5, ARGI_LOCAL5, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0), -/* 12 */ ACPI_OP ("Local6", ARGP_LOCAL6, ARGI_LOCAL6, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0), -/* 13 */ ACPI_OP ("Local7", ARGP_LOCAL7, ARGI_LOCAL7, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0), -/* 14 */ ACPI_OP ("Arg0", ARGP_ARG0, ARGI_ARG0, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0), -/* 15 */ ACPI_OP ("Arg1", ARGP_ARG1, ARGI_ARG1, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0), -/* 16 */ ACPI_OP ("Arg2", ARGP_ARG2, ARGI_ARG2, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0), -/* 17 */ ACPI_OP ("Arg3", ARGP_ARG3, ARGI_ARG3, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0), -/* 18 */ ACPI_OP ("Arg4", ARGP_ARG4, ARGI_ARG4, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0), -/* 19 */ ACPI_OP ("Arg5", ARGP_ARG5, ARGI_ARG5, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0), -/* 1A */ ACPI_OP ("Arg6", ARGP_ARG6, ARGI_ARG6, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0), -/* 1B */ ACPI_OP ("Store", ARGP_STORE_OP, ARGI_STORE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R), -/* 1C */ ACPI_OP ("RefOf", ARGP_REF_OF_OP, ARGI_REF_OF_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R), -/* 1D */ ACPI_OP ("Add", ARGP_ADD_OP, ARGI_ADD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT), -/* 1E */ ACPI_OP ("Concatenate", ARGP_CONCAT_OP, ARGI_CONCAT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT), -/* 1F */ ACPI_OP ("Subtract", ARGP_SUBTRACT_OP, ARGI_SUBTRACT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT), -/* 20 */ ACPI_OP ("Increment", ARGP_INCREMENT_OP, ARGI_INCREMENT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_CONSTANT), -/* 21 */ ACPI_OP ("Decrement", ARGP_DECREMENT_OP, ARGI_DECREMENT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_CONSTANT), -/* 22 */ ACPI_OP ("Multiply", ARGP_MULTIPLY_OP, ARGI_MULTIPLY_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT), -/* 23 */ ACPI_OP ("Divide", ARGP_DIVIDE_OP, ARGI_DIVIDE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_2T_1R, AML_FLAGS_EXEC_2A_2T_1R | AML_CONSTANT), -/* 24 */ ACPI_OP ("ShiftLeft", ARGP_SHIFT_LEFT_OP, ARGI_SHIFT_LEFT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT), -/* 25 */ ACPI_OP ("ShiftRight", ARGP_SHIFT_RIGHT_OP, ARGI_SHIFT_RIGHT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT), -/* 26 */ ACPI_OP ("And", ARGP_BIT_AND_OP, ARGI_BIT_AND_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT), -/* 27 */ ACPI_OP ("NAnd", ARGP_BIT_NAND_OP, ARGI_BIT_NAND_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT), -/* 28 */ ACPI_OP ("Or", ARGP_BIT_OR_OP, ARGI_BIT_OR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT), -/* 29 */ ACPI_OP ("NOr", ARGP_BIT_NOR_OP, ARGI_BIT_NOR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT), -/* 2A */ ACPI_OP ("XOr", ARGP_BIT_XOR_OP, ARGI_BIT_XOR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT), -/* 2B */ ACPI_OP ("Not", ARGP_BIT_NOT_OP, ARGI_BIT_NOT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT), -/* 2C */ ACPI_OP ("FindSetLeftBit", ARGP_FIND_SET_LEFT_BIT_OP, ARGI_FIND_SET_LEFT_BIT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT), -/* 2D */ ACPI_OP ("FindSetRightBit", ARGP_FIND_SET_RIGHT_BIT_OP,ARGI_FIND_SET_RIGHT_BIT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT), -/* 2E */ ACPI_OP ("DerefOf", ARGP_DEREF_OF_OP, ARGI_DEREF_OF_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R), -/* 2F */ ACPI_OP ("Notify", ARGP_NOTIFY_OP, ARGI_NOTIFY_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_0R, AML_FLAGS_EXEC_2A_0T_0R), -/* 30 */ ACPI_OP ("SizeOf", ARGP_SIZE_OF_OP, ARGI_SIZE_OF_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_NO_OPERAND_RESOLVE), -/* 31 */ ACPI_OP ("Index", ARGP_INDEX_OP, ARGI_INDEX_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R), -/* 32 */ ACPI_OP ("Match", ARGP_MATCH_OP, ARGI_MATCH_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_6A_0T_1R, AML_FLAGS_EXEC_6A_0T_1R | AML_CONSTANT), -/* 33 */ ACPI_OP ("CreateDWordField", ARGP_CREATE_DWORD_FIELD_OP,ARGI_CREATE_DWORD_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE), -/* 34 */ ACPI_OP ("CreateWordField", ARGP_CREATE_WORD_FIELD_OP, ARGI_CREATE_WORD_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE), -/* 35 */ ACPI_OP ("CreateByteField", ARGP_CREATE_BYTE_FIELD_OP, ARGI_CREATE_BYTE_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE), -/* 36 */ ACPI_OP ("CreateBitField", ARGP_CREATE_BIT_FIELD_OP, ARGI_CREATE_BIT_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE), -/* 37 */ ACPI_OP ("ObjectType", ARGP_TYPE_OP, ARGI_TYPE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_NO_OPERAND_RESOLVE), -/* 38 */ ACPI_OP ("LAnd", ARGP_LAND_OP, ARGI_LAND_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL_NUMERIC | AML_CONSTANT), -/* 39 */ ACPI_OP ("LOr", ARGP_LOR_OP, ARGI_LOR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL_NUMERIC | AML_CONSTANT), -/* 3A */ ACPI_OP ("LNot", ARGP_LNOT_OP, ARGI_LNOT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_CONSTANT), -/* 3B */ ACPI_OP ("LEqual", ARGP_LEQUAL_OP, ARGI_LEQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT), -/* 3C */ ACPI_OP ("LGreater", ARGP_LGREATER_OP, ARGI_LGREATER_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT), -/* 3D */ ACPI_OP ("LLess", ARGP_LLESS_OP, ARGI_LLESS_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT), -/* 3E */ ACPI_OP ("If", ARGP_IF_OP, ARGI_IF_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS), -/* 3F */ ACPI_OP ("Else", ARGP_ELSE_OP, ARGI_ELSE_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS), -/* 40 */ ACPI_OP ("While", ARGP_WHILE_OP, ARGI_WHILE_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS), -/* 41 */ ACPI_OP ("Noop", ARGP_NOOP_OP, ARGI_NOOP_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0), -/* 42 */ ACPI_OP ("Return", ARGP_RETURN_OP, ARGI_RETURN_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS), -/* 43 */ ACPI_OP ("Break", ARGP_BREAK_OP, ARGI_BREAK_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0), -/* 44 */ ACPI_OP ("BreakPoint", ARGP_BREAK_POINT_OP, ARGI_BREAK_POINT_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0), -/* 45 */ ACPI_OP ("Ones", ARGP_ONES_OP, ARGI_ONES_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, AML_CONSTANT), - -/* Prefixed opcodes (Two-byte opcodes with a prefix op) */ - -/* 46 */ ACPI_OP ("Mutex", ARGP_MUTEX_OP, ARGI_MUTEX_OP, ACPI_TYPE_MUTEX, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED), -/* 47 */ ACPI_OP ("Event", ARGP_EVENT_OP, ARGI_EVENT_OP, ACPI_TYPE_EVENT, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED ), -/* 48 */ ACPI_OP ("CondRefOf", ARGP_COND_REF_OF_OP, ARGI_COND_REF_OF_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R), -/* 49 */ ACPI_OP ("CreateField", ARGP_CREATE_FIELD_OP, ARGI_CREATE_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_FIELD | AML_CREATE), -/* 4A */ ACPI_OP ("Load", ARGP_LOAD_OP, ARGI_LOAD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_0R, AML_FLAGS_EXEC_1A_1T_0R), -/* 4B */ ACPI_OP ("Stall", ARGP_STALL_OP, ARGI_STALL_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R), -/* 4C */ ACPI_OP ("Sleep", ARGP_SLEEP_OP, ARGI_SLEEP_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R), -/* 4D */ ACPI_OP ("Acquire", ARGP_ACQUIRE_OP, ARGI_ACQUIRE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R), -/* 4E */ ACPI_OP ("Signal", ARGP_SIGNAL_OP, ARGI_SIGNAL_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R), -/* 4F */ ACPI_OP ("Wait", ARGP_WAIT_OP, ARGI_WAIT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R), -/* 50 */ ACPI_OP ("Reset", ARGP_RESET_OP, ARGI_RESET_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R), -/* 51 */ ACPI_OP ("Release", ARGP_RELEASE_OP, ARGI_RELEASE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R), -/* 52 */ ACPI_OP ("FromBCD", ARGP_FROM_BCD_OP, ARGI_FROM_BCD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT), -/* 53 */ ACPI_OP ("ToBCD", ARGP_TO_BCD_OP, ARGI_TO_BCD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT), -/* 54 */ ACPI_OP ("Unload", ARGP_UNLOAD_OP, ARGI_UNLOAD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R), -/* 55 */ ACPI_OP ("Revision", ARGP_REVISION_OP, ARGI_REVISION_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, 0), -/* 56 */ ACPI_OP ("Debug", ARGP_DEBUG_OP, ARGI_DEBUG_OP, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, 0), -/* 57 */ ACPI_OP ("Fatal", ARGP_FATAL_OP, ARGI_FATAL_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_3A_0T_0R, AML_FLAGS_EXEC_3A_0T_0R), -/* 58 */ ACPI_OP ("OperationRegion", ARGP_REGION_OP, ARGI_REGION_OP, ACPI_TYPE_REGION, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_COMPLEX, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED | AML_DEFER), -/* 59 */ ACPI_OP ("Field", ARGP_FIELD_OP, ARGI_FIELD_OP, ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_FIELD), -/* 5A */ ACPI_OP ("Device", ARGP_DEVICE_OP, ARGI_DEVICE_OP, ACPI_TYPE_DEVICE, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED), -/* 5B */ ACPI_OP ("Processor", ARGP_PROCESSOR_OP, ARGI_PROCESSOR_OP, ACPI_TYPE_PROCESSOR, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED), -/* 5C */ ACPI_OP ("PowerResource", ARGP_POWER_RES_OP, ARGI_POWER_RES_OP, ACPI_TYPE_POWER, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED), -/* 5D */ ACPI_OP ("ThermalZone", ARGP_THERMAL_ZONE_OP, ARGI_THERMAL_ZONE_OP, ACPI_TYPE_THERMAL, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED), -/* 5E */ ACPI_OP ("IndexField", ARGP_INDEX_FIELD_OP, ARGI_INDEX_FIELD_OP, ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_FIELD), -/* 5F */ ACPI_OP ("BankField", ARGP_BANK_FIELD_OP, ARGI_BANK_FIELD_OP, ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_FIELD), - -/* Internal opcodes that map to invalid AML opcodes */ - -/* 60 */ ACPI_OP ("LNotEqual", ARGP_LNOTEQUAL_OP, ARGI_LNOTEQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT), -/* 61 */ ACPI_OP ("LLessEqual", ARGP_LLESSEQUAL_OP, ARGI_LLESSEQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT), -/* 62 */ ACPI_OP ("LGreaterEqual", ARGP_LGREATEREQUAL_OP, ARGI_LGREATEREQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT), -/* 63 */ ACPI_OP ("-NamePath-", ARGP_NAMEPATH_OP, ARGI_NAMEPATH_OP, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_NSOBJECT | AML_NSNODE ), -/* 64 */ ACPI_OP ("-MethodCall-", ARGP_METHODCALL_OP, ARGI_METHODCALL_OP, ACPI_TYPE_METHOD, AML_CLASS_METHOD_CALL, AML_TYPE_METHOD_CALL, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE), -/* 65 */ ACPI_OP ("-ByteList-", ARGP_BYTELIST_OP, ARGI_BYTELIST_OP, ACPI_TYPE_ANY, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, 0), -/* 66 */ ACPI_OP ("-ReservedField-", ARGP_RESERVEDFIELD_OP, ARGI_RESERVEDFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0), -/* 67 */ ACPI_OP ("-NamedField-", ARGP_NAMEDFIELD_OP, ARGI_NAMEDFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED ), -/* 68 */ ACPI_OP ("-AccessField-", ARGP_ACCESSFIELD_OP, ARGI_ACCESSFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0), -/* 69 */ ACPI_OP ("-StaticString", ARGP_STATICSTRING_OP, ARGI_STATICSTRING_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0), -/* 6A */ ACPI_OP ("-Return Value-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY, AML_CLASS_RETURN_VALUE, AML_TYPE_RETURN, AML_HAS_ARGS | AML_HAS_RETVAL), -/* 6B */ ACPI_OP ("-UNKNOWN_OP-", ARG_NONE, ARG_NONE, ACPI_TYPE_INVALID, AML_CLASS_UNKNOWN, AML_TYPE_BOGUS, AML_HAS_ARGS), -/* 6C */ ACPI_OP ("-ASCII_ONLY-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY, AML_CLASS_ASCII, AML_TYPE_BOGUS, AML_HAS_ARGS), -/* 6D */ ACPI_OP ("-PREFIX_ONLY-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY, AML_CLASS_PREFIX, AML_TYPE_BOGUS, AML_HAS_ARGS), - -/* ACPI 2.0 opcodes */ - -/* 6E */ ACPI_OP ("QwordConst", ARGP_QWORD_OP, ARGI_QWORD_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT), -/* 6F */ ACPI_OP ("Package", /* Var */ ARGP_VAR_PACKAGE_OP, ARGI_VAR_PACKAGE_OP, ACPI_TYPE_PACKAGE, AML_CLASS_CREATE, AML_TYPE_CREATE_OBJECT, AML_HAS_ARGS | AML_DEFER), -/* 70 */ ACPI_OP ("ConcatenateResTemplate", ARGP_CONCAT_RES_OP, ARGI_CONCAT_RES_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT), -/* 71 */ ACPI_OP ("Mod", ARGP_MOD_OP, ARGI_MOD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT), -/* 72 */ ACPI_OP ("CreateQWordField", ARGP_CREATE_QWORD_FIELD_OP,ARGI_CREATE_QWORD_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE), -/* 73 */ ACPI_OP ("ToBuffer", ARGP_TO_BUFFER_OP, ARGI_TO_BUFFER_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT), -/* 74 */ ACPI_OP ("ToDecimalString", ARGP_TO_DEC_STR_OP, ARGI_TO_DEC_STR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT), -/* 75 */ ACPI_OP ("ToHexString", ARGP_TO_HEX_STR_OP, ARGI_TO_HEX_STR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT), -/* 76 */ ACPI_OP ("ToInteger", ARGP_TO_INTEGER_OP, ARGI_TO_INTEGER_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT), -/* 77 */ ACPI_OP ("ToString", ARGP_TO_STRING_OP, ARGI_TO_STRING_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT), -/* 78 */ ACPI_OP ("CopyObject", ARGP_COPY_OP, ARGI_COPY_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R), -/* 79 */ ACPI_OP ("Mid", ARGP_MID_OP, ARGI_MID_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_3A_1T_1R, AML_FLAGS_EXEC_3A_1T_1R | AML_CONSTANT), -/* 7A */ ACPI_OP ("Continue", ARGP_CONTINUE_OP, ARGI_CONTINUE_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0), -/* 7B */ ACPI_OP ("LoadTable", ARGP_LOAD_TABLE_OP, ARGI_LOAD_TABLE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_6A_0T_1R, AML_FLAGS_EXEC_6A_0T_1R), -/* 7C */ ACPI_OP ("DataTableRegion", ARGP_DATA_REGION_OP, ARGI_DATA_REGION_OP, ACPI_TYPE_REGION, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED), -/* 7D */ ACPI_OP ("[EvalSubTree]", ARGP_SCOPE_OP, ARGI_SCOPE_OP, ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE), - -/* ACPI 3.0 opcodes */ - -/* 7E */ ACPI_OP ("Timer", ARGP_TIMER_OP, ARGI_TIMER_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_0A_0T_1R, AML_FLAGS_EXEC_0A_0T_1R) - -/*! [End] no source code translation !*/ -}; - -/* - * This table is directly indexed by the opcodes, and returns an - * index into the table above - */ -static const UINT8 AcpiGbl_ShortOpIndex[256] = -{ -/* 0 1 2 3 4 5 6 7 */ -/* 8 9 A B C D E F */ -/* 0x00 */ 0x00, 0x01, _UNK, _UNK, _UNK, _UNK, 0x02, _UNK, -/* 0x08 */ 0x03, _UNK, 0x04, 0x05, 0x06, 0x07, 0x6E, _UNK, -/* 0x10 */ 0x08, 0x09, 0x0a, 0x6F, 0x0b, _UNK, _UNK, _UNK, -/* 0x18 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x20 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x28 */ _UNK, _UNK, _UNK, _UNK, _UNK, 0x63, _PFX, _PFX, -/* 0x30 */ 0x67, 0x66, 0x68, 0x65, 0x69, 0x64, 0x6A, 0x7D, -/* 0x38 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x40 */ _UNK, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, -/* 0x48 */ _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, -/* 0x50 */ _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, -/* 0x58 */ _ASC, _ASC, _ASC, _UNK, _PFX, _UNK, _PFX, _ASC, -/* 0x60 */ 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, -/* 0x68 */ 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, _UNK, -/* 0x70 */ 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, -/* 0x78 */ 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, -/* 0x80 */ 0x2b, 0x2c, 0x2d, 0x2e, 0x70, 0x71, 0x2f, 0x30, -/* 0x88 */ 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x72, -/* 0x90 */ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x73, 0x74, -/* 0x98 */ 0x75, 0x76, _UNK, _UNK, 0x77, 0x78, 0x79, 0x7A, -/* 0xA0 */ 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x60, 0x61, -/* 0xA8 */ 0x62, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0xB0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0xB8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0xC0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0xC8 */ _UNK, _UNK, _UNK, _UNK, 0x44, _UNK, _UNK, _UNK, -/* 0xD0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0xD8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0xE0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0xE8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0xF0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0xF8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, 0x45, -}; - -/* - * This table is indexed by the second opcode of the extended opcode - * pair. It returns an index into the opcode table (AcpiGbl_AmlOpInfo) - */ -static const UINT8 AcpiGbl_LongOpIndex[NUM_EXTENDED_OPCODE] = -{ -/* 0 1 2 3 4 5 6 7 */ -/* 8 9 A B C D E F */ -/* 0x00 */ _UNK, 0x46, 0x47, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x08 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x10 */ _UNK, _UNK, 0x48, 0x49, _UNK, _UNK, _UNK, _UNK, -/* 0x18 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, 0x7B, -/* 0x20 */ 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, -/* 0x28 */ 0x52, 0x53, 0x54, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x30 */ 0x55, 0x56, 0x57, 0x7e, _UNK, _UNK, _UNK, _UNK, -/* 0x38 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x40 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x48 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x50 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x58 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x60 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x68 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x70 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x78 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, -/* 0x80 */ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, -/* 0x88 */ 0x7C, -}; - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetOpcodeInfo - * - * PARAMETERS: Opcode - The AML opcode - * - * RETURN: A pointer to the info about the opcode. - * - * DESCRIPTION: Find AML opcode description based on the opcode. - * NOTE: This procedure must ALWAYS return a valid pointer! - * - ******************************************************************************/ - -const ACPI_OPCODE_INFO * -AcpiPsGetOpcodeInfo ( - UINT16 Opcode) -{ - ACPI_FUNCTION_NAME (PsGetOpcodeInfo); - - - /* - * Detect normal 8-bit opcode or extended 16-bit opcode - */ - if (!(Opcode & 0xFF00)) - { - /* Simple (8-bit) opcode: 0-255, can't index beyond table */ - - return (&AcpiGbl_AmlOpInfo [AcpiGbl_ShortOpIndex [(UINT8) Opcode]]); - } - - if (((Opcode & 0xFF00) == AML_EXTENDED_OPCODE) && - (((UINT8) Opcode) <= MAX_EXTENDED_OPCODE)) - { - /* Valid extended (16-bit) opcode */ - - return (&AcpiGbl_AmlOpInfo [AcpiGbl_LongOpIndex [(UINT8) Opcode]]); - } - - /* Unknown AML opcode */ - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Unknown AML opcode [%4.4X]\n", Opcode)); - - return (&AcpiGbl_AmlOpInfo [_UNK]); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetOpcodeName - * - * PARAMETERS: Opcode - The AML opcode - * - * RETURN: A pointer to the name of the opcode (ASCII String) - * Note: Never returns NULL. - * - * DESCRIPTION: Translate an opcode into a human-readable string - * - ******************************************************************************/ - -char * -AcpiPsGetOpcodeName ( - UINT16 Opcode) -{ -#if defined(ACPI_DISASSEMBLER) || defined (ACPI_DEBUG_OUTPUT) - - const ACPI_OPCODE_INFO *Op; - - - Op = AcpiPsGetOpcodeInfo (Opcode); - - /* Always guaranteed to return a valid pointer */ - - return (Op->Name); - -#else - return ("OpcodeName unavailable"); - -#endif -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psparse.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psparse.c deleted file mode 100644 index 7da4aa90a2..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psparse.c +++ /dev/null @@ -1,777 +0,0 @@ -/****************************************************************************** - * - * Module Name: psparse - Parser top level AML parse routines - * $Revision: 1.169 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -/* - * Parse the AML and build an operation tree as most interpreters, - * like Perl, do. Parsing is done by hand rather than with a YACC - * generated parser to tightly constrain stack and dynamic memory - * usage. At the same time, parsing is kept flexible and the code - * fairly compact by parsing based on a list of AML opcode - * templates in AmlOpInfo[] - */ - -#include "acpi.h" -#include "acparser.h" -#include "acdispat.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acinterp.h" - -#define _COMPONENT ACPI_PARSER - ACPI_MODULE_NAME ("psparse") - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetOpcodeSize - * - * PARAMETERS: Opcode - An AML opcode - * - * RETURN: Size of the opcode, in bytes (1 or 2) - * - * DESCRIPTION: Get the size of the current opcode. - * - ******************************************************************************/ - -UINT32 -AcpiPsGetOpcodeSize ( - UINT32 Opcode) -{ - - /* Extended (2-byte) opcode if > 255 */ - - if (Opcode > 0x00FF) - { - return (2); - } - - /* Otherwise, just a single byte opcode */ - - return (1); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsPeekOpcode - * - * PARAMETERS: ParserState - A parser state object - * - * RETURN: Next AML opcode - * - * DESCRIPTION: Get next AML opcode (without incrementing AML pointer) - * - ******************************************************************************/ - -UINT16 -AcpiPsPeekOpcode ( - ACPI_PARSE_STATE *ParserState) -{ - UINT8 *Aml; - UINT16 Opcode; - - - Aml = ParserState->Aml; - Opcode = (UINT16) ACPI_GET8 (Aml); - - if (Opcode == AML_EXTENDED_OP_PREFIX) - { - /* Extended opcode, get the second opcode byte */ - - Aml++; - Opcode = (UINT16) ((Opcode << 8) | ACPI_GET8 (Aml)); - } - - return (Opcode); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsCompleteThisOp - * - * PARAMETERS: WalkState - Current State - * Op - Op to complete - * - * RETURN: Status - * - * DESCRIPTION: Perform any cleanup at the completion of an Op. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiPsCompleteThisOp ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Prev; - ACPI_PARSE_OBJECT *Next; - const ACPI_OPCODE_INFO *ParentInfo; - ACPI_PARSE_OBJECT *ReplacementOp = NULL; - - - ACPI_FUNCTION_TRACE_PTR (PsCompleteThisOp, Op); - - - /* Check for null Op, can happen if AML code is corrupt */ - - if (!Op) - { - return_ACPI_STATUS (AE_OK); /* OK for now */ - } - - /* Delete this op and the subtree below it if asked to */ - - if (((WalkState->ParseFlags & ACPI_PARSE_TREE_MASK) != ACPI_PARSE_DELETE_TREE) || - (WalkState->OpInfo->Class == AML_CLASS_ARGUMENT)) - { - return_ACPI_STATUS (AE_OK); - } - - /* Make sure that we only delete this subtree */ - - if (Op->Common.Parent) - { - Prev = Op->Common.Parent->Common.Value.Arg; - if (!Prev) - { - /* Nothing more to do */ - - goto Cleanup; - } - - /* - * Check if we need to replace the operator and its subtree - * with a return value op (placeholder op) - */ - ParentInfo = AcpiPsGetOpcodeInfo (Op->Common.Parent->Common.AmlOpcode); - - switch (ParentInfo->Class) - { - case AML_CLASS_CONTROL: - break; - - case AML_CLASS_CREATE: - - /* - * These opcodes contain TermArg operands. The current - * op must be replaced by a placeholder return op - */ - ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP); - if (!ReplacementOp) - { - goto AllocateError; - } - break; - - case AML_CLASS_NAMED_OBJECT: - - /* - * These opcodes contain TermArg operands. The current - * op must be replaced by a placeholder return op - */ - if ((Op->Common.Parent->Common.AmlOpcode == AML_REGION_OP) || - (Op->Common.Parent->Common.AmlOpcode == AML_DATA_REGION_OP) || - (Op->Common.Parent->Common.AmlOpcode == AML_BUFFER_OP) || - (Op->Common.Parent->Common.AmlOpcode == AML_PACKAGE_OP) || - (Op->Common.Parent->Common.AmlOpcode == AML_VAR_PACKAGE_OP)) - { - ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP); - if (!ReplacementOp) - { - goto AllocateError; - } - } - else if ((Op->Common.Parent->Common.AmlOpcode == AML_NAME_OP) && - (WalkState->PassNumber <= ACPI_IMODE_LOAD_PASS2)) - { - if ((Op->Common.AmlOpcode == AML_BUFFER_OP) || - (Op->Common.AmlOpcode == AML_PACKAGE_OP) || - (Op->Common.AmlOpcode == AML_VAR_PACKAGE_OP)) - { - ReplacementOp = AcpiPsAllocOp (Op->Common.AmlOpcode); - if (!ReplacementOp) - { - goto AllocateError; - } - - ReplacementOp->Named.Data = Op->Named.Data; - ReplacementOp->Named.Length = Op->Named.Length; - } - } - break; - - default: - - ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP); - if (!ReplacementOp) - { - goto AllocateError; - } - } - - /* We must unlink this op from the parent tree */ - - if (Prev == Op) - { - /* This op is the first in the list */ - - if (ReplacementOp) - { - ReplacementOp->Common.Parent = Op->Common.Parent; - ReplacementOp->Common.Value.Arg = NULL; - ReplacementOp->Common.Node = Op->Common.Node; - Op->Common.Parent->Common.Value.Arg = ReplacementOp; - ReplacementOp->Common.Next = Op->Common.Next; - } - else - { - Op->Common.Parent->Common.Value.Arg = Op->Common.Next; - } - } - - /* Search the parent list */ - - else while (Prev) - { - /* Traverse all siblings in the parent's argument list */ - - Next = Prev->Common.Next; - if (Next == Op) - { - if (ReplacementOp) - { - ReplacementOp->Common.Parent = Op->Common.Parent; - ReplacementOp->Common.Value.Arg = NULL; - ReplacementOp->Common.Node = Op->Common.Node; - Prev->Common.Next = ReplacementOp; - ReplacementOp->Common.Next = Op->Common.Next; - Next = NULL; - } - else - { - Prev->Common.Next = Op->Common.Next; - Next = NULL; - } - } - Prev = Next; - } - } - - -Cleanup: - - /* Now we can actually delete the subtree rooted at Op */ - - AcpiPsDeleteParseTree (Op); - return_ACPI_STATUS (AE_OK); - - -AllocateError: - - /* Always delete the subtree, even on error */ - - AcpiPsDeleteParseTree (Op); - return_ACPI_STATUS (AE_NO_MEMORY); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsNextParseState - * - * PARAMETERS: WalkState - Current state - * Op - Current parse op - * CallbackStatus - Status from previous operation - * - * RETURN: Status - * - * DESCRIPTION: Update the parser state based upon the return exception from - * the parser callback. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiPsNextParseState ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op, - ACPI_STATUS CallbackStatus) -{ - ACPI_PARSE_STATE *ParserState = &WalkState->ParserState; - ACPI_STATUS Status = AE_CTRL_PENDING; - - - ACPI_FUNCTION_TRACE_PTR (PsNextParseState, Op); - - - switch (CallbackStatus) - { - case AE_CTRL_TERMINATE: - /* - * A control method was terminated via a RETURN statement. - * The walk of this method is complete. - */ - ParserState->Aml = ParserState->AmlEnd; - Status = AE_CTRL_TERMINATE; - break; - - - case AE_CTRL_BREAK: - - ParserState->Aml = WalkState->AmlLastWhile; - WalkState->ControlState->Common.Value = FALSE; - Status = AcpiDsResultStackPop (WalkState); - if (ACPI_SUCCESS (Status)) - { - Status = AE_CTRL_BREAK; - } - break; - - - case AE_CTRL_CONTINUE: - - ParserState->Aml = WalkState->AmlLastWhile; - Status = AcpiDsResultStackPop (WalkState); - if (ACPI_SUCCESS (Status)) - { - Status = AE_CTRL_CONTINUE; - } - break; - - - case AE_CTRL_PENDING: - - ParserState->Aml = WalkState->AmlLastWhile; - break; - -#if 0 - case AE_CTRL_SKIP: - - ParserState->Aml = ParserState->Scope->ParseScope.PkgEnd; - Status = AE_OK; - break; -#endif - - case AE_CTRL_TRUE: - /* - * Predicate of an IF was true, and we are at the matching ELSE. - * Just close out this package - */ - ParserState->Aml = AcpiPsGetNextPackageEnd (ParserState); - Status = AcpiDsResultStackPop (WalkState); - if (ACPI_SUCCESS (Status)) - { - Status = AE_CTRL_PENDING; - } - break; - - - case AE_CTRL_FALSE: - /* - * Either an IF/WHILE Predicate was false or we encountered a BREAK - * opcode. In both cases, we do not execute the rest of the - * package; We simply close out the parent (finishing the walk of - * this branch of the tree) and continue execution at the parent - * level. - */ - ParserState->Aml = ParserState->Scope->ParseScope.PkgEnd; - - /* In the case of a BREAK, just force a predicate (if any) to FALSE */ - - WalkState->ControlState->Common.Value = FALSE; - Status = AE_CTRL_END; - break; - - - case AE_CTRL_TRANSFER: - - /* A method call (invocation) -- transfer control */ - - Status = AE_CTRL_TRANSFER; - WalkState->PrevOp = Op; - WalkState->MethodCallOp = Op; - WalkState->MethodCallNode = (Op->Common.Value.Arg)->Common.Node; - - /* Will return value (if any) be used by the caller? */ - - WalkState->ReturnUsed = AcpiDsIsResultUsed (Op, WalkState); - break; - - - default: - - Status = CallbackStatus; - if ((CallbackStatus & AE_CODE_MASK) == AE_CODE_CONTROL) - { - Status = AE_OK; - } - break; - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsParseAml - * - * PARAMETERS: WalkState - Current state - * - * - * RETURN: Status - * - * DESCRIPTION: Parse raw AML and return a tree of ops - * - ******************************************************************************/ - -ACPI_STATUS -AcpiPsParseAml ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_THREAD_STATE *Thread; - ACPI_THREAD_STATE *PrevWalkList = AcpiGbl_CurrentWalkList; - ACPI_WALK_STATE *PreviousWalkState; - - - ACPI_FUNCTION_TRACE (PsParseAml); - - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, - "Entered with WalkState=%p Aml=%p size=%X\n", - WalkState, WalkState->ParserState.Aml, - WalkState->ParserState.AmlSize)); - - - /* Create and initialize a new thread state */ - - Thread = AcpiUtCreateThreadState (); - if (!Thread) - { - AcpiDsDeleteWalkState (WalkState); - return_ACPI_STATUS (AE_NO_MEMORY); - } - - WalkState->Thread = Thread; - - /* - * If executing a method, the starting SyncLevel is this method's - * SyncLevel - */ - if (WalkState->MethodDesc) - { - WalkState->Thread->CurrentSyncLevel = WalkState->MethodDesc->Method.SyncLevel; - } - - AcpiDsPushWalkState (WalkState, Thread); - - /* - * This global allows the AML debugger to get a handle to the currently - * executing control method. - */ - AcpiGbl_CurrentWalkList = Thread; - - /* - * Execute the walk loop as long as there is a valid Walk State. This - * handles nested control method invocations without recursion. - */ - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "State=%p\n", WalkState)); - - Status = AE_OK; - while (WalkState) - { - if (ACPI_SUCCESS (Status)) - { - /* - * The ParseLoop executes AML until the method terminates - * or calls another method. - */ - Status = AcpiPsParseLoop (WalkState); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, - "Completed one call to walk loop, %s State=%p\n", - AcpiFormatException (Status), WalkState)); - - if (Status == AE_CTRL_TRANSFER) - { - /* - * A method call was detected. - * Transfer control to the called control method - */ - Status = AcpiDsCallControlMethod (Thread, WalkState, NULL); - if (ACPI_FAILURE (Status)) - { - Status = AcpiDsMethodError (Status, WalkState); - } - - /* - * If the transfer to the new method method call worked, a new walk - * state was created -- get it - */ - WalkState = AcpiDsGetCurrentWalkState (Thread); - continue; - } - else if (Status == AE_CTRL_TERMINATE) - { - Status = AE_OK; - } - else if ((Status != AE_OK) && (WalkState->MethodDesc)) - { - /* Either the method parse or actual execution failed */ - - ACPI_ERROR_METHOD ("Method parse/execution failed", - WalkState->MethodNode, NULL, Status); - - /* Check for possible multi-thread reentrancy problem */ - - if ((Status == AE_ALREADY_EXISTS) && - (!WalkState->MethodDesc->Method.Mutex)) - { - ACPI_INFO ((AE_INFO, "Marking method %4.4s as Serialized", - WalkState->MethodNode->Name.Ascii)); - - /* - * Method tried to create an object twice. The probable cause is - * that the method cannot handle reentrancy. - * - * The method is marked NotSerialized, but it tried to create - * a named object, causing the second thread entrance to fail. - * Workaround this problem by marking the method permanently - * as Serialized. - */ - WalkState->MethodDesc->Method.MethodFlags |= AML_METHOD_SERIALIZED; - WalkState->MethodDesc->Method.SyncLevel = 0; - } - } - - /* We are done with this walk, move on to the parent if any */ - - WalkState = AcpiDsPopWalkState (Thread); - - /* Reset the current scope to the beginning of scope stack */ - - AcpiDsScopeStackClear (WalkState); - - /* - * If we just returned from the execution of a control method or if we - * encountered an error during the method parse phase, there's lots of - * cleanup to do - */ - if (((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == ACPI_PARSE_EXECUTE) || - (ACPI_FAILURE (Status))) - { - AcpiDsTerminateControlMethod (WalkState->MethodDesc, WalkState); - } - - /* Delete this walk state and all linked control states */ - - AcpiPsCleanupScope (&WalkState->ParserState); - PreviousWalkState = WalkState; - - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, - "ReturnValue=%p, ImplicitValue=%p State=%p\n", - WalkState->ReturnDesc, WalkState->ImplicitReturnObj, WalkState)); - - /* Check if we have restarted a preempted walk */ - - WalkState = AcpiDsGetCurrentWalkState (Thread); - if (WalkState) - { - if (ACPI_SUCCESS (Status)) - { - /* - * There is another walk state, restart it. - * If the method return value is not used by the parent, - * The object is deleted - */ - if (!PreviousWalkState->ReturnDesc) - { - Status = AcpiDsRestartControlMethod (WalkState, - PreviousWalkState->ImplicitReturnObj); - } - else - { - /* - * We have a valid return value, delete any implicit - * return value. - */ - AcpiDsClearImplicitReturn (PreviousWalkState); - - Status = AcpiDsRestartControlMethod (WalkState, - PreviousWalkState->ReturnDesc); - } - if (ACPI_SUCCESS (Status)) - { - WalkState->WalkType |= ACPI_WALK_METHOD_RESTART; - } - } - else - { - /* On error, delete any return object */ - - AcpiUtRemoveReference (PreviousWalkState->ReturnDesc); - } - } - - /* - * Just completed a 1st-level method, save the final internal return - * value (if any) - */ - else if (PreviousWalkState->CallerReturnDesc) - { - if (PreviousWalkState->ImplicitReturnObj) - { - *(PreviousWalkState->CallerReturnDesc) = - PreviousWalkState->ImplicitReturnObj; - } - else - { - /* NULL if no return value */ - - *(PreviousWalkState->CallerReturnDesc) = - PreviousWalkState->ReturnDesc; - } - } - else - { - if (PreviousWalkState->ReturnDesc) - { - /* Caller doesn't want it, must delete it */ - - AcpiUtRemoveReference (PreviousWalkState->ReturnDesc); - } - if (PreviousWalkState->ImplicitReturnObj) - { - /* Caller doesn't want it, must delete it */ - - AcpiUtRemoveReference (PreviousWalkState->ImplicitReturnObj); - } - } - - AcpiDsDeleteWalkState (PreviousWalkState); - } - - /* Normal exit */ - - AcpiExReleaseAllMutexes (Thread); - AcpiUtDeleteGenericState (ACPI_CAST_PTR (ACPI_GENERIC_STATE, Thread)); - AcpiGbl_CurrentWalkList = PrevWalkList; - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psscope.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psscope.c deleted file mode 100644 index aa57aa3bc5..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psscope.c +++ /dev/null @@ -1,374 +0,0 @@ -/****************************************************************************** - * - * Module Name: psscope - Parser scope stack management routines - * $Revision: 1.46 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acparser.h" - -#define _COMPONENT ACPI_PARSER - ACPI_MODULE_NAME ("psscope") - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetParentScope - * - * PARAMETERS: ParserState - Current parser state object - * - * RETURN: Pointer to an Op object - * - * DESCRIPTION: Get parent of current op being parsed - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -AcpiPsGetParentScope ( - ACPI_PARSE_STATE *ParserState) -{ - - return (ParserState->Scope->ParseScope.Op); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsHasCompletedScope - * - * PARAMETERS: ParserState - Current parser state object - * - * RETURN: Boolean, TRUE = scope completed. - * - * DESCRIPTION: Is parsing of current argument complete? Determined by - * 1) AML pointer is at or beyond the end of the scope - * 2) The scope argument count has reached zero. - * - ******************************************************************************/ - -BOOLEAN -AcpiPsHasCompletedScope ( - ACPI_PARSE_STATE *ParserState) -{ - - return ((BOOLEAN) - ((ParserState->Aml >= ParserState->Scope->ParseScope.ArgEnd || - !ParserState->Scope->ParseScope.ArgCount))); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsInitScope - * - * PARAMETERS: ParserState - Current parser state object - * Root - the Root Node of this new scope - * - * RETURN: Status - * - * DESCRIPTION: Allocate and init a new scope object - * - ******************************************************************************/ - -ACPI_STATUS -AcpiPsInitScope ( - ACPI_PARSE_STATE *ParserState, - ACPI_PARSE_OBJECT *RootOp) -{ - ACPI_GENERIC_STATE *Scope; - - - ACPI_FUNCTION_TRACE_PTR (PsInitScope, RootOp); - - - Scope = AcpiUtCreateGenericState (); - if (!Scope) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - Scope->Common.DescriptorType = ACPI_DESC_TYPE_STATE_RPSCOPE; - Scope->ParseScope.Op = RootOp; - Scope->ParseScope.ArgCount = ACPI_VAR_ARGS; - Scope->ParseScope.ArgEnd = ParserState->AmlEnd; - Scope->ParseScope.PkgEnd = ParserState->AmlEnd; - - ParserState->Scope = Scope; - ParserState->StartOp = RootOp; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsPushScope - * - * PARAMETERS: ParserState - Current parser state object - * Op - Current op to be pushed - * RemainingArgs - List of args remaining - * ArgCount - Fixed or variable number of args - * - * RETURN: Status - * - * DESCRIPTION: Push current op to begin parsing its argument - * - ******************************************************************************/ - -ACPI_STATUS -AcpiPsPushScope ( - ACPI_PARSE_STATE *ParserState, - ACPI_PARSE_OBJECT *Op, - UINT32 RemainingArgs, - UINT32 ArgCount) -{ - ACPI_GENERIC_STATE *Scope; - - - ACPI_FUNCTION_TRACE_PTR (PsPushScope, Op); - - - Scope = AcpiUtCreateGenericState (); - if (!Scope) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - Scope->Common.DescriptorType = ACPI_DESC_TYPE_STATE_PSCOPE; - Scope->ParseScope.Op = Op; - Scope->ParseScope.ArgList = RemainingArgs; - Scope->ParseScope.ArgCount = ArgCount; - Scope->ParseScope.PkgEnd = ParserState->PkgEnd; - - /* Push onto scope stack */ - - AcpiUtPushGenericState (&ParserState->Scope, Scope); - - if (ArgCount == ACPI_VAR_ARGS) - { - /* Multiple arguments */ - - Scope->ParseScope.ArgEnd = ParserState->PkgEnd; - } - else - { - /* Single argument */ - - Scope->ParseScope.ArgEnd = ACPI_TO_POINTER (ACPI_MAX_PTR); - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsPopScope - * - * PARAMETERS: ParserState - Current parser state object - * Op - Where the popped op is returned - * ArgList - Where the popped "next argument" is - * returned - * ArgCount - Count of objects in ArgList - * - * RETURN: Status - * - * DESCRIPTION: Return to parsing a previous op - * - ******************************************************************************/ - -void -AcpiPsPopScope ( - ACPI_PARSE_STATE *ParserState, - ACPI_PARSE_OBJECT **Op, - UINT32 *ArgList, - UINT32 *ArgCount) -{ - ACPI_GENERIC_STATE *Scope = ParserState->Scope; - - - ACPI_FUNCTION_TRACE (PsPopScope); - - - /* Only pop the scope if there is in fact a next scope */ - - if (Scope->Common.Next) - { - Scope = AcpiUtPopGenericState (&ParserState->Scope); - - /* Return to parsing previous op */ - - *Op = Scope->ParseScope.Op; - *ArgList = Scope->ParseScope.ArgList; - *ArgCount = Scope->ParseScope.ArgCount; - ParserState->PkgEnd = Scope->ParseScope.PkgEnd; - - /* All done with this scope state structure */ - - AcpiUtDeleteGenericState (Scope); - } - else - { - /* Empty parse stack, prepare to fetch next opcode */ - - *Op = NULL; - *ArgList = 0; - *ArgCount = 0; - } - - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, - "Popped Op %p Args %X\n", *Op, *ArgCount)); - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsCleanupScope - * - * PARAMETERS: ParserState - Current parser state object - * - * RETURN: None - * - * DESCRIPTION: Destroy available list, remaining stack levels, and return - * root scope - * - ******************************************************************************/ - -void -AcpiPsCleanupScope ( - ACPI_PARSE_STATE *ParserState) -{ - ACPI_GENERIC_STATE *Scope; - - - ACPI_FUNCTION_TRACE_PTR (PsCleanupScope, ParserState); - - - if (!ParserState) - { - return_VOID; - } - - /* Delete anything on the scope stack */ - - while (ParserState->Scope) - { - Scope = AcpiUtPopGenericState (&ParserState->Scope); - AcpiUtDeleteGenericState (Scope); - } - - return_VOID; -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/pstree.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/pstree.c deleted file mode 100644 index d7f62ebecc..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/pstree.c +++ /dev/null @@ -1,425 +0,0 @@ -/****************************************************************************** - * - * Module Name: pstree - Parser op tree manipulation/traversal/search - * $Revision: 1.49 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __PSTREE_C__ - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" - -#define _COMPONENT ACPI_PARSER - ACPI_MODULE_NAME ("pstree") - -/* Local prototypes */ - -#ifdef ACPI_OBSOLETE_FUNCTIONS -ACPI_PARSE_OBJECT * -AcpiPsGetChild ( - ACPI_PARSE_OBJECT *op); -#endif - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetArg - * - * PARAMETERS: Op - Get an argument for this op - * Argn - Nth argument to get - * - * RETURN: The argument (as an Op object). NULL if argument does not exist - * - * DESCRIPTION: Get the specified op's argument. - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -AcpiPsGetArg ( - ACPI_PARSE_OBJECT *Op, - UINT32 Argn) -{ - ACPI_PARSE_OBJECT *Arg = NULL; - const ACPI_OPCODE_INFO *OpInfo; - - - ACPI_FUNCTION_ENTRY (); - - - /* Get the info structure for this opcode */ - - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - if (OpInfo->Class == AML_CLASS_UNKNOWN) - { - /* Invalid opcode or ASCII character */ - - return (NULL); - } - - /* Check if this opcode requires argument sub-objects */ - - if (!(OpInfo->Flags & AML_HAS_ARGS)) - { - /* Has no linked argument objects */ - - return (NULL); - } - - /* Get the requested argument object */ - - Arg = Op->Common.Value.Arg; - while (Arg && Argn) - { - Argn--; - Arg = Arg->Common.Next; - } - - return (Arg); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsAppendArg - * - * PARAMETERS: Op - Append an argument to this Op. - * Arg - Argument Op to append - * - * RETURN: None. - * - * DESCRIPTION: Append an argument to an op's argument list (a NULL arg is OK) - * - ******************************************************************************/ - -void -AcpiPsAppendArg ( - ACPI_PARSE_OBJECT *Op, - ACPI_PARSE_OBJECT *Arg) -{ - ACPI_PARSE_OBJECT *PrevArg; - const ACPI_OPCODE_INFO *OpInfo; - - - ACPI_FUNCTION_ENTRY (); - - - if (!Op) - { - return; - } - - /* Get the info structure for this opcode */ - - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - if (OpInfo->Class == AML_CLASS_UNKNOWN) - { - /* Invalid opcode */ - - ACPI_ERROR ((AE_INFO, "Invalid AML Opcode: 0x%2.2X", - Op->Common.AmlOpcode)); - return; - } - - /* Check if this opcode requires argument sub-objects */ - - if (!(OpInfo->Flags & AML_HAS_ARGS)) - { - /* Has no linked argument objects */ - - return; - } - - /* Append the argument to the linked argument list */ - - if (Op->Common.Value.Arg) - { - /* Append to existing argument list */ - - PrevArg = Op->Common.Value.Arg; - while (PrevArg->Common.Next) - { - PrevArg = PrevArg->Common.Next; - } - PrevArg->Common.Next = Arg; - } - else - { - /* No argument list, this will be the first argument */ - - Op->Common.Value.Arg = Arg; - } - - /* Set the parent in this arg and any args linked after it */ - - while (Arg) - { - Arg->Common.Parent = Op; - Arg = Arg->Common.Next; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsGetDepthNext - * - * PARAMETERS: Origin - Root of subtree to search - * Op - Last (previous) Op that was found - * - * RETURN: Next Op found in the search. - * - * DESCRIPTION: Get next op in tree (walking the tree in depth-first order) - * Return NULL when reaching "origin" or when walking up from root - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -AcpiPsGetDepthNext ( - ACPI_PARSE_OBJECT *Origin, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Next = NULL; - ACPI_PARSE_OBJECT *Parent; - ACPI_PARSE_OBJECT *Arg; - - - ACPI_FUNCTION_ENTRY (); - - - if (!Op) - { - return (NULL); - } - - /* Look for an argument or child */ - - Next = AcpiPsGetArg (Op, 0); - if (Next) - { - return (Next); - } - - /* Look for a sibling */ - - Next = Op->Common.Next; - if (Next) - { - return (Next); - } - - /* Look for a sibling of parent */ - - Parent = Op->Common.Parent; - - while (Parent) - { - Arg = AcpiPsGetArg (Parent, 0); - while (Arg && (Arg != Origin) && (Arg != Op)) - { - Arg = Arg->Common.Next; - } - - if (Arg == Origin) - { - /* Reached parent of origin, end search */ - - return (NULL); - } - - if (Parent->Common.Next) - { - /* Found sibling of parent */ - - return (Parent->Common.Next); - } - - Op = Parent; - Parent = Parent->Common.Parent; - } - - return (Next); -} - - -#ifdef ACPI_OBSOLETE_FUNCTIONS -/******************************************************************************* - * - * FUNCTION: AcpiPsGetChild - * - * PARAMETERS: Op - Get the child of this Op - * - * RETURN: Child Op, Null if none is found. - * - * DESCRIPTION: Get op's children or NULL if none - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -AcpiPsGetChild ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Child = NULL; - - - ACPI_FUNCTION_ENTRY (); - - - switch (Op->Common.AmlOpcode) - { - case AML_SCOPE_OP: - case AML_ELSE_OP: - case AML_DEVICE_OP: - case AML_THERMAL_ZONE_OP: - case AML_INT_METHODCALL_OP: - - Child = AcpiPsGetArg (Op, 0); - break; - - - case AML_BUFFER_OP: - case AML_PACKAGE_OP: - case AML_METHOD_OP: - case AML_IF_OP: - case AML_WHILE_OP: - case AML_FIELD_OP: - - Child = AcpiPsGetArg (Op, 1); - break; - - - case AML_POWER_RES_OP: - case AML_INDEX_FIELD_OP: - - Child = AcpiPsGetArg (Op, 2); - break; - - - case AML_PROCESSOR_OP: - case AML_BANK_FIELD_OP: - - Child = AcpiPsGetArg (Op, 3); - break; - - - default: - /* All others have no children */ - break; - } - - return (Child); -} -#endif - - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psutils.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psutils.c deleted file mode 100644 index 63105b4615..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psutils.c +++ /dev/null @@ -1,362 +0,0 @@ -/****************************************************************************** - * - * Module Name: psutils - Parser miscellaneous utilities (Parser only) - * $Revision: 1.69 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" - -#define _COMPONENT ACPI_PARSER - ACPI_MODULE_NAME ("psutils") - - -/******************************************************************************* - * - * FUNCTION: AcpiPsCreateScopeOp - * - * PARAMETERS: None - * - * RETURN: A new Scope object, null on failure - * - * DESCRIPTION: Create a Scope and associated namepath op with the root name - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT * -AcpiPsCreateScopeOp ( - void) -{ - ACPI_PARSE_OBJECT *ScopeOp; - - - ScopeOp = AcpiPsAllocOp (AML_SCOPE_OP); - if (!ScopeOp) - { - return (NULL); - } - - ScopeOp->Named.Name = ACPI_ROOT_NAME; - return (ScopeOp); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsInitOp - * - * PARAMETERS: Op - A newly allocated Op object - * Opcode - Opcode to store in the Op - * - * RETURN: None - * - * DESCRIPTION: Initialize a parse (Op) object - * - ******************************************************************************/ - -void -AcpiPsInitOp ( - ACPI_PARSE_OBJECT *Op, - UINT16 Opcode) -{ - ACPI_FUNCTION_ENTRY (); - - - Op->Common.DescriptorType = ACPI_DESC_TYPE_PARSER; - Op->Common.AmlOpcode = Opcode; - - ACPI_DISASM_ONLY_MEMBERS (ACPI_STRNCPY (Op->Common.AmlOpName, - (AcpiPsGetOpcodeInfo (Opcode))->Name, - sizeof (Op->Common.AmlOpName))); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsAllocOp - * - * PARAMETERS: Opcode - Opcode that will be stored in the new Op - * - * RETURN: Pointer to the new Op, null on failure - * - * DESCRIPTION: Allocate an acpi_op, choose op type (and thus size) based on - * opcode. A cache of opcodes is available for the pure - * GENERIC_OP, since this is by far the most commonly used. - * - ******************************************************************************/ - -ACPI_PARSE_OBJECT* -AcpiPsAllocOp ( - UINT16 Opcode) -{ - ACPI_PARSE_OBJECT *Op; - const ACPI_OPCODE_INFO *OpInfo; - UINT8 Flags = ACPI_PARSEOP_GENERIC; - - - ACPI_FUNCTION_ENTRY (); - - - OpInfo = AcpiPsGetOpcodeInfo (Opcode); - - /* Determine type of ParseOp required */ - - if (OpInfo->Flags & AML_DEFER) - { - Flags = ACPI_PARSEOP_DEFERRED; - } - else if (OpInfo->Flags & AML_NAMED) - { - Flags = ACPI_PARSEOP_NAMED; - } - else if (Opcode == AML_INT_BYTELIST_OP) - { - Flags = ACPI_PARSEOP_BYTELIST; - } - - /* Allocate the minimum required size object */ - - if (Flags == ACPI_PARSEOP_GENERIC) - { - /* The generic op (default) is by far the most common (16 to 1) */ - - Op = AcpiOsAcquireObject (AcpiGbl_PsNodeCache); - } - else - { - /* Extended parseop */ - - Op = AcpiOsAcquireObject (AcpiGbl_PsNodeExtCache); - } - - /* Initialize the Op */ - - if (Op) - { - AcpiPsInitOp (Op, Opcode); - Op->Common.Flags = Flags; - } - - return (Op); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsFreeOp - * - * PARAMETERS: Op - Op to be freed - * - * RETURN: None. - * - * DESCRIPTION: Free an Op object. Either put it on the GENERIC_OP cache list - * or actually free it. - * - ******************************************************************************/ - -void -AcpiPsFreeOp ( - ACPI_PARSE_OBJECT *Op) -{ - ACPI_FUNCTION_NAME (PsFreeOp); - - - if (Op->Common.AmlOpcode == AML_INT_RETURN_VALUE_OP) - { - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Free retval op: %p\n", Op)); - } - - if (Op->Common.Flags & ACPI_PARSEOP_GENERIC) - { - (void) AcpiOsReleaseObject (AcpiGbl_PsNodeCache, Op); - } - else - { - (void) AcpiOsReleaseObject (AcpiGbl_PsNodeExtCache, Op); - } -} - - -/******************************************************************************* - * - * FUNCTION: Utility functions - * - * DESCRIPTION: Low level character and object functions - * - ******************************************************************************/ - - -/* - * Is "c" a namestring lead character? - */ -BOOLEAN -AcpiPsIsLeadingChar ( - UINT32 c) -{ - return ((BOOLEAN) (c == '_' || (c >= 'A' && c <= 'Z'))); -} - - -/* - * Is "c" a namestring prefix character? - */ -BOOLEAN -AcpiPsIsPrefixChar ( - UINT32 c) -{ - return ((BOOLEAN) (c == '\\' || c == '^')); -} - - -/* - * Get op's name (4-byte name segment) or 0 if unnamed - */ -UINT32 -AcpiPsGetName ( - ACPI_PARSE_OBJECT *Op) -{ - - /* The "generic" object has no name associated with it */ - - if (Op->Common.Flags & ACPI_PARSEOP_GENERIC) - { - return (0); - } - - /* Only the "Extended" parse objects have a name */ - - return (Op->Named.Name); -} - - -/* - * Set op's name - */ -void -AcpiPsSetName ( - ACPI_PARSE_OBJECT *Op, - UINT32 name) -{ - - /* The "generic" object has no name associated with it */ - - if (Op->Common.Flags & ACPI_PARSEOP_GENERIC) - { - return; - } - - Op->Named.Name = name; -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/pswalk.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/pswalk.c deleted file mode 100644 index 439f842b53..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/pswalk.c +++ /dev/null @@ -1,193 +0,0 @@ -/****************************************************************************** - * - * Module Name: pswalk - Parser routines to walk parsed op tree(s) - * $Revision: 1.77 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpi.h" -#include "acparser.h" - -#define _COMPONENT ACPI_PARSER - ACPI_MODULE_NAME ("pswalk") - - -/******************************************************************************* - * - * FUNCTION: AcpiPsDeleteParseTree - * - * PARAMETERS: SubtreeRoot - Root of tree (or subtree) to delete - * - * RETURN: None - * - * DESCRIPTION: Delete a portion of or an entire parse tree. - * - ******************************************************************************/ - -void -AcpiPsDeleteParseTree ( - ACPI_PARSE_OBJECT *SubtreeRoot) -{ - ACPI_PARSE_OBJECT *Op = SubtreeRoot; - ACPI_PARSE_OBJECT *Next = NULL; - ACPI_PARSE_OBJECT *Parent = NULL; - - - ACPI_FUNCTION_TRACE_PTR (PsDeleteParseTree, SubtreeRoot); - - - /* Visit all nodes in the subtree */ - - while (Op) - { - /* Check if we are not ascending */ - - if (Op != Parent) - { - /* Look for an argument or child of the current op */ - - Next = AcpiPsGetArg (Op, 0); - if (Next) - { - /* Still going downward in tree (Op is not completed yet) */ - - Op = Next; - continue; - } - } - - /* No more children, this Op is complete. */ - - Next = Op->Common.Next; - Parent = Op->Common.Parent; - - AcpiPsFreeOp (Op); - - /* If we are back to the starting point, the walk is complete. */ - - if (Op == SubtreeRoot) - { - return_VOID; - } - if (Next) - { - Op = Next; - } - else - { - Op = Parent; - } - } - - return_VOID; -} diff --git a/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psxface.c b/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psxface.c deleted file mode 100644 index a5dfa183b1..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/interpreter/parser/psxface.c +++ /dev/null @@ -1,473 +0,0 @@ -/****************************************************************************** - * - * Module Name: psxface - Parser external interfaces - * $Revision: 1.92 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __PSXFACE_C__ - -#include "acpi.h" -#include "acparser.h" -#include "acdispat.h" -#include "acinterp.h" - - -#define _COMPONENT ACPI_PARSER - ACPI_MODULE_NAME ("psxface") - -/* Local Prototypes */ - -static void -AcpiPsStartTrace ( - ACPI_EVALUATE_INFO *Info); - -static void -AcpiPsStopTrace ( - ACPI_EVALUATE_INFO *Info); - -static void -AcpiPsUpdateParameterList ( - ACPI_EVALUATE_INFO *Info, - UINT16 Action); - - -/******************************************************************************* - * - * FUNCTION: AcpiDebugTrace - * - * PARAMETERS: MethodName - Valid ACPI name string - * DebugLevel - Optional level mask. 0 to use default - * DebugLayer - Optional layer mask. 0 to use default - * Flags - bit 1: one shot(1) or persistent(0) - * - * RETURN: Status - * - * DESCRIPTION: External interface to enable debug tracing during control - * method execution - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDebugTrace ( - char *Name, - UINT32 DebugLevel, - UINT32 DebugLayer, - UINT32 Flags) -{ - ACPI_STATUS Status; - - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* TBDs: Validate name, allow full path or just nameseg */ - - AcpiGbl_TraceMethodName = *ACPI_CAST_PTR (UINT32, Name); - AcpiGbl_TraceFlags = Flags; - - if (DebugLevel) - { - AcpiGbl_TraceDbgLevel = DebugLevel; - } - if (DebugLayer) - { - AcpiGbl_TraceDbgLayer = DebugLayer; - } - - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsStartTrace - * - * PARAMETERS: Info - Method info struct - * - * RETURN: None - * - * DESCRIPTION: Start control method execution trace - * - ******************************************************************************/ - -static void -AcpiPsStartTrace ( - ACPI_EVALUATE_INFO *Info) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_ENTRY (); - - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return; - } - - if ((!AcpiGbl_TraceMethodName) || - (AcpiGbl_TraceMethodName != Info->ResolvedNode->Name.Integer)) - { - goto Exit; - } - - AcpiGbl_OriginalDbgLevel = AcpiDbgLevel; - AcpiGbl_OriginalDbgLayer = AcpiDbgLayer; - - AcpiDbgLevel = 0x00FFFFFF; - AcpiDbgLayer = ACPI_UINT32_MAX; - - if (AcpiGbl_TraceDbgLevel) - { - AcpiDbgLevel = AcpiGbl_TraceDbgLevel; - } - if (AcpiGbl_TraceDbgLayer) - { - AcpiDbgLayer = AcpiGbl_TraceDbgLayer; - } - - -Exit: - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsStopTrace - * - * PARAMETERS: Info - Method info struct - * - * RETURN: None - * - * DESCRIPTION: Stop control method execution trace - * - ******************************************************************************/ - -static void -AcpiPsStopTrace ( - ACPI_EVALUATE_INFO *Info) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_ENTRY (); - - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return; - } - - if ((!AcpiGbl_TraceMethodName) || - (AcpiGbl_TraceMethodName != Info->ResolvedNode->Name.Integer)) - { - goto Exit; - } - - /* Disable further tracing if type is one-shot */ - - if (AcpiGbl_TraceFlags & 1) - { - AcpiGbl_TraceMethodName = 0; - AcpiGbl_TraceDbgLevel = 0; - AcpiGbl_TraceDbgLayer = 0; - } - - AcpiDbgLevel = AcpiGbl_OriginalDbgLevel; - AcpiDbgLayer = AcpiGbl_OriginalDbgLayer; - -Exit: - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsExecuteMethod - * - * PARAMETERS: Info - Method info block, contains: - * Node - Method Node to execute - * ObjDesc - Method object - * Parameters - List of parameters to pass to the method, - * terminated by NULL. Params itself may be - * NULL if no parameters are being passed. - * ReturnObject - Where to put method's return value (if - * any). If NULL, no value is returned. - * ParameterType - Type of Parameter list - * ReturnObject - Where to put method's return value (if - * any). If NULL, no value is returned. - * PassNumber - Parse or execute pass - * - * RETURN: Status - * - * DESCRIPTION: Execute a control method - * - ******************************************************************************/ - -ACPI_STATUS -AcpiPsExecuteMethod ( - ACPI_EVALUATE_INFO *Info) -{ - ACPI_STATUS Status; - ACPI_PARSE_OBJECT *Op; - ACPI_WALK_STATE *WalkState; - - - ACPI_FUNCTION_TRACE (PsExecuteMethod); - - - /* Validate the Info and method Node */ - - if (!Info || !Info->ResolvedNode) - { - return_ACPI_STATUS (AE_NULL_ENTRY); - } - - /* Init for new method, wait on concurrency semaphore */ - - Status = AcpiDsBeginMethodExecution (Info->ResolvedNode, Info->ObjDesc, NULL); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * The caller "owns" the parameters, so give each one an extra reference - */ - AcpiPsUpdateParameterList (Info, REF_INCREMENT); - - /* Begin tracing if requested */ - - AcpiPsStartTrace (Info); - - /* - * Execute the method. Performs parse simultaneously - */ - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, - "**** Begin Method Parse/Execute [%4.4s] **** Node=%p Obj=%p\n", - Info->ResolvedNode->Name.Ascii, Info->ResolvedNode, Info->ObjDesc)); - - /* Create and init a Root Node */ - - Op = AcpiPsCreateScopeOp (); - if (!Op) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* Create and initialize a new walk state */ - - Info->PassNumber = ACPI_IMODE_EXECUTE; - WalkState = AcpiDsCreateWalkState ( - Info->ObjDesc->Method.OwnerId, NULL, NULL, NULL); - if (!WalkState) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - Status = AcpiDsInitAmlWalk (WalkState, Op, Info->ResolvedNode, - Info->ObjDesc->Method.AmlStart, - Info->ObjDesc->Method.AmlLength, Info, Info->PassNumber); - if (ACPI_FAILURE (Status)) - { - AcpiDsDeleteWalkState (WalkState); - goto Cleanup; - } - - /* Parse the AML */ - - Status = AcpiPsParseAml (WalkState); - - /* WalkState was deleted by ParseAml */ - -Cleanup: - AcpiPsDeleteParseTree (Op); - - /* End optional tracing */ - - AcpiPsStopTrace (Info); - - /* Take away the extra reference that we gave the parameters above */ - - AcpiPsUpdateParameterList (Info, REF_DECREMENT); - - /* Exit now if error above */ - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * If the method has returned an object, signal this to the caller with - * a control exception code - */ - if (Info->ReturnObject) - { - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Method returned ObjDesc=%p\n", - Info->ReturnObject)); - ACPI_DUMP_STACK_ENTRY (Info->ReturnObject); - - Status = AE_CTRL_RETURN_VALUE; - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsUpdateParameterList - * - * PARAMETERS: Info - See ACPI_EVALUATE_INFO - * (Used: ParameterType and Parameters) - * Action - Add or Remove reference - * - * RETURN: Status - * - * DESCRIPTION: Update reference count on all method parameter objects - * - ******************************************************************************/ - -static void -AcpiPsUpdateParameterList ( - ACPI_EVALUATE_INFO *Info, - UINT16 Action) -{ - ACPI_NATIVE_UINT i; - - - if ((Info->ParameterType == ACPI_PARAM_ARGS) && - (Info->Parameters)) - { - /* Update reference count for each parameter */ - - for (i = 0; Info->Parameters[i]; i++) - { - /* Ignore errors, just do them all */ - - (void) AcpiUtUpdateObjectReference (Info->Parameters[i], Action); - } - } -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/namespace/nsaccess.c b/sys/contrib/dev/acpica-unix-20061109/namespace/nsaccess.c deleted file mode 100644 index 81cc250ce5..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/namespace/nsaccess.c +++ /dev/null @@ -1,750 +0,0 @@ -/******************************************************************************* - * - * Module Name: nsaccess - Top-level functions for accessing ACPI namespace - * $Revision: 1.204 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __NSACCESS_C__ - -#include "acpi.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acdispat.h" - - -#define _COMPONENT ACPI_NAMESPACE - ACPI_MODULE_NAME ("nsaccess") - - -/******************************************************************************* - * - * FUNCTION: AcpiNsRootInitialize - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Allocate and initialize the default root named objects - * - * MUTEX: Locks namespace for entire execution - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsRootInitialize ( - void) -{ - ACPI_STATUS Status; - const ACPI_PREDEFINED_NAMES *InitVal = NULL; - ACPI_NAMESPACE_NODE *NewNode; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STRING Val = NULL; - - - ACPI_FUNCTION_TRACE (NsRootInitialize); - - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * The global root ptr is initially NULL, so a non-NULL value indicates - * that AcpiNsRootInitialize() has already been called; just return. - */ - if (AcpiGbl_RootNode) - { - Status = AE_OK; - goto UnlockAndExit; - } - - /* - * Tell the rest of the subsystem that the root is initialized - * (This is OK because the namespace is locked) - */ - AcpiGbl_RootNode = &AcpiGbl_RootNodeStruct; - - /* Enter the pre-defined names in the name table */ - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Entering predefined entries into namespace\n")); - - for (InitVal = AcpiGbl_PreDefinedNames; InitVal->Name; InitVal++) - { - /* _OSI is optional for now, will be permanent later */ - - if (!ACPI_STRCMP (InitVal->Name, "_OSI") && !AcpiGbl_CreateOsiMethod) - { - continue; - } - - Status = AcpiNsLookup (NULL, InitVal->Name, InitVal->Type, - ACPI_IMODE_LOAD_PASS2, ACPI_NS_NO_UPSEARCH, - NULL, &NewNode); - - if (ACPI_FAILURE (Status) || (!NewNode)) /* Must be on same line for code converter */ - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Could not create predefined name %s", - InitVal->Name)); - } - - /* - * Name entered successfully. - * If entry in PreDefinedNames[] specifies an - * initial value, create the initial value. - */ - if (InitVal->Val) - { - Status = AcpiOsPredefinedOverride (InitVal, &Val); - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR ((AE_INFO, - "Could not override predefined %s", - InitVal->Name)); - } - - if (!Val) - { - Val = InitVal->Val; - } - - /* - * Entry requests an initial value, allocate a - * descriptor for it. - */ - ObjDesc = AcpiUtCreateInternalObject (InitVal->Type); - if (!ObjDesc) - { - Status = AE_NO_MEMORY; - goto UnlockAndExit; - } - - /* - * Convert value string from table entry to - * internal representation. Only types actually - * used for initial values are implemented here. - */ - switch (InitVal->Type) - { - case ACPI_TYPE_METHOD: - ObjDesc->Method.ParamCount = (UINT8) ACPI_TO_INTEGER (Val); - ObjDesc->Common.Flags |= AOPOBJ_DATA_VALID; - -#if defined (ACPI_ASL_COMPILER) - - /* Save the parameter count for the iASL compiler */ - - NewNode->Value = ObjDesc->Method.ParamCount; -#else - /* Mark this as a very SPECIAL method */ - - ObjDesc->Method.MethodFlags = AML_METHOD_INTERNAL_ONLY; - -#ifndef ACPI_DUMP_APP - ObjDesc->Method.Implementation = AcpiUtOsiImplementation; -#endif -#endif - break; - - case ACPI_TYPE_INTEGER: - - ObjDesc->Integer.Value = ACPI_TO_INTEGER (Val); - break; - - - case ACPI_TYPE_STRING: - - /* - * Build an object around the static string - */ - ObjDesc->String.Length = (UINT32) ACPI_STRLEN (Val); - ObjDesc->String.Pointer = Val; - ObjDesc->Common.Flags |= AOPOBJ_STATIC_POINTER; - break; - - - case ACPI_TYPE_MUTEX: - - ObjDesc->Mutex.Node = NewNode; - ObjDesc->Mutex.SyncLevel = (UINT8) (ACPI_TO_INTEGER (Val) - 1); - - /* Create a mutex */ - - Status = AcpiOsCreateMutex (&ObjDesc->Mutex.OsMutex); - if (ACPI_FAILURE (Status)) - { - AcpiUtRemoveReference (ObjDesc); - goto UnlockAndExit; - } - - /* Special case for ACPI Global Lock */ - - if (ACPI_STRCMP (InitVal->Name, "_GL_") == 0) - { - AcpiGbl_GlobalLockMutex = ObjDesc->Mutex.OsMutex; - - /* Create additional counting semaphore for global lock */ - - Status = AcpiOsCreateSemaphore ( - 1, 0, &AcpiGbl_GlobalLockSemaphore); - if (ACPI_FAILURE (Status)) - { - AcpiUtRemoveReference (ObjDesc); - goto UnlockAndExit; - } - } - break; - - - default: - - ACPI_ERROR ((AE_INFO, "Unsupported initial type value %X", - InitVal->Type)); - AcpiUtRemoveReference (ObjDesc); - ObjDesc = NULL; - continue; - } - - /* Store pointer to value descriptor in the Node */ - - Status = AcpiNsAttachObject (NewNode, ObjDesc, - ACPI_GET_OBJECT_TYPE (ObjDesc)); - - /* Remove local reference to the object */ - - AcpiUtRemoveReference (ObjDesc); - } - } - - -UnlockAndExit: - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - - /* Save a handle to "_GPE", it is always present */ - - if (ACPI_SUCCESS (Status)) - { - Status = AcpiNsGetNode (NULL, "\\_GPE", ACPI_NS_NO_UPSEARCH, - &AcpiGbl_FadtGpeDevice); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsLookup - * - * PARAMETERS: ScopeInfo - Current scope info block - * Pathname - Search pathname, in internal format - * (as represented in the AML stream) - * Type - Type associated with name - * InterpreterMode - IMODE_LOAD_PASS2 => add name if not found - * Flags - Flags describing the search restrictions - * WalkState - Current state of the walk - * ReturnNode - Where the Node is placed (if found - * or created successfully) - * - * RETURN: Status - * - * DESCRIPTION: Find or enter the passed name in the name space. - * Log an error if name not found in Exec mode. - * - * MUTEX: Assumes namespace is locked. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsLookup ( - ACPI_GENERIC_STATE *ScopeInfo, - char *Pathname, - ACPI_OBJECT_TYPE Type, - ACPI_INTERPRETER_MODE InterpreterMode, - UINT32 Flags, - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE **ReturnNode) -{ - ACPI_STATUS Status; - char *Path = Pathname; - ACPI_NAMESPACE_NODE *PrefixNode; - ACPI_NAMESPACE_NODE *CurrentNode = NULL; - ACPI_NAMESPACE_NODE *ThisNode = NULL; - UINT32 NumSegments; - UINT32 NumCarats; - ACPI_NAME SimpleName; - ACPI_OBJECT_TYPE TypeToCheckFor; - ACPI_OBJECT_TYPE ThisSearchType; - UINT32 SearchParentFlag = ACPI_NS_SEARCH_PARENT; - UINT32 LocalFlags; - - - ACPI_FUNCTION_TRACE (NsLookup); - - - if (!ReturnNode) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - LocalFlags = Flags & ~(ACPI_NS_ERROR_IF_FOUND | ACPI_NS_SEARCH_PARENT); - *ReturnNode = ACPI_ENTRY_NOT_FOUND; - AcpiGbl_NsLookupCount++; - - if (!AcpiGbl_RootNode) - { - return_ACPI_STATUS (AE_NO_NAMESPACE); - } - - /* - * Get the prefix scope. - * A null scope means use the root scope - */ - if ((!ScopeInfo) || - (!ScopeInfo->Scope.Node)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, - "Null scope prefix, using root node (%p)\n", - AcpiGbl_RootNode)); - - PrefixNode = AcpiGbl_RootNode; - } - else - { - PrefixNode = ScopeInfo->Scope.Node; - if (ACPI_GET_DESCRIPTOR_TYPE (PrefixNode) != ACPI_DESC_TYPE_NAMED) - { - ACPI_ERROR ((AE_INFO, "%p is not a namespace node [%s]", - PrefixNode, AcpiUtGetDescriptorName (PrefixNode))); - return_ACPI_STATUS (AE_AML_INTERNAL); - } - - if (!(Flags & ACPI_NS_PREFIX_IS_SCOPE)) - { - /* - * This node might not be a actual "scope" node (such as a - * Device/Method, etc.) It could be a Package or other object node. - * Backup up the tree to find the containing scope node. - */ - while (!AcpiNsOpensScope (PrefixNode->Type) && - PrefixNode->Type != ACPI_TYPE_ANY) - { - PrefixNode = AcpiNsGetParentNode (PrefixNode); - } - } - } - - /* Save type TBD: may be no longer necessary */ - - TypeToCheckFor = Type; - - /* - * Begin examination of the actual pathname - */ - if (!Pathname) - { - /* A Null NamePath is allowed and refers to the root */ - - NumSegments = 0; - ThisNode = AcpiGbl_RootNode; - Path = ""; - - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, - "Null Pathname (Zero segments), Flags=%X\n", Flags)); - } - else - { - /* - * Name pointer is valid (and must be in internal name format) - * - * Check for scope prefixes: - * - * As represented in the AML stream, a namepath consists of an - * optional scope prefix followed by a name segment part. - * - * If present, the scope prefix is either a Root Prefix (in - * which case the name is fully qualified), or one or more - * Parent Prefixes (in which case the name's scope is relative - * to the current scope). - */ - if (*Path == (UINT8) AML_ROOT_PREFIX) - { - /* Pathname is fully qualified, start from the root */ - - ThisNode = AcpiGbl_RootNode; - SearchParentFlag = ACPI_NS_NO_UPSEARCH; - - /* Point to name segment part */ - - Path++; - - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, - "Path is absolute from root [%p]\n", ThisNode)); - } - else - { - /* Pathname is relative to current scope, start there */ - - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, - "Searching relative to prefix scope [%4.4s] (%p)\n", - AcpiUtGetNodeName (PrefixNode), PrefixNode)); - - /* - * Handle multiple Parent Prefixes (carat) by just getting - * the parent node for each prefix instance. - */ - ThisNode = PrefixNode; - NumCarats = 0; - while (*Path == (UINT8) AML_PARENT_PREFIX) - { - /* Name is fully qualified, no search rules apply */ - - SearchParentFlag = ACPI_NS_NO_UPSEARCH; - /* - * Point past this prefix to the name segment - * part or the next Parent Prefix - */ - Path++; - - /* Backup to the parent node */ - - NumCarats++; - ThisNode = AcpiNsGetParentNode (ThisNode); - if (!ThisNode) - { - /* Current scope has no parent scope */ - - ACPI_ERROR ((AE_INFO, - "ACPI path has too many parent prefixes (^) - reached beyond root node")); - return_ACPI_STATUS (AE_NOT_FOUND); - } - } - - if (SearchParentFlag == ACPI_NS_NO_UPSEARCH) - { - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, - "Search scope is [%4.4s], path has %d carat(s)\n", - AcpiUtGetNodeName (ThisNode), NumCarats)); - } - } - - /* - * Determine the number of ACPI name segments in this pathname. - * - * The segment part consists of either: - * - A Null name segment (0) - * - A DualNamePrefix followed by two 4-byte name segments - * - A MultiNamePrefix followed by a byte indicating the - * number of segments and the segments themselves. - * - A single 4-byte name segment - * - * Examine the name prefix opcode, if any, to determine the number of - * segments. - */ - switch (*Path) - { - case 0: - /* - * Null name after a root or parent prefixes. We already - * have the correct target node and there are no name segments. - */ - NumSegments = 0; - Type = ThisNode->Type; - - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, - "Prefix-only Pathname (Zero name segments), Flags=%X\n", - Flags)); - break; - - case AML_DUAL_NAME_PREFIX: - - /* More than one NameSeg, search rules do not apply */ - - SearchParentFlag = ACPI_NS_NO_UPSEARCH; - - /* Two segments, point to first name segment */ - - NumSegments = 2; - Path++; - - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, - "Dual Pathname (2 segments, Flags=%X)\n", Flags)); - break; - - case AML_MULTI_NAME_PREFIX_OP: - - /* More than one NameSeg, search rules do not apply */ - - SearchParentFlag = ACPI_NS_NO_UPSEARCH; - - /* Extract segment count, point to first name segment */ - - Path++; - NumSegments = (UINT32) (UINT8) *Path; - Path++; - - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, - "Multi Pathname (%d Segments, Flags=%X)\n", - NumSegments, Flags)); - break; - - default: - /* - * Not a Null name, no Dual or Multi prefix, hence there is - * only one name segment and Pathname is already pointing to it. - */ - NumSegments = 1; - - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, - "Simple Pathname (1 segment, Flags=%X)\n", Flags)); - break; - } - - ACPI_DEBUG_EXEC (AcpiNsPrintPathname (NumSegments, Path)); - } - - - /* - * Search namespace for each segment of the name. Loop through and - * verify (or add to the namespace) each name segment. - * - * The object type is significant only at the last name - * segment. (We don't care about the types along the path, only - * the type of the final target object.) - */ - ThisSearchType = ACPI_TYPE_ANY; - CurrentNode = ThisNode; - while (NumSegments && CurrentNode) - { - NumSegments--; - if (!NumSegments) - { - /* - * This is the last segment, enable typechecking - */ - ThisSearchType = Type; - - /* - * Only allow automatic parent search (search rules) if the caller - * requested it AND we have a single, non-fully-qualified NameSeg - */ - if ((SearchParentFlag != ACPI_NS_NO_UPSEARCH) && - (Flags & ACPI_NS_SEARCH_PARENT)) - { - LocalFlags |= ACPI_NS_SEARCH_PARENT; - } - - /* Set error flag according to caller */ - - if (Flags & ACPI_NS_ERROR_IF_FOUND) - { - LocalFlags |= ACPI_NS_ERROR_IF_FOUND; - } - } - - /* Extract one ACPI name from the front of the pathname */ - - ACPI_MOVE_32_TO_32 (&SimpleName, Path); - - /* Try to find the single (4 character) ACPI name */ - - Status = AcpiNsSearchAndEnter (SimpleName, WalkState, CurrentNode, - InterpreterMode, ThisSearchType, LocalFlags, &ThisNode); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_NOT_FOUND) - { - /* Name not found in ACPI namespace */ - - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, - "Name [%4.4s] not found in scope [%4.4s] %p\n", - (char *) &SimpleName, (char *) &CurrentNode->Name, - CurrentNode)); - } - - *ReturnNode = ThisNode; - return_ACPI_STATUS (Status); - } - - /* - * Sanity typecheck of the target object: - * - * If 1) This is the last segment (NumSegments == 0) - * 2) And we are looking for a specific type - * (Not checking for TYPE_ANY) - * 3) Which is not an alias - * 4) Which is not a local type (TYPE_SCOPE) - * 5) And the type of target object is known (not TYPE_ANY) - * 6) And target object does not match what we are looking for - * - * Then we have a type mismatch. Just warn and ignore it. - */ - if ((NumSegments == 0) && - (TypeToCheckFor != ACPI_TYPE_ANY) && - (TypeToCheckFor != ACPI_TYPE_LOCAL_ALIAS) && - (TypeToCheckFor != ACPI_TYPE_LOCAL_METHOD_ALIAS) && - (TypeToCheckFor != ACPI_TYPE_LOCAL_SCOPE) && - (ThisNode->Type != ACPI_TYPE_ANY) && - (ThisNode->Type != TypeToCheckFor)) - { - /* Complain about a type mismatch */ - - ACPI_WARNING ((AE_INFO, - "NsLookup: Type mismatch on %4.4s (%s), searching for (%s)", - ACPI_CAST_PTR (char, &SimpleName), - AcpiUtGetTypeName (ThisNode->Type), - AcpiUtGetTypeName (TypeToCheckFor))); - } - - /* - * If this is the last name segment and we are not looking for a - * specific type, but the type of found object is known, use that type - * to see if it opens a scope. - */ - if ((NumSegments == 0) && (Type == ACPI_TYPE_ANY)) - { - Type = ThisNode->Type; - } - - /* Point to next name segment and make this node current */ - - Path += ACPI_NAME_SIZE; - CurrentNode = ThisNode; - } - - /* - * Always check if we need to open a new scope - */ - if (!(Flags & ACPI_NS_DONT_OPEN_SCOPE) && (WalkState)) - { - /* - * If entry is a type which opens a scope, push the new scope on the - * scope stack. - */ - if (AcpiNsOpensScope (Type)) - { - Status = AcpiDsScopeStackPush (ThisNode, Type, WalkState); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - } - - *ReturnNode = ThisNode; - return_ACPI_STATUS (AE_OK); -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/namespace/nsalloc.c b/sys/contrib/dev/acpica-unix-20061109/namespace/nsalloc.c deleted file mode 100644 index 322e0b8117..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/namespace/nsalloc.c +++ /dev/null @@ -1,617 +0,0 @@ -/******************************************************************************* - * - * Module Name: nsalloc - Namespace allocation and deletion utilities - * $Revision: 1.106 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __NSALLOC_C__ - -#include "acpi.h" -#include "acnamesp.h" - - -#define _COMPONENT ACPI_NAMESPACE - ACPI_MODULE_NAME ("nsalloc") - - -/******************************************************************************* - * - * FUNCTION: AcpiNsCreateNode - * - * PARAMETERS: Name - Name of the new node (4 char ACPI name) - * - * RETURN: New namespace node (Null on failure) - * - * DESCRIPTION: Create a namespace node - * - ******************************************************************************/ - -ACPI_NAMESPACE_NODE * -AcpiNsCreateNode ( - UINT32 Name) -{ - ACPI_NAMESPACE_NODE *Node; - - - ACPI_FUNCTION_TRACE (NsCreateNode); - - - Node = AcpiOsAcquireObject (AcpiGbl_NamespaceCache); - if (!Node) - { - return_PTR (NULL); - } - - ACPI_MEM_TRACKING (AcpiGbl_NsNodeList->TotalAllocated++); - - Node->Name.Integer = Name; - ACPI_SET_DESCRIPTOR_TYPE (Node, ACPI_DESC_TYPE_NAMED); - return_PTR (Node); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsDeleteNode - * - * PARAMETERS: Node - Node to be deleted - * - * RETURN: None - * - * DESCRIPTION: Delete a namespace node - * - ******************************************************************************/ - -void -AcpiNsDeleteNode ( - ACPI_NAMESPACE_NODE *Node) -{ - ACPI_NAMESPACE_NODE *ParentNode; - ACPI_NAMESPACE_NODE *PrevNode; - ACPI_NAMESPACE_NODE *NextNode; - - - ACPI_FUNCTION_TRACE_PTR (NsDeleteNode, Node); - - - ParentNode = AcpiNsGetParentNode (Node); - - PrevNode = NULL; - NextNode = ParentNode->Child; - - /* Find the node that is the previous peer in the parent's child list */ - - while (NextNode != Node) - { - PrevNode = NextNode; - NextNode = PrevNode->Peer; - } - - if (PrevNode) - { - /* Node is not first child, unlink it */ - - PrevNode->Peer = NextNode->Peer; - if (NextNode->Flags & ANOBJ_END_OF_PEER_LIST) - { - PrevNode->Flags |= ANOBJ_END_OF_PEER_LIST; - } - } - else - { - /* Node is first child (has no previous peer) */ - - if (NextNode->Flags & ANOBJ_END_OF_PEER_LIST) - { - /* No peers at all */ - - ParentNode->Child = NULL; - } - else - { /* Link peer list to parent */ - - ParentNode->Child = NextNode->Peer; - } - } - - ACPI_MEM_TRACKING (AcpiGbl_NsNodeList->TotalFreed++); - - /* - * Detach an object if there is one, then delete the node - */ - AcpiNsDetachObject (Node); - (void) AcpiOsReleaseObject (AcpiGbl_NamespaceCache, Node); - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsInstallNode - * - * PARAMETERS: WalkState - Current state of the walk - * ParentNode - The parent of the new Node - * Node - The new Node to install - * Type - ACPI object type of the new Node - * - * RETURN: None - * - * DESCRIPTION: Initialize a new namespace node and install it amongst - * its peers. - * - * Note: Current namespace lookup is linear search. This appears - * to be sufficient as namespace searches consume only a small - * fraction of the execution time of the ACPI subsystem. - * - ******************************************************************************/ - -void -AcpiNsInstallNode ( - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE *ParentNode, /* Parent */ - ACPI_NAMESPACE_NODE *Node, /* New Child*/ - ACPI_OBJECT_TYPE Type) -{ - ACPI_OWNER_ID OwnerId = 0; - ACPI_NAMESPACE_NODE *ChildNode; - - - ACPI_FUNCTION_TRACE (NsInstallNode); - - - /* - * Get the owner ID from the Walk state - * The owner ID is used to track table deletion and - * deletion of objects created by methods - */ - if (WalkState) - { - OwnerId = WalkState->OwnerId; - } - - /* Link the new entry into the parent and existing children */ - - ChildNode = ParentNode->Child; - if (!ChildNode) - { - ParentNode->Child = Node; - Node->Flags |= ANOBJ_END_OF_PEER_LIST; - Node->Peer = ParentNode; - } - else - { - while (!(ChildNode->Flags & ANOBJ_END_OF_PEER_LIST)) - { - ChildNode = ChildNode->Peer; - } - - ChildNode->Peer = Node; - - /* Clear end-of-list flag */ - - ChildNode->Flags &= ~ANOBJ_END_OF_PEER_LIST; - Node->Flags |= ANOBJ_END_OF_PEER_LIST; - Node->Peer = ParentNode; - } - - /* Init the new entry */ - - Node->OwnerId = OwnerId; - Node->Type = (UINT8) Type; - - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, - "%4.4s (%s) [Node %p Owner %X] added to %4.4s (%s) [Node %p]\n", - AcpiUtGetNodeName (Node), AcpiUtGetTypeName (Node->Type), Node, OwnerId, - AcpiUtGetNodeName (ParentNode), AcpiUtGetTypeName (ParentNode->Type), - ParentNode)); - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsDeleteChildren - * - * PARAMETERS: ParentNode - Delete this objects children - * - * RETURN: None. - * - * DESCRIPTION: Delete all children of the parent object. In other words, - * deletes a "scope". - * - ******************************************************************************/ - -void -AcpiNsDeleteChildren ( - ACPI_NAMESPACE_NODE *ParentNode) -{ - ACPI_NAMESPACE_NODE *ChildNode; - ACPI_NAMESPACE_NODE *NextNode; - UINT8 Flags; - - - ACPI_FUNCTION_TRACE_PTR (NsDeleteChildren, ParentNode); - - - if (!ParentNode) - { - return_VOID; - } - - /* If no children, all done! */ - - ChildNode = ParentNode->Child; - if (!ChildNode) - { - return_VOID; - } - - /* - * Deallocate all children at this level - */ - do - { - /* Get the things we need */ - - NextNode = ChildNode->Peer; - Flags = ChildNode->Flags; - - /* Grandchildren should have all been deleted already */ - - if (ChildNode->Child) - { - ACPI_ERROR ((AE_INFO, "Found a grandchild! P=%p C=%p", - ParentNode, ChildNode)); - } - - /* Now we can free this child object */ - - ACPI_MEM_TRACKING (AcpiGbl_NsNodeList->TotalFreed++); - - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Object %p, Remaining %X\n", - ChildNode, AcpiGbl_CurrentNodeCount)); - - /* - * Detach an object if there is one, then free the child node - */ - AcpiNsDetachObject (ChildNode); - - /* Now we can delete the node */ - - (void) AcpiOsReleaseObject (AcpiGbl_NamespaceCache, ChildNode); - - /* And move on to the next child in the list */ - - ChildNode = NextNode; - - } while (!(Flags & ANOBJ_END_OF_PEER_LIST)); - - - /* Clear the parent's child pointer */ - - ParentNode->Child = NULL; - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsDeleteNamespaceSubtree - * - * PARAMETERS: ParentNode - Root of the subtree to be deleted - * - * RETURN: None. - * - * DESCRIPTION: Delete a subtree of the namespace. This includes all objects - * stored within the subtree. - * - ******************************************************************************/ - -void -AcpiNsDeleteNamespaceSubtree ( - ACPI_NAMESPACE_NODE *ParentNode) -{ - ACPI_NAMESPACE_NODE *ChildNode = NULL; - UINT32 Level = 1; - - - ACPI_FUNCTION_TRACE (NsDeleteNamespaceSubtree); - - - if (!ParentNode) - { - return_VOID; - } - - /* - * Traverse the tree of objects until we bubble back up - * to where we started. - */ - while (Level > 0) - { - /* Get the next node in this scope (NULL if none) */ - - ChildNode = AcpiNsGetNextNode (ACPI_TYPE_ANY, ParentNode, ChildNode); - if (ChildNode) - { - /* Found a child node - detach any attached object */ - - AcpiNsDetachObject (ChildNode); - - /* Check if this node has any children */ - - if (AcpiNsGetNextNode (ACPI_TYPE_ANY, ChildNode, NULL)) - { - /* - * There is at least one child of this node, - * visit the node - */ - Level++; - ParentNode = ChildNode; - ChildNode = NULL; - } - } - else - { - /* - * No more children of this parent node. - * Move up to the grandparent. - */ - Level--; - - /* - * Now delete all of the children of this parent - * all at the same time. - */ - AcpiNsDeleteChildren (ParentNode); - - /* New "last child" is this parent node */ - - ChildNode = ParentNode; - - /* Move up the tree to the grandparent */ - - ParentNode = AcpiNsGetParentNode (ParentNode); - } - } - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsDeleteNamespaceByOwner - * - * PARAMETERS: OwnerId - All nodes with this owner will be deleted - * - * RETURN: Status - * - * DESCRIPTION: Delete entries within the namespace that are owned by a - * specific ID. Used to delete entire ACPI tables. All - * reference counts are updated. - * - * MUTEX: Locks namespace during deletion walk. - * - ******************************************************************************/ - -void -AcpiNsDeleteNamespaceByOwner ( - ACPI_OWNER_ID OwnerId) -{ - ACPI_NAMESPACE_NODE *ChildNode; - ACPI_NAMESPACE_NODE *DeletionNode; - ACPI_NAMESPACE_NODE *ParentNode; - UINT32 Level; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE_U32 (NsDeleteNamespaceByOwner, OwnerId); - - - if (OwnerId == 0) - { - return_VOID; - } - - /* Lock namespace for possible update */ - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return_VOID; - } - - DeletionNode = NULL; - ParentNode = AcpiGbl_RootNode; - ChildNode = NULL; - Level = 1; - - /* - * Traverse the tree of nodes until we bubble back up - * to where we started. - */ - while (Level > 0) - { - /* - * Get the next child of this parent node. When ChildNode is NULL, - * the first child of the parent is returned - */ - ChildNode = AcpiNsGetNextNode (ACPI_TYPE_ANY, ParentNode, ChildNode); - - if (DeletionNode) - { - AcpiNsDeleteChildren (DeletionNode); - AcpiNsDeleteNode (DeletionNode); - DeletionNode = NULL; - } - - if (ChildNode) - { - if (ChildNode->OwnerId == OwnerId) - { - /* Found a matching child node - detach any attached object */ - - AcpiNsDetachObject (ChildNode); - } - - /* Check if this node has any children */ - - if (AcpiNsGetNextNode (ACPI_TYPE_ANY, ChildNode, NULL)) - { - /* - * There is at least one child of this node, - * visit the node - */ - Level++; - ParentNode = ChildNode; - ChildNode = NULL; - } - else if (ChildNode->OwnerId == OwnerId) - { - DeletionNode = ChildNode; - } - } - else - { - /* - * No more children of this parent node. - * Move up to the grandparent. - */ - Level--; - if (Level != 0) - { - if (ParentNode->OwnerId == OwnerId) - { - DeletionNode = ParentNode; - } - } - - /* New "last child" is this parent node */ - - ChildNode = ParentNode; - - /* Move up the tree to the grandparent */ - - ParentNode = AcpiNsGetParentNode (ParentNode); - } - } - - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return_VOID; -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/namespace/nsdump.c b/sys/contrib/dev/acpica-unix-20061109/namespace/nsdump.c deleted file mode 100644 index 862fae997c..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/namespace/nsdump.c +++ /dev/null @@ -1,826 +0,0 @@ -/****************************************************************************** - * - * Module Name: nsdump - table dumping routines for debug - * $Revision: 1.181 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __NSDUMP_C__ - -#include "acpi.h" -#include "acnamesp.h" -#include "acparser.h" - - -#define _COMPONENT ACPI_NAMESPACE - ACPI_MODULE_NAME ("nsdump") - -/* Local prototypes */ - -#ifdef ACPI_OBSOLETE_FUNCTIONS -void -AcpiNsDumpRootDevices ( - void); - -static ACPI_STATUS -AcpiNsDumpOneDevice ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue); -#endif - - -#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) -/******************************************************************************* - * - * FUNCTION: AcpiNsPrintPathname - * - * PARAMETERS: NumSegments - Number of ACPI name segments - * Pathname - The compressed (internal) path - * - * RETURN: None - * - * DESCRIPTION: Print an object's full namespace pathname - * - ******************************************************************************/ - -void -AcpiNsPrintPathname ( - UINT32 NumSegments, - char *Pathname) -{ - ACPI_NATIVE_UINT i; - - - ACPI_FUNCTION_NAME (NsPrintPathname); - - - if (!(AcpiDbgLevel & ACPI_LV_NAMES) || !(AcpiDbgLayer & ACPI_NAMESPACE)) - { - return; - } - - /* Print the entire name */ - - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "[")); - - while (NumSegments) - { - for (i = 0; i < 4; i++) - { - ACPI_IS_PRINT (Pathname[i]) ? - AcpiOsPrintf ("%c", Pathname[i]) : - AcpiOsPrintf ("?"); - } - - Pathname += ACPI_NAME_SIZE; - NumSegments--; - if (NumSegments) - { - AcpiOsPrintf ("."); - } - } - - AcpiOsPrintf ("]\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsDumpPathname - * - * PARAMETERS: Handle - Object - * Msg - Prefix message - * Level - Desired debug level - * Component - Caller's component ID - * - * RETURN: None - * - * DESCRIPTION: Print an object's full namespace pathname - * Manages allocation/freeing of a pathname buffer - * - ******************************************************************************/ - -void -AcpiNsDumpPathname ( - ACPI_HANDLE Handle, - char *Msg, - UINT32 Level, - UINT32 Component) -{ - - ACPI_FUNCTION_TRACE (NsDumpPathname); - - - /* Do this only if the requested debug level and component are enabled */ - - if (!(AcpiDbgLevel & Level) || !(AcpiDbgLayer & Component)) - { - return_VOID; - } - - /* Convert handle to a full pathname and print it (with supplied message) */ - - AcpiNsPrintNodePathname (Handle, Msg); - AcpiOsPrintf ("\n"); - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsDumpOneObject - * - * PARAMETERS: ObjHandle - Node to be dumped - * Level - Nesting level of the handle - * Context - Passed into WalkNamespace - * ReturnValue - Not used - * - * RETURN: Status - * - * DESCRIPTION: Dump a single Node - * This procedure is a UserFunction called by AcpiNsWalkNamespace. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsDumpOneObject ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue) -{ - ACPI_WALK_INFO *Info = (ACPI_WALK_INFO *) Context; - ACPI_NAMESPACE_NODE *ThisNode; - ACPI_OPERAND_OBJECT *ObjDesc = NULL; - ACPI_OBJECT_TYPE ObjType; - ACPI_OBJECT_TYPE Type; - UINT32 BytesToDump; - UINT32 DbgLevel; - UINT32 i; - - - ACPI_FUNCTION_NAME (NsDumpOneObject); - - - /* Is output enabled? */ - - if (!(AcpiDbgLevel & Info->DebugLevel)) - { - return (AE_OK); - } - - if (!ObjHandle) - { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Null object handle\n")); - return (AE_OK); - } - - ThisNode = AcpiNsMapHandleToNode (ObjHandle); - Type = ThisNode->Type; - - /* Check if the owner matches */ - - if ((Info->OwnerId != ACPI_OWNER_ID_MAX) && - (Info->OwnerId != ThisNode->OwnerId)) - { - return (AE_OK); - } - - if (!(Info->DisplayType & ACPI_DISPLAY_SHORT)) - { - /* Indent the object according to the level */ - - AcpiOsPrintf ("%2d%*s", (UINT32) Level - 1, (int) Level * 2, " "); - - /* Check the node type and name */ - - if (Type > ACPI_TYPE_LOCAL_MAX) - { - ACPI_WARNING ((AE_INFO, "Invalid ACPI Object Type %08X", Type)); - } - - if (!AcpiUtValidAcpiName (ThisNode->Name.Integer)) - { - ThisNode->Name.Integer = AcpiUtRepairName (ThisNode->Name.Ascii); - - ACPI_WARNING ((AE_INFO, "Invalid ACPI Name %08X", - ThisNode->Name.Integer)); - } - - AcpiOsPrintf ("%4.4s", AcpiUtGetNodeName (ThisNode)); - } - - /* - * Now we can print out the pertinent information - */ - AcpiOsPrintf (" %-12s %p %2.2X ", - AcpiUtGetTypeName (Type), ThisNode, ThisNode->OwnerId); - - DbgLevel = AcpiDbgLevel; - AcpiDbgLevel = 0; - ObjDesc = AcpiNsGetAttachedObject (ThisNode); - AcpiDbgLevel = DbgLevel; - - /* Temp nodes are those nodes created by a control method */ - - if (ThisNode->Flags & ANOBJ_TEMPORARY) - { - AcpiOsPrintf ("(T) "); - } - - switch (Info->DisplayType & ACPI_DISPLAY_MASK) - { - case ACPI_DISPLAY_SUMMARY: - - if (!ObjDesc) - { - /* No attached object, we are done */ - - AcpiOsPrintf ("\n"); - return (AE_OK); - } - - switch (Type) - { - case ACPI_TYPE_PROCESSOR: - - AcpiOsPrintf ("ID %X Len %.4X Addr %p\n", - ObjDesc->Processor.ProcId, ObjDesc->Processor.Length, - (char *) ObjDesc->Processor.Address); - break; - - - case ACPI_TYPE_DEVICE: - - AcpiOsPrintf ("Notify Object: %p\n", ObjDesc); - break; - - - case ACPI_TYPE_METHOD: - - AcpiOsPrintf ("Args %X Len %.4X Aml %p\n", - (UINT32) ObjDesc->Method.ParamCount, - ObjDesc->Method.AmlLength, ObjDesc->Method.AmlStart); - break; - - - case ACPI_TYPE_INTEGER: - - AcpiOsPrintf ("= %8.8X%8.8X\n", - ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value)); - break; - - - case ACPI_TYPE_PACKAGE: - - if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID) - { - AcpiOsPrintf ("Elements %.2X\n", - ObjDesc->Package.Count); - } - else - { - AcpiOsPrintf ("[Length not yet evaluated]\n"); - } - break; - - - case ACPI_TYPE_BUFFER: - - if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID) - { - AcpiOsPrintf ("Len %.2X", - ObjDesc->Buffer.Length); - - /* Dump some of the buffer */ - - if (ObjDesc->Buffer.Length > 0) - { - AcpiOsPrintf (" ="); - for (i = 0; (i < ObjDesc->Buffer.Length && i < 12); i++) - { - AcpiOsPrintf (" %.2hX", ObjDesc->Buffer.Pointer[i]); - } - } - AcpiOsPrintf ("\n"); - } - else - { - AcpiOsPrintf ("[Length not yet evaluated]\n"); - } - break; - - - case ACPI_TYPE_STRING: - - AcpiOsPrintf ("Len %.2X ", ObjDesc->String.Length); - AcpiUtPrintString (ObjDesc->String.Pointer, 32); - AcpiOsPrintf ("\n"); - break; - - - case ACPI_TYPE_REGION: - - AcpiOsPrintf ("[%s]", - AcpiUtGetRegionName (ObjDesc->Region.SpaceId)); - if (ObjDesc->Region.Flags & AOPOBJ_DATA_VALID) - { - AcpiOsPrintf (" Addr %8.8X%8.8X Len %.4X\n", - ACPI_FORMAT_UINT64 (ObjDesc->Region.Address), - ObjDesc->Region.Length); - } - else - { - AcpiOsPrintf (" [Address/Length not yet evaluated]\n"); - } - break; - - - case ACPI_TYPE_LOCAL_REFERENCE: - - AcpiOsPrintf ("[%s]\n", - AcpiPsGetOpcodeName (ObjDesc->Reference.Opcode)); - break; - - - case ACPI_TYPE_BUFFER_FIELD: - - if (ObjDesc->BufferField.BufferObj && - ObjDesc->BufferField.BufferObj->Buffer.Node) - { - AcpiOsPrintf ("Buf [%4.4s]", - AcpiUtGetNodeName (ObjDesc->BufferField.BufferObj->Buffer.Node)); - } - break; - - - case ACPI_TYPE_LOCAL_REGION_FIELD: - - AcpiOsPrintf ("Rgn [%4.4s]", - AcpiUtGetNodeName (ObjDesc->CommonField.RegionObj->Region.Node)); - break; - - - case ACPI_TYPE_LOCAL_BANK_FIELD: - - AcpiOsPrintf ("Rgn [%4.4s] Bnk [%4.4s]", - AcpiUtGetNodeName (ObjDesc->CommonField.RegionObj->Region.Node), - AcpiUtGetNodeName (ObjDesc->BankField.BankObj->CommonField.Node)); - break; - - - case ACPI_TYPE_LOCAL_INDEX_FIELD: - - AcpiOsPrintf ("Idx [%4.4s] Dat [%4.4s]", - AcpiUtGetNodeName (ObjDesc->IndexField.IndexObj->CommonField.Node), - AcpiUtGetNodeName (ObjDesc->IndexField.DataObj->CommonField.Node)); - break; - - - case ACPI_TYPE_LOCAL_ALIAS: - case ACPI_TYPE_LOCAL_METHOD_ALIAS: - - AcpiOsPrintf ("Target %4.4s (%p)\n", - AcpiUtGetNodeName (ObjDesc), ObjDesc); - break; - - default: - - AcpiOsPrintf ("Object %p\n", ObjDesc); - break; - } - - /* Common field handling */ - - switch (Type) - { - case ACPI_TYPE_BUFFER_FIELD: - case ACPI_TYPE_LOCAL_REGION_FIELD: - case ACPI_TYPE_LOCAL_BANK_FIELD: - case ACPI_TYPE_LOCAL_INDEX_FIELD: - - AcpiOsPrintf (" Off %.3X Len %.2X Acc %.2hd\n", - (ObjDesc->CommonField.BaseByteOffset * 8) - + ObjDesc->CommonField.StartFieldBitOffset, - ObjDesc->CommonField.BitLength, - ObjDesc->CommonField.AccessByteWidth); - break; - - default: - break; - } - break; - - - case ACPI_DISPLAY_OBJECTS: - - AcpiOsPrintf ("O:%p", ObjDesc); - if (!ObjDesc) - { - /* No attached object, we are done */ - - AcpiOsPrintf ("\n"); - return (AE_OK); - } - - AcpiOsPrintf ("(R%d)", ObjDesc->Common.ReferenceCount); - - switch (Type) - { - case ACPI_TYPE_METHOD: - - /* Name is a Method and its AML offset/length are set */ - - AcpiOsPrintf (" M:%p-%X\n", ObjDesc->Method.AmlStart, - ObjDesc->Method.AmlLength); - break; - - case ACPI_TYPE_INTEGER: - - AcpiOsPrintf (" I:%8.8X8.8%X\n", - ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value)); - break; - - case ACPI_TYPE_STRING: - - AcpiOsPrintf (" S:%p-%X\n", ObjDesc->String.Pointer, - ObjDesc->String.Length); - break; - - case ACPI_TYPE_BUFFER: - - AcpiOsPrintf (" B:%p-%X\n", ObjDesc->Buffer.Pointer, - ObjDesc->Buffer.Length); - break; - - default: - - AcpiOsPrintf ("\n"); - break; - } - break; - - - default: - AcpiOsPrintf ("\n"); - break; - } - - /* If debug turned off, done */ - - if (!(AcpiDbgLevel & ACPI_LV_VALUES)) - { - return (AE_OK); - } - - - /* If there is an attached object, display it */ - - DbgLevel = AcpiDbgLevel; - AcpiDbgLevel = 0; - ObjDesc = AcpiNsGetAttachedObject (ThisNode); - AcpiDbgLevel = DbgLevel; - - /* Dump attached objects */ - - while (ObjDesc) - { - ObjType = ACPI_TYPE_INVALID; - AcpiOsPrintf ("Attached Object %p: ", ObjDesc); - - /* Decode the type of attached object and dump the contents */ - - switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc)) - { - case ACPI_DESC_TYPE_NAMED: - - AcpiOsPrintf ("(Ptr to Node)\n"); - BytesToDump = sizeof (ACPI_NAMESPACE_NODE); - ACPI_DUMP_BUFFER (ObjDesc, BytesToDump); - break; - - case ACPI_DESC_TYPE_OPERAND: - - ObjType = ACPI_GET_OBJECT_TYPE (ObjDesc); - - if (ObjType > ACPI_TYPE_LOCAL_MAX) - { - AcpiOsPrintf ("(Ptr to ACPI Object type %X [UNKNOWN])\n", - ObjType); - BytesToDump = 32; - } - else - { - AcpiOsPrintf ("(Ptr to ACPI Object type %X [%s])\n", - ObjType, AcpiUtGetTypeName (ObjType)); - BytesToDump = sizeof (ACPI_OPERAND_OBJECT); - } - - ACPI_DUMP_BUFFER (ObjDesc, BytesToDump); - break; - - default: - - break; - } - - /* If value is NOT an internal object, we are done */ - - if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND) - { - goto Cleanup; - } - - /* - * Valid object, get the pointer to next level, if any - */ - switch (ObjType) - { - case ACPI_TYPE_BUFFER: - case ACPI_TYPE_STRING: - /* - * NOTE: takes advantage of common fields between string/buffer - */ - BytesToDump = ObjDesc->String.Length; - ObjDesc = (void *) ObjDesc->String.Pointer; - AcpiOsPrintf ( "(Buffer/String pointer %p length %X)\n", - ObjDesc, BytesToDump); - ACPI_DUMP_BUFFER (ObjDesc, BytesToDump); - goto Cleanup; - - case ACPI_TYPE_BUFFER_FIELD: - ObjDesc = (ACPI_OPERAND_OBJECT *) ObjDesc->BufferField.BufferObj; - break; - - case ACPI_TYPE_PACKAGE: - ObjDesc = (void *) ObjDesc->Package.Elements; - break; - - case ACPI_TYPE_METHOD: - ObjDesc = (void *) ObjDesc->Method.AmlStart; - break; - - case ACPI_TYPE_LOCAL_REGION_FIELD: - ObjDesc = (void *) ObjDesc->Field.RegionObj; - break; - - case ACPI_TYPE_LOCAL_BANK_FIELD: - ObjDesc = (void *) ObjDesc->BankField.RegionObj; - break; - - case ACPI_TYPE_LOCAL_INDEX_FIELD: - ObjDesc = (void *) ObjDesc->IndexField.IndexObj; - break; - - default: - goto Cleanup; - } - - ObjType = ACPI_TYPE_INVALID; /* Terminate loop after next pass */ - } - -Cleanup: - AcpiOsPrintf ("\n"); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsDumpObjects - * - * PARAMETERS: Type - Object type to be dumped - * DisplayType - 0 or ACPI_DISPLAY_SUMMARY - * MaxDepth - Maximum depth of dump. Use ACPI_UINT32_MAX - * for an effectively unlimited depth. - * OwnerId - Dump only objects owned by this ID. Use - * ACPI_UINT32_MAX to match all owners. - * StartHandle - Where in namespace to start/end search - * - * RETURN: None - * - * DESCRIPTION: Dump typed objects within the loaded namespace. - * Uses AcpiNsWalkNamespace in conjunction with AcpiNsDumpOneObject. - * - ******************************************************************************/ - -void -AcpiNsDumpObjects ( - ACPI_OBJECT_TYPE Type, - UINT8 DisplayType, - UINT32 MaxDepth, - ACPI_OWNER_ID OwnerId, - ACPI_HANDLE StartHandle) -{ - ACPI_WALK_INFO Info; - - - ACPI_FUNCTION_ENTRY (); - - - Info.DebugLevel = ACPI_LV_TABLES; - Info.OwnerId = OwnerId; - Info.DisplayType = DisplayType; - - (void) AcpiNsWalkNamespace (Type, StartHandle, MaxDepth, - ACPI_NS_WALK_NO_UNLOCK | ACPI_NS_WALK_TEMP_NODES, - AcpiNsDumpOneObject, (void *) &Info, NULL); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsDumpEntry - * - * PARAMETERS: Handle - Node to be dumped - * DebugLevel - Output level - * - * RETURN: None - * - * DESCRIPTION: Dump a single Node - * - ******************************************************************************/ - -void -AcpiNsDumpEntry ( - ACPI_HANDLE Handle, - UINT32 DebugLevel) -{ - ACPI_WALK_INFO Info; - - - ACPI_FUNCTION_ENTRY (); - - - Info.DebugLevel = DebugLevel; - Info.OwnerId = ACPI_OWNER_ID_MAX; - Info.DisplayType = ACPI_DISPLAY_SUMMARY; - - (void) AcpiNsDumpOneObject (Handle, 1, &Info, NULL); -} - - -#ifdef ACPI_ASL_COMPILER -/******************************************************************************* - * - * FUNCTION: AcpiNsDumpTables - * - * PARAMETERS: SearchBase - Root of subtree to be dumped, or - * NS_ALL to dump the entire namespace - * MaxDepth - Maximum depth of dump. Use INT_MAX - * for an effectively unlimited depth. - * - * RETURN: None - * - * DESCRIPTION: Dump the name space, or a portion of it. - * - ******************************************************************************/ - -void -AcpiNsDumpTables ( - ACPI_HANDLE SearchBase, - UINT32 MaxDepth) -{ - ACPI_HANDLE SearchHandle = SearchBase; - - - ACPI_FUNCTION_TRACE (NsDumpTables); - - - if (!AcpiGbl_RootNode) - { - /* - * If the name space has not been initialized, - * there is nothing to dump. - */ - ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "namespace not initialized!\n")); - return_VOID; - } - - if (ACPI_NS_ALL == SearchBase) - { - /* Entire namespace */ - - SearchHandle = AcpiGbl_RootNode; - ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "\\\n")); - } - - AcpiNsDumpObjects (ACPI_TYPE_ANY, ACPI_DISPLAY_OBJECTS, MaxDepth, - ACPI_OWNER_ID_MAX, SearchHandle); - return_VOID; -} -#endif -#endif - diff --git a/sys/contrib/dev/acpica-unix-20061109/namespace/nsdumpdv.c b/sys/contrib/dev/acpica-unix-20061109/namespace/nsdumpdv.c deleted file mode 100644 index c74b4c386f..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/namespace/nsdumpdv.c +++ /dev/null @@ -1,235 +0,0 @@ -/****************************************************************************** - * - * Module Name: nsdump - table dumping routines for debug - * $Revision: 1.19 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __NSDUMPDV_C__ - -#include "acpi.h" - - -/* TBD: This entire module is apparently obsolete and should be removed */ - -#define _COMPONENT ACPI_NAMESPACE - ACPI_MODULE_NAME ("nsdumpdv") - -#ifdef ACPI_OBSOLETE_FUNCTIONS -#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) - -#include "acnamesp.h" - -/******************************************************************************* - * - * FUNCTION: AcpiNsDumpOneDevice - * - * PARAMETERS: Handle - Node to be dumped - * Level - Nesting level of the handle - * Context - Passed into WalkNamespace - * ReturnValue - Not used - * - * RETURN: Status - * - * DESCRIPTION: Dump a single Node that represents a device - * This procedure is a UserFunction called by AcpiNsWalkNamespace. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiNsDumpOneDevice ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue) -{ - ACPI_BUFFER Buffer; - ACPI_DEVICE_INFO *Info; - ACPI_STATUS Status; - UINT32 i; - - - ACPI_FUNCTION_NAME (NsDumpOneDevice); - - - Status = AcpiNsDumpOneObject (ObjHandle, Level, Context, ReturnValue); - - Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - Status = AcpiGetObjectInfo (ObjHandle, &Buffer); - if (ACPI_SUCCESS (Status)) - { - Info = Buffer.Pointer; - for (i = 0; i < Level; i++) - { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " ")); - } - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, - " HID: %s, ADR: %8.8X%8.8X, Status: %X\n", - Info->HardwareId.Value, ACPI_FORMAT_UINT64 (Info->Address), - Info->CurrentStatus)); - ACPI_FREE (Info); - } - - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsDumpRootDevices - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Dump all objects of type "device" - * - ******************************************************************************/ - -void -AcpiNsDumpRootDevices ( - void) -{ - ACPI_HANDLE SysBusHandle; - ACPI_STATUS Status; - - - ACPI_FUNCTION_NAME (NsDumpRootDevices); - - - /* Only dump the table if tracing is enabled */ - - if (!(ACPI_LV_TABLES & AcpiDbgLevel)) - { - return; - } - - Status = AcpiGetHandle (NULL, ACPI_NS_SYSTEM_BUS, &SysBusHandle); - if (ACPI_FAILURE (Status)) - { - return; - } - - ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, - "Display of all devices in the namespace:\n")); - - Status = AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, SysBusHandle, - ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK, - AcpiNsDumpOneDevice, NULL, NULL); -} - -#endif -#endif - - diff --git a/sys/contrib/dev/acpica-unix-20061109/namespace/nseval.c b/sys/contrib/dev/acpica-unix-20061109/namespace/nseval.c deleted file mode 100644 index 37fac9ed84..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/namespace/nseval.c +++ /dev/null @@ -1,316 +0,0 @@ -/******************************************************************************* - * - * Module Name: nseval - Object evaluation, includes control method execution - * $Revision: 1.143 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __NSEVAL_C__ - -#include "acpi.h" -#include "acparser.h" -#include "acinterp.h" -#include "acnamesp.h" - - -#define _COMPONENT ACPI_NAMESPACE - ACPI_MODULE_NAME ("nseval") - - -/******************************************************************************* - * - * FUNCTION: AcpiNsEvaluate - * - * PARAMETERS: Info - Evaluation info block, contains: - * PrefixNode - Prefix or Method/Object Node to execute - * Pathname - Name of method to execute, If NULL, the - * Node is the object to execute - * Parameters - List of parameters to pass to the method, - * terminated by NULL. Params itself may be - * NULL if no parameters are being passed. - * ReturnObject - Where to put method's return value (if - * any). If NULL, no value is returned. - * ParameterType - Type of Parameter list - * ReturnObject - Where to put method's return value (if - * any). If NULL, no value is returned. - * Flags - ACPI_IGNORE_RETURN_VALUE to delete return - * - * RETURN: Status - * - * DESCRIPTION: Execute a control method or return the current value of an - * ACPI namespace object. - * - * MUTEX: Locks interpreter - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsEvaluate ( - ACPI_EVALUATE_INFO *Info) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (NsEvaluate); - - - if (!Info) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Initialize the return value to an invalid object */ - - Info->ReturnObject = NULL; - - /* - * Get the actual namespace node for the target object. Handles these cases: - * - * 1) Null node, Pathname (absolute path) - * 2) Node, Pathname (path relative to Node) - * 3) Node, Null Pathname - */ - Status = AcpiNsGetNode (Info->PrefixNode, Info->Pathname, - ACPI_NS_NO_UPSEARCH, &Info->ResolvedNode); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * For a method alias, we must grab the actual method node so that proper - * scoping context will be established before execution. - */ - if (AcpiNsGetType (Info->ResolvedNode) == ACPI_TYPE_LOCAL_METHOD_ALIAS) - { - Info->ResolvedNode = - ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Info->ResolvedNode->Object); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "%s [%p] Value %p\n", Info->Pathname, - Info->ResolvedNode, AcpiNsGetAttachedObject (Info->ResolvedNode))); - - /* - * Two major cases here: - * - * 1) The object is a control method -- execute it - * 2) The object is not a method -- just return it's current value - */ - if (AcpiNsGetType (Info->ResolvedNode) == ACPI_TYPE_METHOD) - { - /* - * 1) Object is a control method - execute it - */ - - /* Verify that there is a method object associated with this node */ - - Info->ObjDesc = AcpiNsGetAttachedObject (Info->ResolvedNode); - if (!Info->ObjDesc) - { - ACPI_ERROR ((AE_INFO, "Control method has no attached sub-object")); - return_ACPI_STATUS (AE_NULL_OBJECT); - } - - ACPI_DUMP_PATHNAME (Info->ResolvedNode, "Execute Method:", - ACPI_LV_INFO, _COMPONENT); - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Method at AML address %p Length %X\n", - Info->ObjDesc->Method.AmlStart + 1, - Info->ObjDesc->Method.AmlLength - 1)); - - /* - * Any namespace deletion must acquire both the namespace and - * interpreter locks to ensure that no thread is using the portion of - * the namespace that is being deleted. - * - * Execute the method via the interpreter. The interpreter is locked - * here before calling into the AML parser - */ - AcpiExEnterInterpreter (); - Status = AcpiPsExecuteMethod (Info); - AcpiExExitInterpreter (); - } - else - { - /* - * 2) Object is not a method, return its current value - */ - - /* - * Objects require additional resolution steps (e.g., the Node may be - * a field that must be read, etc.) -- we can't just grab the object - * out of the node. - * - * Use ResolveNodeToValue() to get the associated value. - * - * NOTE: we can get away with passing in NULL for a walk state because - * ResolvedNode is guaranteed to not be a reference to either a method - * local or a method argument (because this interface is never called - * from a running method.) - * - * Even though we do not directly invoke the interpreter for object - * resolution, we must lock it because we could access an opregion. - * The opregion access code assumes that the interpreter is locked. - */ - AcpiExEnterInterpreter (); - - /* Function has a strange interface */ - - Status = AcpiExResolveNodeToValue (&Info->ResolvedNode, NULL); - AcpiExExitInterpreter (); - - /* - * If AcpiExResolveNodeToValue() succeeded, the return value was placed - * in ResolvedNode. - */ - if (ACPI_SUCCESS (Status)) - { - Status = AE_CTRL_RETURN_VALUE; - Info->ReturnObject = - ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Info->ResolvedNode); - - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Returning object %p [%s]\n", - Info->ReturnObject, - AcpiUtGetObjectTypeName (Info->ReturnObject))); - } - } - - /* - * Check if there is a return value that must be dealt with - */ - if (Status == AE_CTRL_RETURN_VALUE) - { - /* If caller does not want the return value, delete it */ - - if (Info->Flags & ACPI_IGNORE_RETURN_VALUE) - { - AcpiUtRemoveReference (Info->ReturnObject); - Info->ReturnObject = NULL; - } - - /* Map AE_CTRL_RETURN_VALUE to AE_OK, we are done with it */ - - Status = AE_OK; - } - - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, - "*** Completed evaluation of object %s ***\n", Info->Pathname)); - - /* - * Namespace was unlocked by the handling AcpiNs* function, so we - * just return - */ - return_ACPI_STATUS (Status); -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/namespace/nsinit.c b/sys/contrib/dev/acpica-unix-20061109/namespace/nsinit.c deleted file mode 100644 index 12e1ac5d32..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/namespace/nsinit.c +++ /dev/null @@ -1,701 +0,0 @@ -/****************************************************************************** - * - * Module Name: nsinit - namespace initialization - * $Revision: 1.85 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __NSXFINIT_C__ - -#include "acpi.h" -#include "acnamesp.h" -#include "acdispat.h" -#include "acinterp.h" - -#define _COMPONENT ACPI_NAMESPACE - ACPI_MODULE_NAME ("nsinit") - -/* Local prototypes */ - -static ACPI_STATUS -AcpiNsInitOneObject ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue); - -static ACPI_STATUS -AcpiNsInitOneDevice ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue); - -static ACPI_STATUS -AcpiNsFindIniMethods ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue); - - -/******************************************************************************* - * - * FUNCTION: AcpiNsInitializeObjects - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Walk the entire namespace and perform any necessary - * initialization on the objects found therein - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsInitializeObjects ( - void) -{ - ACPI_STATUS Status; - ACPI_INIT_WALK_INFO Info; - - - ACPI_FUNCTION_TRACE (NsInitializeObjects); - - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "**** Starting initialization of namespace objects ****\n")); - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, - "Completing Region/Field/Buffer/Package initialization:")); - - /* Set all init info to zero */ - - ACPI_MEMSET (&Info, 0, sizeof (ACPI_INIT_WALK_INFO)); - - /* Walk entire namespace from the supplied root */ - - Status = AcpiWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, AcpiNsInitOneObject, - &Info, NULL); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, "During WalkNamespace")); - } - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, - "\nInitialized %hd/%hd Regions %hd/%hd Fields %hd/%hd Buffers %hd/%hd Packages (%hd nodes)\n", - Info.OpRegionInit, Info.OpRegionCount, - Info.FieldInit, Info.FieldCount, - Info.BufferInit, Info.BufferCount, - Info.PackageInit, Info.PackageCount, Info.ObjectCount)); - - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "%hd Control Methods found\n", Info.MethodCount)); - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "%hd Op Regions found\n", Info.OpRegionCount)); - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsInitializeDevices - * - * PARAMETERS: None - * - * RETURN: ACPI_STATUS - * - * DESCRIPTION: Walk the entire namespace and initialize all ACPI devices. - * This means running _INI on all present devices. - * - * Note: We install PCI config space handler on region access, - * not here. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsInitializeDevices ( - void) -{ - ACPI_STATUS Status; - ACPI_DEVICE_WALK_INFO Info; - - - ACPI_FUNCTION_TRACE (NsInitializeDevices); - - - /* Init counters */ - - Info.DeviceCount = 0; - Info.Num_STA = 0; - Info.Num_INI = 0; - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, - "Initializing Device/Processor/Thermal objects by executing _INI methods:")); - - /* Tree analysis: find all subtrees that contain _INI methods */ - - Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, FALSE, AcpiNsFindIniMethods, &Info, NULL); - if (ACPI_FAILURE (Status)) - { - goto ErrorExit; - } - - /* Allocate the evaluation information block */ - - Info.EvaluateInfo = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EVALUATE_INFO)); - if (!Info.EvaluateInfo) - { - Status = AE_NO_MEMORY; - goto ErrorExit; - } - - /* Walk namespace to execute all _INIs on present devices */ - - Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, FALSE, AcpiNsInitOneDevice, &Info, NULL); - - ACPI_FREE (Info.EvaluateInfo); - if (ACPI_FAILURE (Status)) - { - goto ErrorExit; - } - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, - "\nExecuted %hd _INI methods requiring %hd _STA executions (examined %hd objects)\n", - Info.Num_INI, Info.Num_STA, Info.DeviceCount)); - - return_ACPI_STATUS (Status); - - -ErrorExit: - ACPI_EXCEPTION ((AE_INFO, Status, "During device initialization")); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsInitOneObject - * - * PARAMETERS: ObjHandle - Node - * Level - Current nesting level - * Context - Points to a init info struct - * ReturnValue - Not used - * - * RETURN: Status - * - * DESCRIPTION: Callback from AcpiWalkNamespace. Invoked for every object - * within the namespace. - * - * Currently, the only objects that require initialization are: - * 1) Methods - * 2) Op Regions - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiNsInitOneObject ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue) -{ - ACPI_OBJECT_TYPE Type; - ACPI_STATUS Status = AE_OK; - ACPI_INIT_WALK_INFO *Info = (ACPI_INIT_WALK_INFO *) Context; - ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; - ACPI_OPERAND_OBJECT *ObjDesc; - - - ACPI_FUNCTION_NAME (NsInitOneObject); - - - Info->ObjectCount++; - - /* And even then, we are only interested in a few object types */ - - Type = AcpiNsGetType (ObjHandle); - ObjDesc = AcpiNsGetAttachedObject (Node); - if (!ObjDesc) - { - return (AE_OK); - } - - /* Increment counters for object types we are looking for */ - - switch (Type) - { - case ACPI_TYPE_REGION: - Info->OpRegionCount++; - break; - - case ACPI_TYPE_BUFFER_FIELD: - Info->FieldCount++; - break; - - case ACPI_TYPE_BUFFER: - Info->BufferCount++; - break; - - case ACPI_TYPE_PACKAGE: - Info->PackageCount++; - break; - - default: - - /* No init required, just exit now */ - return (AE_OK); - } - - /* - * If the object is already initialized, nothing else to do - */ - if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID) - { - return (AE_OK); - } - - /* - * Must lock the interpreter before executing AML code - */ - AcpiExEnterInterpreter (); - - /* - * Each of these types can contain executable AML code within the - * declaration. - */ - switch (Type) - { - case ACPI_TYPE_REGION: - - Info->OpRegionInit++; - Status = AcpiDsGetRegionArguments (ObjDesc); - break; - - case ACPI_TYPE_BUFFER_FIELD: - - Info->FieldInit++; - Status = AcpiDsGetBufferFieldArguments (ObjDesc); - break; - - case ACPI_TYPE_BUFFER: - - Info->BufferInit++; - Status = AcpiDsGetBufferArguments (ObjDesc); - break; - - case ACPI_TYPE_PACKAGE: - - Info->PackageInit++; - Status = AcpiDsGetPackageArguments (ObjDesc); - break; - - default: - /* No other types can get here */ - break; - } - - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Could not execute arguments for [%4.4s] (%s)", - AcpiUtGetNodeName (Node), AcpiUtGetTypeName (Type))); - } - - /* - * Print a dot for each object unless we are going to print the entire - * pathname - */ - if (!(AcpiDbgLevel & ACPI_LV_INIT_NAMES)) - { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, ".")); - } - - /* - * We ignore errors from above, and always return OK, since we don't want - * to abort the walk on any single error. - */ - AcpiExExitInterpreter (); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsFindIniMethods - * - * PARAMETERS: ACPI_WALK_CALLBACK - * - * RETURN: ACPI_STATUS - * - * DESCRIPTION: Called during namespace walk. Finds objects named _INI under - * device/processor/thermal objects, and marks the entire subtree - * with a SUBTREE_HAS_INI flag. This flag is used during the - * subsequent device initialization walk to avoid entire subtrees - * that do not contain an _INI. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiNsFindIniMethods ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue) -{ - ACPI_DEVICE_WALK_INFO *Info = ACPI_CAST_PTR (ACPI_DEVICE_WALK_INFO, Context); - ACPI_NAMESPACE_NODE *Node; - ACPI_NAMESPACE_NODE *ParentNode; - - - /* Keep count of device/processor/thermal objects */ - - Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjHandle); - if ((Node->Type == ACPI_TYPE_DEVICE) || - (Node->Type == ACPI_TYPE_PROCESSOR) || - (Node->Type == ACPI_TYPE_THERMAL)) - { - Info->DeviceCount++; - return (AE_OK); - } - - /* We are only looking for methods named _INI */ - - if (!ACPI_COMPARE_NAME (Node->Name.Ascii, METHOD_NAME__INI)) - { - return (AE_OK); - } - - /* - * The only _INI methods that we care about are those that are - * present under Device, Processor, and Thermal objects. - */ - ParentNode = AcpiNsGetParentNode (Node); - switch (ParentNode->Type) - { - case ACPI_TYPE_DEVICE: - case ACPI_TYPE_PROCESSOR: - case ACPI_TYPE_THERMAL: - - /* Mark parent and bubble up the INI present flag to the root */ - - while (ParentNode) - { - ParentNode->Flags |= ANOBJ_SUBTREE_HAS_INI; - ParentNode = AcpiNsGetParentNode (ParentNode); - } - break; - - default: - break; - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsInitOneDevice - * - * PARAMETERS: ACPI_WALK_CALLBACK - * - * RETURN: ACPI_STATUS - * - * DESCRIPTION: This is called once per device soon after ACPI is enabled - * to initialize each device. It determines if the device is - * present, and if so, calls _INI. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiNsInitOneDevice ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue) -{ - ACPI_DEVICE_WALK_INFO *WalkInfo = ACPI_CAST_PTR (ACPI_DEVICE_WALK_INFO, Context); - ACPI_EVALUATE_INFO *Info = WalkInfo->EvaluateInfo; - UINT32 Flags; - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *DeviceNode; - - - ACPI_FUNCTION_TRACE (NsInitOneDevice); - - - /* We are interested in Devices, Processors and ThermalZones only */ - - DeviceNode = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjHandle); - if ((DeviceNode->Type != ACPI_TYPE_DEVICE) && - (DeviceNode->Type != ACPI_TYPE_PROCESSOR) && - (DeviceNode->Type != ACPI_TYPE_THERMAL)) - { - return_ACPI_STATUS (AE_OK); - } - - /* - * Because of an earlier namespace analysis, all subtrees that contain an - * _INI method are tagged. - * - * If this device subtree does not contain any _INI methods, we - * can exit now and stop traversing this entire subtree. - */ - if (!(DeviceNode->Flags & ANOBJ_SUBTREE_HAS_INI)) - { - return_ACPI_STATUS (AE_CTRL_DEPTH); - } - - /* - * Run _STA to determine if this device is present and functioning. We - * must know this information for two important reasons (from ACPI spec): - * - * 1) We can only run _INI if the device is present. - * 2) We must abort the device tree walk on this subtree if the device is - * not present and is not functional (we will not examine the children) - * - * The _STA method is not required to be present under the device, we - * assume the device is present if _STA does not exist. - */ - ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname ( - ACPI_TYPE_METHOD, DeviceNode, METHOD_NAME__STA)); - - Status = AcpiUtExecute_STA (DeviceNode, &Flags); - if (ACPI_FAILURE (Status)) - { - /* Ignore error and move on to next device */ - - return_ACPI_STATUS (AE_OK); - } - - /* - * Flags == -1 means that _STA was not found. In this case, we assume that - * the device is both present and functional. - * - * From the ACPI spec, description of _STA: - * - * "If a device object (including the processor object) does not have an - * _STA object, then OSPM assumes that all of the above bits are set (in - * other words, the device is present, ..., and functioning)" - */ - if (Flags != ACPI_UINT32_MAX) - { - WalkInfo->Num_STA++; - } - - /* - * Examine the PRESENT and FUNCTIONING status bits - * - * Note: ACPI spec does not seem to specify behavior for the present but - * not functioning case, so we assume functioning if present. - */ - if (!(Flags & ACPI_STA_DEVICE_PRESENT)) - { - /* Device is not present, we must examine the Functioning bit */ - - if (Flags & ACPI_STA_DEVICE_FUNCTIONING) - { - /* - * Device is not present but is "functioning". In this case, - * we will not run _INI, but we continue to examine the children - * of this device. - * - * From the ACPI spec, description of _STA: (Note - no mention - * of whether to run _INI or not on the device in question) - * - * "_STA may return bit 0 clear (not present) with bit 3 set - * (device is functional). This case is used to indicate a valid - * device for which no device driver should be loaded (for example, - * a bridge device.) Children of this device may be present and - * valid. OSPM should continue enumeration below a device whose - * _STA returns this bit combination" - */ - return_ACPI_STATUS (AE_OK); - } - else - { - /* - * Device is not present and is not functioning. We must abort the - * walk of this subtree immediately -- don't look at the children - * of such a device. - * - * From the ACPI spec, description of _INI: - * - * "If the _STA method indicates that the device is not present, - * OSPM will not run the _INI and will not examine the children - * of the device for _INI methods" - */ - return_ACPI_STATUS (AE_CTRL_DEPTH); - } - } - - /* - * The device is present or is assumed present if no _STA exists. - * Run the _INI if it exists (not required to exist) - * - * Note: We know there is an _INI within this subtree, but it may not be - * under this particular device, it may be lower in the branch. - */ - ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname ( - ACPI_TYPE_METHOD, DeviceNode, METHOD_NAME__INI)); - - Info->PrefixNode = DeviceNode; - Info->Pathname = METHOD_NAME__INI; - Info->Parameters = NULL; - Info->ParameterType = ACPI_PARAM_ARGS; - Info->Flags = ACPI_IGNORE_RETURN_VALUE; - - Status = AcpiNsEvaluate (Info); - if (ACPI_SUCCESS (Status)) - { - WalkInfo->Num_INI++; - - if ((AcpiDbgLevel <= ACPI_LV_ALL_EXCEPTIONS) && - (!(AcpiDbgLevel & ACPI_LV_INFO))) - { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, ".")); - } - } - -#ifdef ACPI_DEBUG_OUTPUT - else if (Status != AE_NOT_FOUND) - { - /* Ignore error and move on to next device */ - - char *ScopeName = AcpiNsGetExternalPathname (Info->ResolvedNode); - - ACPI_EXCEPTION ((AE_INFO, Status, "during %s._INI execution", - ScopeName)); - ACPI_FREE (ScopeName); - } -#endif - - /* Ignore errors from above */ - - Status = AE_OK; - - /* - * The _INI method has been run if present; call the Global Initialization - * Handler for this device. - */ - if (AcpiGbl_InitHandler) - { - Status = AcpiGbl_InitHandler (DeviceNode, ACPI_INIT_DEVICE_INI); - } - - return_ACPI_STATUS (Status); -} diff --git a/sys/contrib/dev/acpica-unix-20061109/namespace/nsload.c b/sys/contrib/dev/acpica-unix-20061109/namespace/nsload.c deleted file mode 100644 index 28acb7ee31..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/namespace/nsload.c +++ /dev/null @@ -1,429 +0,0 @@ -/****************************************************************************** - * - * Module Name: nsload - namespace loading/expanding/contracting procedures - * $Revision: 1.79 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __NSLOAD_C__ - -#include "acpi.h" -#include "acnamesp.h" -#include "acdispat.h" -#include "actables.h" - - -#define _COMPONENT ACPI_NAMESPACE - ACPI_MODULE_NAME ("nsload") - -/* Local prototypes */ - -#ifdef ACPI_FUTURE_IMPLEMENTATION -ACPI_STATUS -AcpiNsUnloadNamespace ( - ACPI_HANDLE Handle); - -static ACPI_STATUS -AcpiNsDeleteSubtree ( - ACPI_HANDLE StartHandle); -#endif - - -#ifndef ACPI_NO_METHOD_EXECUTION -/******************************************************************************* - * - * FUNCTION: AcpiNsLoadTable - * - * PARAMETERS: TableIndex - Index for table to be loaded - * Node - Owning NS node - * - * RETURN: Status - * - * DESCRIPTION: Load one ACPI table into the namespace - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsLoadTable ( - ACPI_NATIVE_UINT TableIndex, - ACPI_NAMESPACE_NODE *Node) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (NsLoadTable); - - - /* - * Parse the table and load the namespace with all named - * objects found within. Control methods are NOT parsed - * at this time. In fact, the control methods cannot be - * parsed until the entire namespace is loaded, because - * if a control method makes a forward reference (call) - * to another control method, we can't continue parsing - * because we don't know how many arguments to parse next! - */ - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* If table already loaded into namespace, just return */ - - if (AcpiTbIsTableLoaded (TableIndex)) - { - Status = AE_ALREADY_EXISTS; - goto Unlock; - } - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "**** Loading table into namespace ****\n")); - - Status = AcpiTbAllocateOwnerId (TableIndex); - if (ACPI_FAILURE (Status)) - { - goto Unlock; - } - - Status = AcpiNsParseTable (TableIndex, Node->Child); - if (ACPI_SUCCESS (Status)) - { - AcpiTbSetTableLoadedFlag (TableIndex, TRUE); - } - else - { - AcpiTbReleaseOwnerId (TableIndex); - } - -Unlock: - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Now we can parse the control methods. We always parse - * them here for a sanity check, and if configured for - * just-in-time parsing, we delete the control method - * parse trees. - */ - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "**** Begin Table Method Parsing and Object Initialization ****\n")); - - Status = AcpiDsInitializeObjects (TableIndex, Node); - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "**** Completed Table Method Parsing and Object Initialization ****\n")); - - return_ACPI_STATUS (Status); -} - - -#ifdef ACPI_OBSOLETE_FUNCTIONS -/******************************************************************************* - * - * FUNCTION: AcpiLoadNamespace - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Load the name space from what ever is pointed to by DSDT. - * (DSDT points to either the BIOS or a buffer.) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsLoadNamespace ( - void) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (AcpiLoadNameSpace); - - - /* There must be at least a DSDT installed */ - - if (AcpiGbl_DSDT == NULL) - { - ACPI_ERROR ((AE_INFO, "DSDT is not in memory")); - return_ACPI_STATUS (AE_NO_ACPI_TABLES); - } - - /* - * Load the namespace. The DSDT is required, - * but the SSDT and PSDT tables are optional. - */ - Status = AcpiNsLoadTableByType (ACPI_TABLE_ID_DSDT); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Ignore exceptions from these */ - - (void) AcpiNsLoadTableByType (ACPI_TABLE_ID_SSDT); - (void) AcpiNsLoadTableByType (ACPI_TABLE_ID_PSDT); - - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, - "ACPI Namespace successfully loaded at root %p\n", - AcpiGbl_RootNode)); - - return_ACPI_STATUS (Status); -} -#endif - -#ifdef ACPI_FUTURE_IMPLEMENTATION -/******************************************************************************* - * - * FUNCTION: AcpiNsDeleteSubtree - * - * PARAMETERS: StartHandle - Handle in namespace where search begins - * - * RETURNS Status - * - * DESCRIPTION: Walks the namespace starting at the given handle and deletes - * all objects, entries, and scopes in the entire subtree. - * - * Namespace/Interpreter should be locked or the subsystem should - * be in shutdown before this routine is called. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiNsDeleteSubtree ( - ACPI_HANDLE StartHandle) -{ - ACPI_STATUS Status; - ACPI_HANDLE ChildHandle; - ACPI_HANDLE ParentHandle; - ACPI_HANDLE NextChildHandle; - ACPI_HANDLE Dummy; - UINT32 Level; - - - ACPI_FUNCTION_TRACE (NsDeleteSubtree); - - - ParentHandle = StartHandle; - ChildHandle = NULL; - Level = 1; - - /* - * Traverse the tree of objects until we bubble back up - * to where we started. - */ - while (Level > 0) - { - /* Attempt to get the next object in this scope */ - - Status = AcpiGetNextObject (ACPI_TYPE_ANY, ParentHandle, - ChildHandle, &NextChildHandle); - - ChildHandle = NextChildHandle; - - /* Did we get a new object? */ - - if (ACPI_SUCCESS (Status)) - { - /* Check if this object has any children */ - - if (ACPI_SUCCESS (AcpiGetNextObject (ACPI_TYPE_ANY, ChildHandle, - NULL, &Dummy))) - { - /* - * There is at least one child of this object, - * visit the object - */ - Level++; - ParentHandle = ChildHandle; - ChildHandle = NULL; - } - } - else - { - /* - * No more children in this object, go back up to - * the object's parent - */ - Level--; - - /* Delete all children now */ - - AcpiNsDeleteChildren (ChildHandle); - - ChildHandle = ParentHandle; - Status = AcpiGetParent (ParentHandle, &ParentHandle); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - } - - /* Now delete the starting object, and we are done */ - - AcpiNsDeleteNode (ChildHandle); - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsUnloadNameSpace - * - * PARAMETERS: Handle - Root of namespace subtree to be deleted - * - * RETURN: Status - * - * DESCRIPTION: Shrinks the namespace, typically in response to an undocking - * event. Deletes an entire subtree starting from (and - * including) the given handle. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsUnloadNamespace ( - ACPI_HANDLE Handle) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (NsUnloadNameSpace); - - - /* Parameter validation */ - - if (!AcpiGbl_RootNode) - { - return_ACPI_STATUS (AE_NO_NAMESPACE); - } - - if (!Handle) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* This function does the real work */ - - Status = AcpiNsDeleteSubtree (Handle); - - return_ACPI_STATUS (Status); -} -#endif -#endif - diff --git a/sys/contrib/dev/acpica-unix-20061109/namespace/nsnames.c b/sys/contrib/dev/acpica-unix-20061109/namespace/nsnames.c deleted file mode 100644 index 236776c994..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/namespace/nsnames.c +++ /dev/null @@ -1,347 +0,0 @@ -/******************************************************************************* - * - * Module Name: nsnames - Name manipulation and search - * $Revision: 1.97 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __NSNAMES_C__ - -#include "acpi.h" -#include "amlcode.h" -#include "acnamesp.h" - - -#define _COMPONENT ACPI_NAMESPACE - ACPI_MODULE_NAME ("nsnames") - - -/******************************************************************************* - * - * FUNCTION: AcpiNsBuildExternalPath - * - * PARAMETERS: Node - NS node whose pathname is needed - * Size - Size of the pathname - * *NameBuffer - Where to return the pathname - * - * RETURN: Places the pathname into the NameBuffer, in external format - * (name segments separated by path separators) - * - * DESCRIPTION: Generate a full pathaname - * - ******************************************************************************/ - -void -AcpiNsBuildExternalPath ( - ACPI_NAMESPACE_NODE *Node, - ACPI_SIZE Size, - char *NameBuffer) -{ - ACPI_SIZE Index; - ACPI_NAMESPACE_NODE *ParentNode; - - - ACPI_FUNCTION_ENTRY (); - - - /* Special case for root */ - - Index = Size - 1; - if (Index < ACPI_NAME_SIZE) - { - NameBuffer[0] = AML_ROOT_PREFIX; - NameBuffer[1] = 0; - return; - } - - /* Store terminator byte, then build name backwards */ - - ParentNode = Node; - NameBuffer[Index] = 0; - - while ((Index > ACPI_NAME_SIZE) && (ParentNode != AcpiGbl_RootNode)) - { - Index -= ACPI_NAME_SIZE; - - /* Put the name into the buffer */ - - ACPI_MOVE_32_TO_32 ((NameBuffer + Index), &ParentNode->Name); - ParentNode = AcpiNsGetParentNode (ParentNode); - - /* Prefix name with the path separator */ - - Index--; - NameBuffer[Index] = ACPI_PATH_SEPARATOR; - } - - /* Overwrite final separator with the root prefix character */ - - NameBuffer[Index] = AML_ROOT_PREFIX; - - if (Index != 0) - { - ACPI_ERROR ((AE_INFO, - "Could not construct pathname; index=%X, size=%X, Path=%s", - (UINT32) Index, (UINT32) Size, &NameBuffer[Size])); - } - - return; -} - - -#ifdef ACPI_DEBUG_OUTPUT -/******************************************************************************* - * - * FUNCTION: AcpiNsGetExternalPathname - * - * PARAMETERS: Node - Namespace node whose pathname is needed - * - * RETURN: Pointer to storage containing the fully qualified name of - * the node, In external format (name segments separated by path - * separators.) - * - * DESCRIPTION: Used for debug printing in AcpiNsSearchTable(). - * - ******************************************************************************/ - -char * -AcpiNsGetExternalPathname ( - ACPI_NAMESPACE_NODE *Node) -{ - char *NameBuffer; - ACPI_SIZE Size; - - - ACPI_FUNCTION_TRACE_PTR (NsGetExternalPathname, Node); - - - /* Calculate required buffer size based on depth below root */ - - Size = AcpiNsGetPathnameLength (Node); - - /* Allocate a buffer to be returned to caller */ - - NameBuffer = ACPI_ALLOCATE_ZEROED (Size); - if (!NameBuffer) - { - ACPI_ERROR ((AE_INFO, "Allocation failure")); - return_PTR (NULL); - } - - /* Build the path in the allocated buffer */ - - AcpiNsBuildExternalPath (Node, Size, NameBuffer); - return_PTR (NameBuffer); -} -#endif - - -/******************************************************************************* - * - * FUNCTION: AcpiNsGetPathnameLength - * - * PARAMETERS: Node - Namespace node - * - * RETURN: Length of path, including prefix - * - * DESCRIPTION: Get the length of the pathname string for this node - * - ******************************************************************************/ - -ACPI_SIZE -AcpiNsGetPathnameLength ( - ACPI_NAMESPACE_NODE *Node) -{ - ACPI_SIZE Size; - ACPI_NAMESPACE_NODE *NextNode; - - - ACPI_FUNCTION_ENTRY (); - - - /* - * Compute length of pathname as 5 * number of name segments. - * Go back up the parent tree to the root - */ - Size = 0; - NextNode = Node; - - while (NextNode && (NextNode != AcpiGbl_RootNode)) - { - Size += ACPI_PATH_SEGMENT_LENGTH; - NextNode = AcpiNsGetParentNode (NextNode); - } - - if (!Size) - { - Size = 1; /* Root node case */ - } - - return (Size + 1); /* +1 for null string terminator */ -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsHandleToPathname - * - * PARAMETERS: TargetHandle - Handle of named object whose name is - * to be found - * Buffer - Where the pathname is returned - * - * RETURN: Status, Buffer is filled with pathname if status is AE_OK - * - * DESCRIPTION: Build and return a full namespace pathname - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsHandleToPathname ( - ACPI_HANDLE TargetHandle, - ACPI_BUFFER *Buffer) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - ACPI_SIZE RequiredSize; - - - ACPI_FUNCTION_TRACE_PTR (NsHandleToPathname, TargetHandle); - - - Node = AcpiNsMapHandleToNode (TargetHandle); - if (!Node) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Determine size required for the caller buffer */ - - RequiredSize = AcpiNsGetPathnameLength (Node); - - /* Validate/Allocate/Clear caller buffer */ - - Status = AcpiUtInitializeBuffer (Buffer, RequiredSize); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Build the path in the caller buffer */ - - AcpiNsBuildExternalPath (Node, RequiredSize, Buffer->Pointer); - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%s [%X]\n", - (char *) Buffer->Pointer, (UINT32) RequiredSize)); - return_ACPI_STATUS (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/namespace/nsobject.c b/sys/contrib/dev/acpica-unix-20061109/namespace/nsobject.c deleted file mode 100644 index a59f0c0748..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/namespace/nsobject.c +++ /dev/null @@ -1,567 +0,0 @@ -/******************************************************************************* - * - * Module Name: nsobject - Utilities for objects attached to namespace - * table entries - * $Revision: 1.97 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __NSOBJECT_C__ - -#include "acpi.h" -#include "acnamesp.h" - - -#define _COMPONENT ACPI_NAMESPACE - ACPI_MODULE_NAME ("nsobject") - - -/******************************************************************************* - * - * FUNCTION: AcpiNsAttachObject - * - * PARAMETERS: Node - Parent Node - * Object - Object to be attached - * Type - Type of object, or ACPI_TYPE_ANY if not - * known - * - * RETURN: Status - * - * DESCRIPTION: Record the given object as the value associated with the - * name whose ACPI_HANDLE is passed. If Object is NULL - * and Type is ACPI_TYPE_ANY, set the name as having no value. - * Note: Future may require that the Node->Flags field be passed - * as a parameter. - * - * MUTEX: Assumes namespace is locked - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsAttachObject ( - ACPI_NAMESPACE_NODE *Node, - ACPI_OPERAND_OBJECT *Object, - ACPI_OBJECT_TYPE Type) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *LastObjDesc; - ACPI_OBJECT_TYPE ObjectType = ACPI_TYPE_ANY; - - - ACPI_FUNCTION_TRACE (NsAttachObject); - - - /* - * Parameter validation - */ - if (!Node) - { - /* Invalid handle */ - - ACPI_ERROR ((AE_INFO, "Null NamedObj handle")); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - if (!Object && (ACPI_TYPE_ANY != Type)) - { - /* Null object */ - - ACPI_ERROR ((AE_INFO, - "Null object, but type not ACPI_TYPE_ANY")); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - if (ACPI_GET_DESCRIPTOR_TYPE (Node) != ACPI_DESC_TYPE_NAMED) - { - /* Not a name handle */ - - ACPI_ERROR ((AE_INFO, "Invalid handle %p [%s]", - Node, AcpiUtGetDescriptorName (Node))); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Check if this object is already attached */ - - if (Node->Object == Object) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Obj %p already installed in NameObj %p\n", - Object, Node)); - - return_ACPI_STATUS (AE_OK); - } - - /* If null object, we will just install it */ - - if (!Object) - { - ObjDesc = NULL; - ObjectType = ACPI_TYPE_ANY; - } - - /* - * If the source object is a namespace Node with an attached object, - * we will use that (attached) object - */ - else if ((ACPI_GET_DESCRIPTOR_TYPE (Object) == ACPI_DESC_TYPE_NAMED) && - ((ACPI_NAMESPACE_NODE *) Object)->Object) - { - /* - * Value passed is a name handle and that name has a - * non-null value. Use that name's value and type. - */ - ObjDesc = ((ACPI_NAMESPACE_NODE *) Object)->Object; - ObjectType = ((ACPI_NAMESPACE_NODE *) Object)->Type; - } - - /* - * Otherwise, we will use the parameter object, but we must type - * it first - */ - else - { - ObjDesc = (ACPI_OPERAND_OBJECT *) Object; - - /* Use the given type */ - - ObjectType = Type; - } - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Installing %p into Node %p [%4.4s]\n", - ObjDesc, Node, AcpiUtGetNodeName (Node))); - - /* Detach an existing attached object if present */ - - if (Node->Object) - { - AcpiNsDetachObject (Node); - } - - if (ObjDesc) - { - /* - * Must increment the new value's reference count - * (if it is an internal object) - */ - AcpiUtAddReference (ObjDesc); - - /* - * Handle objects with multiple descriptors - walk - * to the end of the descriptor list - */ - LastObjDesc = ObjDesc; - while (LastObjDesc->Common.NextObject) - { - LastObjDesc = LastObjDesc->Common.NextObject; - } - - /* Install the object at the front of the object list */ - - LastObjDesc->Common.NextObject = Node->Object; - } - - Node->Type = (UINT8) ObjectType; - Node->Object = ObjDesc; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsDetachObject - * - * PARAMETERS: Node - A Namespace node whose object will be detached - * - * RETURN: None. - * - * DESCRIPTION: Detach/delete an object associated with a namespace node. - * if the object is an allocated object, it is freed. - * Otherwise, the field is simply cleared. - * - ******************************************************************************/ - -void -AcpiNsDetachObject ( - ACPI_NAMESPACE_NODE *Node) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - - - ACPI_FUNCTION_TRACE (NsDetachObject); - - - ObjDesc = Node->Object; - - if (!ObjDesc || - (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_LOCAL_DATA)) - { - return_VOID; - } - - /* Clear the entry in all cases */ - - Node->Object = NULL; - if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_OPERAND) - { - Node->Object = ObjDesc->Common.NextObject; - if (Node->Object && - (ACPI_GET_OBJECT_TYPE (Node->Object) != ACPI_TYPE_LOCAL_DATA)) - { - Node->Object = Node->Object->Common.NextObject; - } - } - - /* Reset the node type to untyped */ - - Node->Type = ACPI_TYPE_ANY; - - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Node %p [%4.4s] Object %p\n", - Node, AcpiUtGetNodeName (Node), ObjDesc)); - - /* Remove one reference on the object (and all subobjects) */ - - AcpiUtRemoveReference (ObjDesc); - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsGetAttachedObject - * - * PARAMETERS: Node - Namespace node - * - * RETURN: Current value of the object field from the Node whose - * handle is passed - * - * DESCRIPTION: Obtain the object attached to a namespace node. - * - ******************************************************************************/ - -ACPI_OPERAND_OBJECT * -AcpiNsGetAttachedObject ( - ACPI_NAMESPACE_NODE *Node) -{ - ACPI_FUNCTION_TRACE_PTR (NsGetAttachedObject, Node); - - - if (!Node) - { - ACPI_WARNING ((AE_INFO, "Null Node ptr")); - return_PTR (NULL); - } - - if (!Node->Object || - ((ACPI_GET_DESCRIPTOR_TYPE (Node->Object) != ACPI_DESC_TYPE_OPERAND) && - (ACPI_GET_DESCRIPTOR_TYPE (Node->Object) != ACPI_DESC_TYPE_NAMED)) || - (ACPI_GET_OBJECT_TYPE (Node->Object) == ACPI_TYPE_LOCAL_DATA)) - { - return_PTR (NULL); - } - - return_PTR (Node->Object); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsGetSecondaryObject - * - * PARAMETERS: Node - Namespace node - * - * RETURN: Current value of the object field from the Node whose - * handle is passed. - * - * DESCRIPTION: Obtain a secondary object associated with a namespace node. - * - ******************************************************************************/ - -ACPI_OPERAND_OBJECT * -AcpiNsGetSecondaryObject ( - ACPI_OPERAND_OBJECT *ObjDesc) -{ - ACPI_FUNCTION_TRACE_PTR (NsGetSecondaryObject, ObjDesc); - - - if ((!ObjDesc) || - (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_LOCAL_DATA) || - (!ObjDesc->Common.NextObject) || - (ACPI_GET_OBJECT_TYPE (ObjDesc->Common.NextObject) == ACPI_TYPE_LOCAL_DATA)) - { - return_PTR (NULL); - } - - return_PTR (ObjDesc->Common.NextObject); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsAttachData - * - * PARAMETERS: Node - Namespace node - * Handler - Handler to be associated with the data - * Data - Data to be attached - * - * RETURN: Status - * - * DESCRIPTION: Low-level attach data. Create and attach a Data object. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsAttachData ( - ACPI_NAMESPACE_NODE *Node, - ACPI_OBJECT_HANDLER Handler, - void *Data) -{ - ACPI_OPERAND_OBJECT *PrevObjDesc; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *DataDesc; - - - /* We only allow one attachment per handler */ - - PrevObjDesc = NULL; - ObjDesc = Node->Object; - while (ObjDesc) - { - if ((ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_LOCAL_DATA) && - (ObjDesc->Data.Handler == Handler)) - { - return (AE_ALREADY_EXISTS); - } - - PrevObjDesc = ObjDesc; - ObjDesc = ObjDesc->Common.NextObject; - } - - /* Create an internal object for the data */ - - DataDesc = AcpiUtCreateInternalObject (ACPI_TYPE_LOCAL_DATA); - if (!DataDesc) - { - return (AE_NO_MEMORY); - } - - DataDesc->Data.Handler = Handler; - DataDesc->Data.Pointer = Data; - - /* Install the data object */ - - if (PrevObjDesc) - { - PrevObjDesc->Common.NextObject = DataDesc; - } - else - { - Node->Object = DataDesc; - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsDetachData - * - * PARAMETERS: Node - Namespace node - * Handler - Handler associated with the data - * - * RETURN: Status - * - * DESCRIPTION: Low-level detach data. Delete the data node, but the caller - * is responsible for the actual data. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsDetachData ( - ACPI_NAMESPACE_NODE *Node, - ACPI_OBJECT_HANDLER Handler) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_OPERAND_OBJECT *PrevObjDesc; - - - PrevObjDesc = NULL; - ObjDesc = Node->Object; - while (ObjDesc) - { - if ((ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_LOCAL_DATA) && - (ObjDesc->Data.Handler == Handler)) - { - if (PrevObjDesc) - { - PrevObjDesc->Common.NextObject = ObjDesc->Common.NextObject; - } - else - { - Node->Object = ObjDesc->Common.NextObject; - } - - AcpiUtRemoveReference (ObjDesc); - return (AE_OK); - } - - PrevObjDesc = ObjDesc; - ObjDesc = ObjDesc->Common.NextObject; - } - - return (AE_NOT_FOUND); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsGetAttachedData - * - * PARAMETERS: Node - Namespace node - * Handler - Handler associated with the data - * Data - Where the data is returned - * - * RETURN: Status - * - * DESCRIPTION: Low level interface to obtain data previously associated with - * a namespace node. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsGetAttachedData ( - ACPI_NAMESPACE_NODE *Node, - ACPI_OBJECT_HANDLER Handler, - void **Data) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - - - ObjDesc = Node->Object; - while (ObjDesc) - { - if ((ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_LOCAL_DATA) && - (ObjDesc->Data.Handler == Handler)) - { - *Data = ObjDesc->Data.Pointer; - return (AE_OK); - } - - ObjDesc = ObjDesc->Common.NextObject; - } - - return (AE_NOT_FOUND); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/namespace/nsparse.c b/sys/contrib/dev/acpica-unix-20061109/namespace/nsparse.c deleted file mode 100644 index ce44593376..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/namespace/nsparse.c +++ /dev/null @@ -1,282 +0,0 @@ -/****************************************************************************** - * - * Module Name: nsparse - namespace interface to AML parser - * $Revision: 1.15 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __NSPARSE_C__ - -#include "acpi.h" -#include "acnamesp.h" -#include "acparser.h" -#include "acdispat.h" -#include "actables.h" - - -#define _COMPONENT ACPI_NAMESPACE - ACPI_MODULE_NAME ("nsparse") - - -/******************************************************************************* - * - * FUNCTION: NsOneCompleteParse - * - * PARAMETERS: PassNumber - 1 or 2 - * TableDesc - The table to be parsed. - * - * RETURN: Status - * - * DESCRIPTION: Perform one complete parse of an ACPI/AML table. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsOneCompleteParse ( - ACPI_NATIVE_UINT PassNumber, - ACPI_NATIVE_UINT TableIndex) -{ - ACPI_PARSE_OBJECT *ParseRoot; - ACPI_STATUS Status; - ACPI_NATIVE_UINT AmlLength; - UINT8 *AmlStart; - ACPI_WALK_STATE *WalkState; - ACPI_TABLE_HEADER *Table; - ACPI_OWNER_ID OwnerId; - - - ACPI_FUNCTION_TRACE (NsOneCompleteParse); - - - Status = AcpiTbGetOwnerId (TableIndex, &OwnerId); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Create and init a Root Node */ - - ParseRoot = AcpiPsCreateScopeOp (); - if (!ParseRoot) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Create and initialize a new walk state */ - - WalkState = AcpiDsCreateWalkState (OwnerId, NULL, NULL, NULL); - if (!WalkState) - { - AcpiPsFreeOp (ParseRoot); - return_ACPI_STATUS (AE_NO_MEMORY); - } - - Status = AcpiGetTableByIndex (TableIndex, &Table); - if (ACPI_FAILURE (Status)) - { - AcpiDsDeleteWalkState (WalkState); - AcpiPsFreeOp (ParseRoot); - return_ACPI_STATUS (Status); - } - - /* Table must consist of at least a complete header */ - - if (Table->Length < sizeof (ACPI_TABLE_HEADER)) - { - Status = AE_BAD_HEADER; - } - else - { - AmlStart = (UINT8 *) Table + sizeof (ACPI_TABLE_HEADER); - AmlLength = Table->Length - sizeof (ACPI_TABLE_HEADER); - Status = AcpiDsInitAmlWalk (WalkState, ParseRoot, NULL, - AmlStart, AmlLength, NULL, (UINT8) PassNumber); - } - - if (ACPI_FAILURE (Status)) - { - AcpiDsDeleteWalkState (WalkState); - AcpiPsDeleteParseTree (ParseRoot); - return_ACPI_STATUS (Status); - } - - /* Parse the AML */ - - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "*PARSE* pass %d parse\n", PassNumber)); - Status = AcpiPsParseAml (WalkState); - - AcpiPsDeleteParseTree (ParseRoot); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsParseTable - * - * PARAMETERS: TableDesc - An ACPI table descriptor for table to parse - * StartNode - Where to enter the table into the namespace - * - * RETURN: Status - * - * DESCRIPTION: Parse AML within an ACPI table and return a tree of ops - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsParseTable ( - ACPI_NATIVE_UINT TableIndex, - ACPI_NAMESPACE_NODE *StartNode) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (NsParseTable); - - - /* - * AML Parse, pass 1 - * - * In this pass, we load most of the namespace. Control methods - * are not parsed until later. A parse tree is not created. Instead, - * each Parser Op subtree is deleted when it is finished. This saves - * a great deal of memory, and allows a small cache of parse objects - * to service the entire parse. The second pass of the parse then - * performs another complete parse of the AML. - */ - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 1\n")); - Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS1, TableIndex); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * AML Parse, pass 2 - * - * In this pass, we resolve forward references and other things - * that could not be completed during the first pass. - * Another complete parse of the AML is performed, but the - * overhead of this is compensated for by the fact that the - * parse objects are all cached. - */ - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 2\n")); - Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS2, TableIndex); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/namespace/nssearch.c b/sys/contrib/dev/acpica-unix-20061109/namespace/nssearch.c deleted file mode 100644 index 3701671354..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/namespace/nssearch.c +++ /dev/null @@ -1,514 +0,0 @@ -/******************************************************************************* - * - * Module Name: nssearch - Namespace search - * $Revision: 1.120 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __NSSEARCH_C__ - -#include "acpi.h" -#include "acnamesp.h" - - -#define _COMPONENT ACPI_NAMESPACE - ACPI_MODULE_NAME ("nssearch") - -/* Local prototypes */ - -static ACPI_STATUS -AcpiNsSearchParentTree ( - UINT32 TargetName, - ACPI_NAMESPACE_NODE *Node, - ACPI_OBJECT_TYPE Type, - ACPI_NAMESPACE_NODE **ReturnNode); - - -/******************************************************************************* - * - * FUNCTION: AcpiNsSearchOneScope - * - * PARAMETERS: TargetName - Ascii ACPI name to search for - * ParentNode - Starting node where search will begin - * Type - Object type to match - * ReturnNode - Where the matched Named obj is returned - * - * RETURN: Status - * - * DESCRIPTION: Search a single level of the namespace. Performs a - * simple search of the specified level, and does not add - * entries or search parents. - * - * - * Named object lists are built (and subsequently dumped) in the - * order in which the names are encountered during the namespace load; - * - * All namespace searching is linear in this implementation, but - * could be easily modified to support any improved search - * algorithm. However, the linear search was chosen for simplicity - * and because the trees are small and the other interpreter - * execution overhead is relatively high. - * - * Note: CPU execution analysis has shown that the AML interpreter spends - * a very small percentage of its time searching the namespace. Therefore, - * the linear search seems to be sufficient, as there would seem to be - * little value in improving the search. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsSearchOneScope ( - UINT32 TargetName, - ACPI_NAMESPACE_NODE *ParentNode, - ACPI_OBJECT_TYPE Type, - ACPI_NAMESPACE_NODE **ReturnNode) -{ - ACPI_NAMESPACE_NODE *Node; - - - ACPI_FUNCTION_TRACE (NsSearchOneScope); - - -#ifdef ACPI_DEBUG_OUTPUT - if (ACPI_LV_NAMES & AcpiDbgLevel) - { - char *ScopeName; - - ScopeName = AcpiNsGetExternalPathname (ParentNode); - if (ScopeName) - { - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, - "Searching %s (%p) For [%4.4s] (%s)\n", - ScopeName, ParentNode, ACPI_CAST_PTR (char, &TargetName), - AcpiUtGetTypeName (Type))); - - ACPI_FREE (ScopeName); - } - } -#endif - - /* - * Search for name at this namespace level, which is to say that we - * must search for the name among the children of this object - */ - Node = ParentNode->Child; - while (Node) - { - /* Check for match against the name */ - - if (Node->Name.Integer == TargetName) - { - /* Resolve a control method alias if any */ - - if (AcpiNsGetType (Node) == ACPI_TYPE_LOCAL_METHOD_ALIAS) - { - Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Node->Object); - } - - /* Found matching entry */ - - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, - "Name [%4.4s] (%s) %p found in scope [%4.4s] %p\n", - ACPI_CAST_PTR (char, &TargetName), - AcpiUtGetTypeName (Node->Type), - Node, AcpiUtGetNodeName (ParentNode), ParentNode)); - - *ReturnNode = Node; - return_ACPI_STATUS (AE_OK); - } - - /* - * The last entry in the list points back to the parent, - * so a flag is used to indicate the end-of-list - */ - if (Node->Flags & ANOBJ_END_OF_PEER_LIST) - { - /* Searched entire list, we are done */ - - break; - } - - /* Didn't match name, move on to the next peer object */ - - Node = Node->Peer; - } - - /* Searched entire namespace level, not found */ - - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, - "Name [%4.4s] (%s) not found in search in scope [%4.4s] %p first child %p\n", - ACPI_CAST_PTR (char, &TargetName), AcpiUtGetTypeName (Type), - AcpiUtGetNodeName (ParentNode), ParentNode, ParentNode->Child)); - - return_ACPI_STATUS (AE_NOT_FOUND); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsSearchParentTree - * - * PARAMETERS: TargetName - Ascii ACPI name to search for - * Node - Starting node where search will begin - * Type - Object type to match - * ReturnNode - Where the matched Node is returned - * - * RETURN: Status - * - * DESCRIPTION: Called when a name has not been found in the current namespace - * level. Before adding it or giving up, ACPI scope rules require - * searching enclosing scopes in cases identified by AcpiNsLocal(). - * - * "A name is located by finding the matching name in the current - * name space, and then in the parent name space. If the parent - * name space does not contain the name, the search continues - * recursively until either the name is found or the name space - * does not have a parent (the root of the name space). This - * indicates that the name is not found" (From ACPI Specification, - * section 5.3) - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiNsSearchParentTree ( - UINT32 TargetName, - ACPI_NAMESPACE_NODE *Node, - ACPI_OBJECT_TYPE Type, - ACPI_NAMESPACE_NODE **ReturnNode) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *ParentNode; - - - ACPI_FUNCTION_TRACE (NsSearchParentTree); - - - ParentNode = AcpiNsGetParentNode (Node); - - /* - * If there is no parent (i.e., we are at the root) or type is "local", - * we won't be searching the parent tree. - */ - if (!ParentNode) - { - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "[%4.4s] has no parent\n", - ACPI_CAST_PTR (char, &TargetName))); - return_ACPI_STATUS (AE_NOT_FOUND); - } - - if (AcpiNsLocal (Type)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, - "[%4.4s] type [%s] must be local to this scope (no parent search)\n", - ACPI_CAST_PTR (char, &TargetName), AcpiUtGetTypeName (Type))); - return_ACPI_STATUS (AE_NOT_FOUND); - } - - /* Search the parent tree */ - - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, - "Searching parent [%4.4s] for [%4.4s]\n", - AcpiUtGetNodeName (ParentNode), ACPI_CAST_PTR (char, &TargetName))); - - /* - * Search parents until target is found or we have backed up to the root - */ - while (ParentNode) - { - /* - * Search parent scope. Use TYPE_ANY because we don't care about the - * object type at this point, we only care about the existence of - * the actual name we are searching for. Typechecking comes later. - */ - Status = AcpiNsSearchOneScope ( - TargetName, ParentNode, ACPI_TYPE_ANY, ReturnNode); - if (ACPI_SUCCESS (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Not found here, go up another level (until we reach the root) */ - - ParentNode = AcpiNsGetParentNode (ParentNode); - } - - /* Not found in parent tree */ - - return_ACPI_STATUS (AE_NOT_FOUND); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsSearchAndEnter - * - * PARAMETERS: TargetName - Ascii ACPI name to search for (4 chars) - * WalkState - Current state of the walk - * Node - Starting node where search will begin - * InterpreterMode - Add names only in ACPI_MODE_LOAD_PASS_x. - * Otherwise,search only. - * Type - Object type to match - * Flags - Flags describing the search restrictions - * ReturnNode - Where the Node is returned - * - * RETURN: Status - * - * DESCRIPTION: Search for a name segment in a single namespace level, - * optionally adding it if it is not found. If the passed - * Type is not Any and the type previously stored in the - * entry was Any (i.e. unknown), update the stored type. - * - * In ACPI_IMODE_EXECUTE, search only. - * In other modes, search and add if not found. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsSearchAndEnter ( - UINT32 TargetName, - ACPI_WALK_STATE *WalkState, - ACPI_NAMESPACE_NODE *Node, - ACPI_INTERPRETER_MODE InterpreterMode, - ACPI_OBJECT_TYPE Type, - UINT32 Flags, - ACPI_NAMESPACE_NODE **ReturnNode) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *NewNode; - - - ACPI_FUNCTION_TRACE (NsSearchAndEnter); - - - /* Parameter validation */ - - if (!Node || !TargetName || !ReturnNode) - { - ACPI_ERROR ((AE_INFO, - "Null parameter: Node %p Name %X ReturnNode %p", - Node, TargetName, ReturnNode)); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* - * Name must consist of valid ACPI characters. We will repair the name if - * necessary because we don't want to abort because of this, but we want - * all namespace names to be printable. A warning message is appropriate. - * - * This issue came up because there are in fact machines that exhibit - * this problem, and we want to be able to enable ACPI support for them, - * even though there are a few bad names. - */ - if (!AcpiUtValidAcpiName (TargetName)) - { - TargetName = AcpiUtRepairName (ACPI_CAST_PTR (char, &TargetName)); - - /* Report warning only if in strict mode or debug mode */ - - if (!AcpiGbl_EnableInterpreterSlack) - { - ACPI_WARNING ((AE_INFO, - "Found bad character(s) in name, repaired: [%4.4s]\n", - ACPI_CAST_PTR (char, &TargetName))); - } - else - { - ACPI_DEBUG_PRINT ((ACPI_DB_WARN, - "Found bad character(s) in name, repaired: [%4.4s]\n", - ACPI_CAST_PTR (char, &TargetName))); - } - } - - /* Try to find the name in the namespace level specified by the caller */ - - *ReturnNode = ACPI_ENTRY_NOT_FOUND; - Status = AcpiNsSearchOneScope (TargetName, Node, Type, ReturnNode); - if (Status != AE_NOT_FOUND) - { - /* - * If we found it AND the request specifies that a find is an error, - * return the error - */ - if ((Status == AE_OK) && - (Flags & ACPI_NS_ERROR_IF_FOUND)) - { - Status = AE_ALREADY_EXISTS; - } - - /* Either found it or there was an error: finished either way */ - - return_ACPI_STATUS (Status); - } - - /* - * The name was not found. If we are NOT performing the first pass - * (name entry) of loading the namespace, search the parent tree (all the - * way to the root if necessary.) We don't want to perform the parent - * search when the namespace is actually being loaded. We want to perform - * the search when namespace references are being resolved (load pass 2) - * and during the execution phase. - */ - if ((InterpreterMode != ACPI_IMODE_LOAD_PASS1) && - (Flags & ACPI_NS_SEARCH_PARENT)) - { - /* - * Not found at this level - search parent tree according to the - * ACPI specification - */ - Status = AcpiNsSearchParentTree (TargetName, Node, Type, ReturnNode); - if (ACPI_SUCCESS (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* In execute mode, just search, never add names. Exit now */ - - if (InterpreterMode == ACPI_IMODE_EXECUTE) - { - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, - "%4.4s Not found in %p [Not adding]\n", - ACPI_CAST_PTR (char, &TargetName), Node)); - - return_ACPI_STATUS (AE_NOT_FOUND); - } - - /* Create the new named object */ - - NewNode = AcpiNsCreateNode (TargetName); - if (!NewNode) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - -#ifdef ACPI_ASL_COMPILER - /* - * Node is an object defined by an External() statement - */ - if (Flags & ACPI_NS_EXTERNAL) - { - NewNode->Flags |= ANOBJ_IS_EXTERNAL; - } -#endif - - if (Flags & ACPI_NS_TEMPORARY) - { - NewNode->Flags |= ANOBJ_TEMPORARY; - } - - /* Install the new object into the parent's list of children */ - - AcpiNsInstallNode (WalkState, Node, NewNode, Type); - *ReturnNode = NewNode; - return_ACPI_STATUS (AE_OK); -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/namespace/nsutils.c b/sys/contrib/dev/acpica-unix-20061109/namespace/nsutils.c deleted file mode 100644 index 6fc524cbef..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/namespace/nsutils.c +++ /dev/null @@ -1,1220 +0,0 @@ -/****************************************************************************** - * - * Module Name: nsutils - Utilities for accessing ACPI namespace, accessing - * parents and siblings and Scope manipulation - * $Revision: 1.154 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __NSUTILS_C__ - -#include "acpi.h" -#include "acnamesp.h" -#include "amlcode.h" -#include "actables.h" - -#define _COMPONENT ACPI_NAMESPACE - ACPI_MODULE_NAME ("nsutils") - -/* Local prototypes */ - -static BOOLEAN -AcpiNsValidPathSeparator ( - char Sep); - -#ifdef ACPI_OBSOLETE_FUNCTIONS -ACPI_NAME -AcpiNsFindParentName ( - ACPI_NAMESPACE_NODE *NodeToSearch); -#endif - - -/******************************************************************************* - * - * FUNCTION: AcpiNsReportError - * - * PARAMETERS: ModuleName - Caller's module name (for error output) - * LineNumber - Caller's line number (for error output) - * InternalName - Name or path of the namespace node - * LookupStatus - Exception code from NS lookup - * - * RETURN: None - * - * DESCRIPTION: Print warning message with full pathname - * - ******************************************************************************/ - -void -AcpiNsReportError ( - char *ModuleName, - UINT32 LineNumber, - char *InternalName, - ACPI_STATUS LookupStatus) -{ - ACPI_STATUS Status; - UINT32 BadName; - char *Name = NULL; - - - AcpiOsPrintf ("ACPI Error (%s-%04d): ", ModuleName, LineNumber); - - if (LookupStatus == AE_BAD_CHARACTER) - { - /* There is a non-ascii character in the name */ - - ACPI_MOVE_32_TO_32 (&BadName, InternalName); - AcpiOsPrintf ("[0x%4.4X] (NON-ASCII)", BadName); - } - else - { - /* Convert path to external format */ - - Status = AcpiNsExternalizeName (ACPI_UINT32_MAX, - InternalName, NULL, &Name); - - /* Print target name */ - - if (ACPI_SUCCESS (Status)) - { - AcpiOsPrintf ("[%s]", Name); - } - else - { - AcpiOsPrintf ("[COULD NOT EXTERNALIZE NAME]"); - } - - if (Name) - { - ACPI_FREE (Name); - } - } - - AcpiOsPrintf (" Namespace lookup failure, %s\n", - AcpiFormatException (LookupStatus)); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsReportMethodError - * - * PARAMETERS: ModuleName - Caller's module name (for error output) - * LineNumber - Caller's line number (for error output) - * Message - Error message to use on failure - * PrefixNode - Prefix relative to the path - * Path - Path to the node (optional) - * MethodStatus - Execution status - * - * RETURN: None - * - * DESCRIPTION: Print warning message with full pathname - * - ******************************************************************************/ - -void -AcpiNsReportMethodError ( - char *ModuleName, - UINT32 LineNumber, - char *Message, - ACPI_NAMESPACE_NODE *PrefixNode, - char *Path, - ACPI_STATUS MethodStatus) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node = PrefixNode; - - - AcpiOsPrintf ("ACPI Error (%s-%04d): ", ModuleName, LineNumber); - - if (Path) - { - Status = AcpiNsGetNode (PrefixNode, Path, ACPI_NS_NO_UPSEARCH, - &Node); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("[Could not get node by pathname]"); - } - } - - AcpiNsPrintNodePathname (Node, Message); - AcpiOsPrintf (", %s\n", AcpiFormatException (MethodStatus)); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsPrintNodePathname - * - * PARAMETERS: Node - Object - * Message - Prefix message - * - * DESCRIPTION: Print an object's full namespace pathname - * Manages allocation/freeing of a pathname buffer - * - ******************************************************************************/ - -void -AcpiNsPrintNodePathname ( - ACPI_NAMESPACE_NODE *Node, - char *Message) -{ - ACPI_BUFFER Buffer; - ACPI_STATUS Status; - - - if (!Node) - { - AcpiOsPrintf ("[NULL NAME]"); - return; - } - - /* Convert handle to full pathname and print it (with supplied message) */ - - Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - - Status = AcpiNsHandleToPathname (Node, &Buffer); - if (ACPI_SUCCESS (Status)) - { - if (Message) - { - AcpiOsPrintf ("%s ", Message); - } - - AcpiOsPrintf ("[%s] (Node %p)", (char *) Buffer.Pointer, Node); - ACPI_FREE (Buffer.Pointer); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsValidRootPrefix - * - * PARAMETERS: Prefix - Character to be checked - * - * RETURN: TRUE if a valid prefix - * - * DESCRIPTION: Check if a character is a valid ACPI Root prefix - * - ******************************************************************************/ - -BOOLEAN -AcpiNsValidRootPrefix ( - char Prefix) -{ - - return ((BOOLEAN) (Prefix == '\\')); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsValidPathSeparator - * - * PARAMETERS: Sep - Character to be checked - * - * RETURN: TRUE if a valid path separator - * - * DESCRIPTION: Check if a character is a valid ACPI path separator - * - ******************************************************************************/ - -static BOOLEAN -AcpiNsValidPathSeparator ( - char Sep) -{ - - return ((BOOLEAN) (Sep == '.')); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsGetType - * - * PARAMETERS: Node - Parent Node to be examined - * - * RETURN: Type field from Node whose handle is passed - * - * DESCRIPTION: Return the type of a Namespace node - * - ******************************************************************************/ - -ACPI_OBJECT_TYPE -AcpiNsGetType ( - ACPI_NAMESPACE_NODE *Node) -{ - ACPI_FUNCTION_TRACE (NsGetType); - - - if (!Node) - { - ACPI_WARNING ((AE_INFO, "Null Node parameter")); - return_UINT32 (ACPI_TYPE_ANY); - } - - return_UINT32 ((ACPI_OBJECT_TYPE) Node->Type); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsLocal - * - * PARAMETERS: Type - A namespace object type - * - * RETURN: LOCAL if names must be found locally in objects of the - * passed type, 0 if enclosing scopes should be searched - * - * DESCRIPTION: Returns scope rule for the given object type. - * - ******************************************************************************/ - -UINT32 -AcpiNsLocal ( - ACPI_OBJECT_TYPE Type) -{ - ACPI_FUNCTION_TRACE (NsLocal); - - - if (!AcpiUtValidObjectType (Type)) - { - /* Type code out of range */ - - ACPI_WARNING ((AE_INFO, "Invalid Object Type %X", Type)); - return_UINT32 (ACPI_NS_NORMAL); - } - - return_UINT32 ((UINT32) AcpiGbl_NsProperties[Type] & ACPI_NS_LOCAL); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsGetInternalNameLength - * - * PARAMETERS: Info - Info struct initialized with the - * external name pointer. - * - * RETURN: None - * - * DESCRIPTION: Calculate the length of the internal (AML) namestring - * corresponding to the external (ASL) namestring. - * - ******************************************************************************/ - -void -AcpiNsGetInternalNameLength ( - ACPI_NAMESTRING_INFO *Info) -{ - char *NextExternalChar; - UINT32 i; - - - ACPI_FUNCTION_ENTRY (); - - - NextExternalChar = Info->ExternalName; - Info->NumCarats = 0; - Info->NumSegments = 0; - Info->FullyQualified = FALSE; - - /* - * For the internal name, the required length is 4 bytes per segment, plus - * 1 each for RootPrefix, MultiNamePrefixOp, segment count, trailing null - * (which is not really needed, but no there's harm in putting it there) - * - * strlen() + 1 covers the first NameSeg, which has no path separator - */ - if (AcpiNsValidRootPrefix (NextExternalChar[0])) - { - Info->FullyQualified = TRUE; - NextExternalChar++; - } - else - { - /* - * Handle Carat prefixes - */ - while (*NextExternalChar == '^') - { - Info->NumCarats++; - NextExternalChar++; - } - } - - /* - * Determine the number of ACPI name "segments" by counting the number of - * path separators within the string. Start with one segment since the - * segment count is [(# separators) + 1], and zero separators is ok. - */ - if (*NextExternalChar) - { - Info->NumSegments = 1; - for (i = 0; NextExternalChar[i]; i++) - { - if (AcpiNsValidPathSeparator (NextExternalChar[i])) - { - Info->NumSegments++; - } - } - } - - Info->Length = (ACPI_NAME_SIZE * Info->NumSegments) + - 4 + Info->NumCarats; - - Info->NextExternalChar = NextExternalChar; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsBuildInternalName - * - * PARAMETERS: Info - Info struct fully initialized - * - * RETURN: Status - * - * DESCRIPTION: Construct the internal (AML) namestring - * corresponding to the external (ASL) namestring. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsBuildInternalName ( - ACPI_NAMESTRING_INFO *Info) -{ - UINT32 NumSegments = Info->NumSegments; - char *InternalName = Info->InternalName; - char *ExternalName = Info->NextExternalChar; - char *Result = NULL; - ACPI_NATIVE_UINT i; - - - ACPI_FUNCTION_TRACE (NsBuildInternalName); - - - /* Setup the correct prefixes, counts, and pointers */ - - if (Info->FullyQualified) - { - InternalName[0] = '\\'; - - if (NumSegments <= 1) - { - Result = &InternalName[1]; - } - else if (NumSegments == 2) - { - InternalName[1] = AML_DUAL_NAME_PREFIX; - Result = &InternalName[2]; - } - else - { - InternalName[1] = AML_MULTI_NAME_PREFIX_OP; - InternalName[2] = (char) NumSegments; - Result = &InternalName[3]; - } - } - else - { - /* - * Not fully qualified. - * Handle Carats first, then append the name segments - */ - i = 0; - if (Info->NumCarats) - { - for (i = 0; i < Info->NumCarats; i++) - { - InternalName[i] = '^'; - } - } - - if (NumSegments <= 1) - { - Result = &InternalName[i]; - } - else if (NumSegments == 2) - { - InternalName[i] = AML_DUAL_NAME_PREFIX; - Result = &InternalName[(ACPI_NATIVE_UINT) (i+1)]; - } - else - { - InternalName[i] = AML_MULTI_NAME_PREFIX_OP; - InternalName[(ACPI_NATIVE_UINT) (i+1)] = (char) NumSegments; - Result = &InternalName[(ACPI_NATIVE_UINT) (i+2)]; - } - } - - /* Build the name (minus path separators) */ - - for (; NumSegments; NumSegments--) - { - for (i = 0; i < ACPI_NAME_SIZE; i++) - { - if (AcpiNsValidPathSeparator (*ExternalName) || - (*ExternalName == 0)) - { - /* Pad the segment with underscore(s) if segment is short */ - - Result[i] = '_'; - } - else - { - /* Convert the character to uppercase and save it */ - - Result[i] = (char) ACPI_TOUPPER ((int) *ExternalName); - ExternalName++; - } - } - - /* Now we must have a path separator, or the pathname is bad */ - - if (!AcpiNsValidPathSeparator (*ExternalName) && - (*ExternalName != 0)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Move on the next segment */ - - ExternalName++; - Result += ACPI_NAME_SIZE; - } - - /* Terminate the string */ - - *Result = 0; - - if (Info->FullyQualified) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Returning [%p] (abs) \"\\%s\"\n", - InternalName, InternalName)); - } - else - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Returning [%p] (rel) \"%s\"\n", - InternalName, InternalName)); - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsInternalizeName - * - * PARAMETERS: *ExternalName - External representation of name - * **Converted Name - Where to return the resulting - * internal represention of the name - * - * RETURN: Status - * - * DESCRIPTION: Convert an external representation (e.g. "\_PR_.CPU0") - * to internal form (e.g. 5c 2f 02 5f 50 52 5f 43 50 55 30) - * - *******************************************************************************/ - -ACPI_STATUS -AcpiNsInternalizeName ( - char *ExternalName, - char **ConvertedName) -{ - char *InternalName; - ACPI_NAMESTRING_INFO Info; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (NsInternalizeName); - - - if ((!ExternalName) || - (*ExternalName == 0) || - (!ConvertedName)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Get the length of the new internal name */ - - Info.ExternalName = ExternalName; - AcpiNsGetInternalNameLength (&Info); - - /* We need a segment to store the internal name */ - - InternalName = ACPI_ALLOCATE_ZEROED (Info.Length); - if (!InternalName) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Build the name */ - - Info.InternalName = InternalName; - Status = AcpiNsBuildInternalName (&Info); - if (ACPI_FAILURE (Status)) - { - ACPI_FREE (InternalName); - return_ACPI_STATUS (Status); - } - - *ConvertedName = InternalName; - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsExternalizeName - * - * PARAMETERS: InternalNameLength - Lenth of the internal name below - * InternalName - Internal representation of name - * ConvertedNameLength - Where the length is returned - * ConvertedName - Where the resulting external name - * is returned - * - * RETURN: Status - * - * DESCRIPTION: Convert internal name (e.g. 5c 2f 02 5f 50 52 5f 43 50 55 30) - * to its external (printable) form (e.g. "\_PR_.CPU0") - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsExternalizeName ( - UINT32 InternalNameLength, - char *InternalName, - UINT32 *ConvertedNameLength, - char **ConvertedName) -{ - ACPI_NATIVE_UINT NamesIndex = 0; - ACPI_NATIVE_UINT NumSegments = 0; - ACPI_NATIVE_UINT RequiredLength; - ACPI_NATIVE_UINT PrefixLength = 0; - ACPI_NATIVE_UINT i = 0; - ACPI_NATIVE_UINT j = 0; - - - ACPI_FUNCTION_TRACE (NsExternalizeName); - - - if (!InternalNameLength || - !InternalName || - !ConvertedName) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* - * Check for a prefix (one '\' | one or more '^'). - */ - switch (InternalName[0]) - { - case '\\': - PrefixLength = 1; - break; - - case '^': - for (i = 0; i < InternalNameLength; i++) - { - if (InternalName[i] == '^') - { - PrefixLength = i + 1; - } - else - { - break; - } - } - - if (i == InternalNameLength) - { - PrefixLength = i; - } - - break; - - default: - break; - } - - /* - * Check for object names. Note that there could be 0-255 of these - * 4-byte elements. - */ - if (PrefixLength < InternalNameLength) - { - switch (InternalName[PrefixLength]) - { - case AML_MULTI_NAME_PREFIX_OP: - - /* 4-byte names */ - - NamesIndex = PrefixLength + 2; - NumSegments = (ACPI_NATIVE_UINT) (UINT8) - InternalName[(ACPI_NATIVE_UINT) (PrefixLength + 1)]; - break; - - case AML_DUAL_NAME_PREFIX: - - /* Two 4-byte names */ - - NamesIndex = PrefixLength + 1; - NumSegments = 2; - break; - - case 0: - - /* NullName */ - - NamesIndex = 0; - NumSegments = 0; - break; - - default: - - /* one 4-byte name */ - - NamesIndex = PrefixLength; - NumSegments = 1; - break; - } - } - - /* - * Calculate the length of ConvertedName, which equals the length - * of the prefix, length of all object names, length of any required - * punctuation ('.') between object names, plus the NULL terminator. - */ - RequiredLength = PrefixLength + (4 * NumSegments) + - ((NumSegments > 0) ? (NumSegments - 1) : 0) + 1; - - /* - * Check to see if we're still in bounds. If not, there's a problem - * with InternalName (invalid format). - */ - if (RequiredLength > InternalNameLength) - { - ACPI_ERROR ((AE_INFO, "Invalid internal name")); - return_ACPI_STATUS (AE_BAD_PATHNAME); - } - - /* - * Build ConvertedName - */ - *ConvertedName = ACPI_ALLOCATE_ZEROED (RequiredLength); - if (!(*ConvertedName)) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - j = 0; - - for (i = 0; i < PrefixLength; i++) - { - (*ConvertedName)[j++] = InternalName[i]; - } - - if (NumSegments > 0) - { - for (i = 0; i < NumSegments; i++) - { - if (i > 0) - { - (*ConvertedName)[j++] = '.'; - } - - (*ConvertedName)[j++] = InternalName[NamesIndex++]; - (*ConvertedName)[j++] = InternalName[NamesIndex++]; - (*ConvertedName)[j++] = InternalName[NamesIndex++]; - (*ConvertedName)[j++] = InternalName[NamesIndex++]; - } - } - - if (ConvertedNameLength) - { - *ConvertedNameLength = (UINT32) RequiredLength; - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsMapHandleToNode - * - * PARAMETERS: Handle - Handle to be converted to an Node - * - * RETURN: A Name table entry pointer - * - * DESCRIPTION: Convert a namespace handle to a real Node - * - * Note: Real integer handles would allow for more verification - * and keep all pointers within this subsystem - however this introduces - * more (and perhaps unnecessary) overhead. - * - ******************************************************************************/ - -ACPI_NAMESPACE_NODE * -AcpiNsMapHandleToNode ( - ACPI_HANDLE Handle) -{ - - ACPI_FUNCTION_ENTRY (); - - - /* - * Simple implementation - */ - if ((!Handle) || (Handle == ACPI_ROOT_OBJECT)) - { - return (AcpiGbl_RootNode); - } - - /* We can at least attempt to verify the handle */ - - if (ACPI_GET_DESCRIPTOR_TYPE (Handle) != ACPI_DESC_TYPE_NAMED) - { - return (NULL); - } - - return (ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Handle)); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsConvertEntryToHandle - * - * PARAMETERS: Node - Node to be converted to a Handle - * - * RETURN: A user handle - * - * DESCRIPTION: Convert a real Node to a namespace handle - * - ******************************************************************************/ - -ACPI_HANDLE -AcpiNsConvertEntryToHandle ( - ACPI_NAMESPACE_NODE *Node) -{ - - - /* - * Simple implementation for now; - */ - return ((ACPI_HANDLE) Node); - - -/* Example future implementation --------------------- - - if (!Node) - { - return (NULL); - } - - if (Node == AcpiGbl_RootNode) - { - return (ACPI_ROOT_OBJECT); - } - - - return ((ACPI_HANDLE) Node); -------------------------------------------------------*/ -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsTerminate - * - * PARAMETERS: none - * - * RETURN: none - * - * DESCRIPTION: free memory allocated for namespace and ACPI table storage. - * - ******************************************************************************/ - -void -AcpiNsTerminate ( - void) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - - - ACPI_FUNCTION_TRACE (NsTerminate); - - - /* - * 1) Free the entire namespace -- all nodes and objects - * - * Delete all object descriptors attached to namepsace nodes - */ - AcpiNsDeleteNamespaceSubtree (AcpiGbl_RootNode); - - /* Detach any objects attached to the root */ - - ObjDesc = AcpiNsGetAttachedObject (AcpiGbl_RootNode); - if (ObjDesc) - { - AcpiNsDetachObject (AcpiGbl_RootNode); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Namespace freed\n")); - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsOpensScope - * - * PARAMETERS: Type - A valid namespace type - * - * RETURN: NEWSCOPE if the passed type "opens a name scope" according - * to the ACPI specification, else 0 - * - ******************************************************************************/ - -UINT32 -AcpiNsOpensScope ( - ACPI_OBJECT_TYPE Type) -{ - ACPI_FUNCTION_TRACE_STR (NsOpensScope, AcpiUtGetTypeName (Type)); - - - if (!AcpiUtValidObjectType (Type)) - { - /* type code out of range */ - - ACPI_WARNING ((AE_INFO, "Invalid Object Type %X", Type)); - return_UINT32 (ACPI_NS_NORMAL); - } - - return_UINT32 (((UINT32) AcpiGbl_NsProperties[Type]) & ACPI_NS_NEWSCOPE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsGetNode - * - * PARAMETERS: *Pathname - Name to be found, in external (ASL) format. The - * \ (backslash) and ^ (carat) prefixes, and the - * . (period) to separate segments are supported. - * PrefixNode - Root of subtree to be searched, or NS_ALL for the - * root of the name space. If Name is fully - * qualified (first INT8 is '\'), the passed value - * of Scope will not be accessed. - * Flags - Used to indicate whether to perform upsearch or - * not. - * ReturnNode - Where the Node is returned - * - * DESCRIPTION: Look up a name relative to a given scope and return the - * corresponding Node. NOTE: Scope can be null. - * - * MUTEX: Locks namespace - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsGetNode ( - ACPI_NAMESPACE_NODE *PrefixNode, - char *Pathname, - UINT32 Flags, - ACPI_NAMESPACE_NODE **ReturnNode) -{ - ACPI_GENERIC_STATE ScopeInfo; - ACPI_STATUS Status; - char *InternalPath; - - - ACPI_FUNCTION_TRACE_PTR (NsGetNode, Pathname); - - - if (!Pathname) - { - *ReturnNode = PrefixNode; - if (!PrefixNode) - { - *ReturnNode = AcpiGbl_RootNode; - } - return_ACPI_STATUS (AE_OK); - } - - /* Convert path to internal representation */ - - Status = AcpiNsInternalizeName (Pathname, &InternalPath); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Must lock namespace during lookup */ - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* Setup lookup scope (search starting point) */ - - ScopeInfo.Scope.Node = PrefixNode; - - /* Lookup the name in the namespace */ - - Status = AcpiNsLookup (&ScopeInfo, InternalPath, ACPI_TYPE_ANY, - ACPI_IMODE_EXECUTE, (Flags | ACPI_NS_DONT_OPEN_SCOPE), - NULL, ReturnNode); - if (ACPI_FAILURE (Status)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "%s, %s\n", - Pathname, AcpiFormatException (Status))); - } - - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - -Cleanup: - ACPI_FREE (InternalPath); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsGetParentNode - * - * PARAMETERS: Node - Current table entry - * - * RETURN: Parent entry of the given entry - * - * DESCRIPTION: Obtain the parent entry for a given entry in the namespace. - * - ******************************************************************************/ - -ACPI_NAMESPACE_NODE * -AcpiNsGetParentNode ( - ACPI_NAMESPACE_NODE *Node) -{ - ACPI_FUNCTION_ENTRY (); - - - if (!Node) - { - return (NULL); - } - - /* - * Walk to the end of this peer list. The last entry is marked with a flag - * and the peer pointer is really a pointer back to the parent. This saves - * putting a parent back pointer in each and every named object! - */ - while (!(Node->Flags & ANOBJ_END_OF_PEER_LIST)) - { - Node = Node->Peer; - } - - return (Node->Peer); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsGetNextValidNode - * - * PARAMETERS: Node - Current table entry - * - * RETURN: Next valid Node in the linked node list. NULL if no more valid - * nodes. - * - * DESCRIPTION: Find the next valid node within a name table. - * Useful for implementing NULL-end-of-list loops. - * - ******************************************************************************/ - -ACPI_NAMESPACE_NODE * -AcpiNsGetNextValidNode ( - ACPI_NAMESPACE_NODE *Node) -{ - - /* If we are at the end of this peer list, return NULL */ - - if (Node->Flags & ANOBJ_END_OF_PEER_LIST) - { - return NULL; - } - - /* Otherwise just return the next peer */ - - return (Node->Peer); -} - - -#ifdef ACPI_OBSOLETE_FUNCTIONS -/******************************************************************************* - * - * FUNCTION: AcpiNsFindParentName - * - * PARAMETERS: *ChildNode - Named Obj whose name is to be found - * - * RETURN: The ACPI name - * - * DESCRIPTION: Search for the given obj in its parent scope and return the - * name segment, or "????" if the parent name can't be found - * (which "should not happen"). - * - ******************************************************************************/ - -ACPI_NAME -AcpiNsFindParentName ( - ACPI_NAMESPACE_NODE *ChildNode) -{ - ACPI_NAMESPACE_NODE *ParentNode; - - - ACPI_FUNCTION_TRACE (NsFindParentName); - - - if (ChildNode) - { - /* Valid entry. Get the parent Node */ - - ParentNode = AcpiNsGetParentNode (ChildNode); - if (ParentNode) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Parent of %p [%4.4s] is %p [%4.4s]\n", - ChildNode, AcpiUtGetNodeName (ChildNode), - ParentNode, AcpiUtGetNodeName (ParentNode))); - - if (ParentNode->Name.Integer) - { - return_VALUE ((ACPI_NAME) ParentNode->Name.Integer); - } - } - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Unable to find parent of %p (%4.4s)\n", - ChildNode, AcpiUtGetNodeName (ChildNode))); - } - - return_VALUE (ACPI_UNKNOWN_NAME); -} -#endif - - diff --git a/sys/contrib/dev/acpica-unix-20061109/namespace/nswalk.c b/sys/contrib/dev/acpica-unix-20061109/namespace/nswalk.c deleted file mode 100644 index fd083ca062..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/namespace/nswalk.c +++ /dev/null @@ -1,391 +0,0 @@ -/****************************************************************************** - * - * Module Name: nswalk - Functions for walking the ACPI namespace - * $Revision: 1.44 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __NSWALK_C__ - -#include "acpi.h" -#include "acnamesp.h" - - -#define _COMPONENT ACPI_NAMESPACE - ACPI_MODULE_NAME ("nswalk") - - -/******************************************************************************* - * - * FUNCTION: AcpiNsGetNextNode - * - * PARAMETERS: Type - Type of node to be searched for - * ParentNode - Parent node whose children we are - * getting - * ChildNode - Previous child that was found. - * The NEXT child will be returned - * - * RETURN: ACPI_NAMESPACE_NODE - Pointer to the NEXT child or NULL if - * none is found. - * - * DESCRIPTION: Return the next peer node within the namespace. If Handle - * is valid, Scope is ignored. Otherwise, the first node - * within Scope is returned. - * - ******************************************************************************/ - -ACPI_NAMESPACE_NODE * -AcpiNsGetNextNode ( - ACPI_OBJECT_TYPE Type, - ACPI_NAMESPACE_NODE *ParentNode, - ACPI_NAMESPACE_NODE *ChildNode) -{ - ACPI_NAMESPACE_NODE *NextNode = NULL; - - - ACPI_FUNCTION_ENTRY (); - - - if (!ChildNode) - { - /* It's really the parent's _scope_ that we want */ - - if (ParentNode->Child) - { - NextNode = ParentNode->Child; - } - } - - else - { - /* Start search at the NEXT node */ - - NextNode = AcpiNsGetNextValidNode (ChildNode); - } - - /* If any type is OK, we are done */ - - if (Type == ACPI_TYPE_ANY) - { - /* NextNode is NULL if we are at the end-of-list */ - - return (NextNode); - } - - /* Must search for the node -- but within this scope only */ - - while (NextNode) - { - /* If type matches, we are done */ - - if (NextNode->Type == Type) - { - return (NextNode); - } - - /* Otherwise, move on to the next node */ - - NextNode = AcpiNsGetNextValidNode (NextNode); - } - - /* Not found */ - - return (NULL); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiNsWalkNamespace - * - * PARAMETERS: Type - ACPI_OBJECT_TYPE to search for - * StartNode - Handle in namespace where search begins - * MaxDepth - Depth to which search is to reach - * Flags - Whether to unlock the NS before invoking - * the callback routine - * UserFunction - Called when an object of "Type" is found - * Context - Passed to user function - * ReturnValue - from the UserFunction if terminated early. - * Otherwise, returns NULL. - * RETURNS: Status - * - * DESCRIPTION: Performs a modified depth-first walk of the namespace tree, - * starting (and ending) at the node specified by StartHandle. - * The UserFunction is called whenever a node that matches - * the type parameter is found. If the user function returns - * a non-zero value, the search is terminated immediately and this - * value is returned to the caller. - * - * The point of this procedure is to provide a generic namespace - * walk routine that can be called from multiple places to - * provide multiple services; the User Function can be tailored - * to each task, whether it is a print function, a compare - * function, etc. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsWalkNamespace ( - ACPI_OBJECT_TYPE Type, - ACPI_HANDLE StartNode, - UINT32 MaxDepth, - UINT32 Flags, - ACPI_WALK_CALLBACK UserFunction, - void *Context, - void **ReturnValue) -{ - ACPI_STATUS Status; - ACPI_STATUS MutexStatus; - ACPI_NAMESPACE_NODE *ChildNode; - ACPI_NAMESPACE_NODE *ParentNode; - ACPI_OBJECT_TYPE ChildType; - UINT32 Level; - - - ACPI_FUNCTION_TRACE (NsWalkNamespace); - - - /* Special case for the namespace Root Node */ - - if (StartNode == ACPI_ROOT_OBJECT) - { - StartNode = AcpiGbl_RootNode; - } - - /* Null child means "get first node" */ - - ParentNode = StartNode; - ChildNode = NULL; - ChildType = ACPI_TYPE_ANY; - Level = 1; - - /* - * Traverse the tree of nodes until we bubble back up to where we - * started. When Level is zero, the loop is done because we have - * bubbled up to (and passed) the original parent handle (StartEntry) - */ - while (Level > 0) - { - /* Get the next node in this scope. Null if not found */ - - Status = AE_OK; - ChildNode = AcpiNsGetNextNode (ACPI_TYPE_ANY, ParentNode, ChildNode); - if (ChildNode) - { - /* Found next child, get the type if we are not searching for ANY */ - - if (Type != ACPI_TYPE_ANY) - { - ChildType = ChildNode->Type; - } - - /* - * Ignore all temporary namespace nodes (created during control - * method execution) unless told otherwise. These temporary nodes - * can cause a race condition because they can be deleted during the - * execution of the user function (if the namespace is unlocked before - * invocation of the user function.) Only the debugger namespace dump - * will examine the temporary nodes. - */ - if ((ChildNode->Flags & ANOBJ_TEMPORARY) && - !(Flags & ACPI_NS_WALK_TEMP_NODES)) - { - Status = AE_CTRL_DEPTH; - } - - /* Type must match requested type */ - - else if (ChildType == Type) - { - /* - * Found a matching node, invoke the user callback function. - * Unlock the namespace if flag is set. - */ - if (Flags & ACPI_NS_WALK_UNLOCK) - { - MutexStatus = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (MutexStatus)) - { - return_ACPI_STATUS (MutexStatus); - } - } - - Status = UserFunction (ChildNode, Level, Context, ReturnValue); - - if (Flags & ACPI_NS_WALK_UNLOCK) - { - MutexStatus = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (MutexStatus)) - { - return_ACPI_STATUS (MutexStatus); - } - } - - switch (Status) - { - case AE_OK: - case AE_CTRL_DEPTH: - - /* Just keep going */ - break; - - case AE_CTRL_TERMINATE: - - /* Exit now, with OK status */ - - return_ACPI_STATUS (AE_OK); - - default: - - /* All others are valid exceptions */ - - return_ACPI_STATUS (Status); - } - } - - /* - * Depth first search: Attempt to go down another level in the - * namespace if we are allowed to. Don't go any further if we have - * reached the caller specified maximum depth or if the user - * function has specified that the maximum depth has been reached. - */ - if ((Level < MaxDepth) && (Status != AE_CTRL_DEPTH)) - { - if (AcpiNsGetNextNode (ACPI_TYPE_ANY, ChildNode, NULL)) - { - /* There is at least one child of this node, visit it */ - - Level++; - ParentNode = ChildNode; - ChildNode = NULL; - } - } - } - else - { - /* - * No more children of this node (AcpiNsGetNextNode failed), go - * back upwards in the namespace tree to the node's parent. - */ - Level--; - ChildNode = ParentNode; - ParentNode = AcpiNsGetParentNode (ParentNode); - } - } - - /* Complete walk, not terminated by user function */ - - return_ACPI_STATUS (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/namespace/nsxfeval.c b/sys/contrib/dev/acpica-unix-20061109/namespace/nsxfeval.c deleted file mode 100644 index 30508a37e6..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/namespace/nsxfeval.c +++ /dev/null @@ -1,891 +0,0 @@ -/******************************************************************************* - * - * Module Name: nsxfeval - Public interfaces to the ACPI subsystem - * ACPI Object evaluation interfaces - * $Revision: 1.29 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __NSXFEVAL_C__ - -#include "acpi.h" -#include "acnamesp.h" -#include "acinterp.h" - - -#define _COMPONENT ACPI_NAMESPACE - ACPI_MODULE_NAME ("nsxfeval") - - -/******************************************************************************* - * - * FUNCTION: AcpiEvaluateObjectTyped - * - * PARAMETERS: Handle - Object handle (optional) - * Pathname - Object pathname (optional) - * ExternalParams - List of parameters to pass to method, - * terminated by NULL. May be NULL - * if no parameters are being passed. - * ReturnBuffer - Where to put method's return value (if - * any). If NULL, no value is returned. - * ReturnType - Expected type of return object - * - * RETURN: Status - * - * DESCRIPTION: Find and evaluate the given object, passing the given - * parameters if necessary. One of "Handle" or "Pathname" must - * be valid (non-null) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvaluateObjectTyped ( - ACPI_HANDLE Handle, - ACPI_STRING Pathname, - ACPI_OBJECT_LIST *ExternalParams, - ACPI_BUFFER *ReturnBuffer, - ACPI_OBJECT_TYPE ReturnType) -{ - ACPI_STATUS Status; - BOOLEAN MustFree = FALSE; - - - ACPI_FUNCTION_TRACE (AcpiEvaluateObjectTyped); - - - /* Return buffer must be valid */ - - if (!ReturnBuffer) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - if (ReturnBuffer->Length == ACPI_ALLOCATE_BUFFER) - { - MustFree = TRUE; - } - - /* Evaluate the object */ - - Status = AcpiEvaluateObject (Handle, Pathname, ExternalParams, ReturnBuffer); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Type ANY means "don't care" */ - - if (ReturnType == ACPI_TYPE_ANY) - { - return_ACPI_STATUS (AE_OK); - } - - if (ReturnBuffer->Length == 0) - { - /* Error because caller specifically asked for a return value */ - - ACPI_ERROR ((AE_INFO, "No return value")); - return_ACPI_STATUS (AE_NULL_OBJECT); - } - - /* Examine the object type returned from EvaluateObject */ - - if (((ACPI_OBJECT *) ReturnBuffer->Pointer)->Type == ReturnType) - { - return_ACPI_STATUS (AE_OK); - } - - /* Return object type does not match requested type */ - - ACPI_ERROR ((AE_INFO, - "Incorrect return type [%s] requested [%s]", - AcpiUtGetTypeName (((ACPI_OBJECT *) ReturnBuffer->Pointer)->Type), - AcpiUtGetTypeName (ReturnType))); - - if (MustFree) - { - /* Caller used ACPI_ALLOCATE_BUFFER, free the return buffer */ - - AcpiOsFree (ReturnBuffer->Pointer); - ReturnBuffer->Pointer = NULL; - } - - ReturnBuffer->Length = 0; - return_ACPI_STATUS (AE_TYPE); -} - -ACPI_EXPORT_SYMBOL (AcpiEvaluateObjectTyped) - - -/******************************************************************************* - * - * FUNCTION: AcpiEvaluateObject - * - * PARAMETERS: Handle - Object handle (optional) - * Pathname - Object pathname (optional) - * ExternalParams - List of parameters to pass to method, - * terminated by NULL. May be NULL - * if no parameters are being passed. - * ReturnBuffer - Where to put method's return value (if - * any). If NULL, no value is returned. - * - * RETURN: Status - * - * DESCRIPTION: Find and evaluate the given object, passing the given - * parameters if necessary. One of "Handle" or "Pathname" must - * be valid (non-null) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvaluateObject ( - ACPI_HANDLE Handle, - ACPI_STRING Pathname, - ACPI_OBJECT_LIST *ExternalParams, - ACPI_BUFFER *ReturnBuffer) -{ - ACPI_STATUS Status; - ACPI_EVALUATE_INFO *Info; - ACPI_SIZE BufferSpaceNeeded; - UINT32 i; - - - ACPI_FUNCTION_TRACE (AcpiEvaluateObject); - - - /* Allocate and initialize the evaluation information block */ - - Info = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EVALUATE_INFO)); - if (!Info) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - Info->Pathname = Pathname; - Info->ParameterType = ACPI_PARAM_ARGS; - - /* Convert and validate the device handle */ - - Info->PrefixNode = AcpiNsMapHandleToNode (Handle); - if (!Info->PrefixNode) - { - Status = AE_BAD_PARAMETER; - goto Cleanup; - } - - /* - * If there are parameters to be passed to a control method, the external - * objects must all be converted to internal objects - */ - if (ExternalParams && ExternalParams->Count) - { - /* - * Allocate a new parameter block for the internal objects - * Add 1 to count to allow for null terminated internal list - */ - Info->Parameters = ACPI_ALLOCATE_ZEROED ( - ((ACPI_SIZE) ExternalParams->Count + 1) * sizeof (void *)); - if (!Info->Parameters) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* Convert each external object in the list to an internal object */ - - for (i = 0; i < ExternalParams->Count; i++) - { - Status = AcpiUtCopyEobjectToIobject ( - &ExternalParams->Pointer[i], &Info->Parameters[i]); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - } - Info->Parameters[ExternalParams->Count] = NULL; - } - - /* - * Three major cases: - * 1) Fully qualified pathname - * 2) No handle, not fully qualified pathname (error) - * 3) Valid handle - */ - if ((Pathname) && - (AcpiNsValidRootPrefix (Pathname[0]))) - { - /* The path is fully qualified, just evaluate by name */ - - Info->PrefixNode = NULL; - Status = AcpiNsEvaluate (Info); - } - else if (!Handle) - { - /* - * A handle is optional iff a fully qualified pathname is specified. - * Since we've already handled fully qualified names above, this is - * an error - */ - if (!Pathname) - { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Both Handle and Pathname are NULL")); - } - else - { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Null Handle with relative pathname [%s]", Pathname)); - } - - Status = AE_BAD_PARAMETER; - } - else - { - /* We have a namespace a node and a possible relative path */ - - Status = AcpiNsEvaluate (Info); - } - - /* - * If we are expecting a return value, and all went well above, - * copy the return value to an external object. - */ - if (ReturnBuffer) - { - if (!Info->ReturnObject) - { - ReturnBuffer->Length = 0; - } - else - { - if (ACPI_GET_DESCRIPTOR_TYPE (Info->ReturnObject) == - ACPI_DESC_TYPE_NAMED) - { - /* - * If we received a NS Node as a return object, this means that - * the object we are evaluating has nothing interesting to - * return (such as a mutex, etc.) We return an error because - * these types are essentially unsupported by this interface. - * We don't check up front because this makes it easier to add - * support for various types at a later date if necessary. - */ - Status = AE_TYPE; - Info->ReturnObject = NULL; /* No need to delete a NS Node */ - ReturnBuffer->Length = 0; - } - - if (ACPI_SUCCESS (Status)) - { - /* Get the size of the returned object */ - - Status = AcpiUtGetObjectSize (Info->ReturnObject, - &BufferSpaceNeeded); - if (ACPI_SUCCESS (Status)) - { - /* Validate/Allocate/Clear caller buffer */ - - Status = AcpiUtInitializeBuffer (ReturnBuffer, - BufferSpaceNeeded); - if (ACPI_FAILURE (Status)) - { - /* - * Caller's buffer is too small or a new one can't - * be allocated - */ - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Needed buffer size %X, %s\n", - (UINT32) BufferSpaceNeeded, - AcpiFormatException (Status))); - } - else - { - /* We have enough space for the object, build it */ - - Status = AcpiUtCopyIobjectToEobject (Info->ReturnObject, - ReturnBuffer); - } - } - } - } - } - - if (Info->ReturnObject) - { - /* - * Delete the internal return object. NOTE: Interpreter must be - * locked to avoid race condition. - */ - AcpiExEnterInterpreter (); - - /* Remove one reference on the return object (should delete it) */ - - AcpiUtRemoveReference (Info->ReturnObject); - AcpiExExitInterpreter (); - } - - -Cleanup: - - /* Free the input parameter list (if we created one) */ - - if (Info->Parameters) - { - /* Free the allocated parameter block */ - - AcpiUtDeleteInternalObjectList (Info->Parameters); - } - - ACPI_FREE (Info); - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiEvaluateObject) - - -/******************************************************************************* - * - * FUNCTION: AcpiWalkNamespace - * - * PARAMETERS: Type - ACPI_OBJECT_TYPE to search for - * StartObject - Handle in namespace where search begins - * MaxDepth - Depth to which search is to reach - * UserFunction - Called when an object of "Type" is found - * Context - Passed to user function - * ReturnValue - Location where return value of - * UserFunction is put if terminated early - * - * RETURNS Return value from the UserFunction if terminated early. - * Otherwise, returns NULL. - * - * DESCRIPTION: Performs a modified depth-first walk of the namespace tree, - * starting (and ending) at the object specified by StartHandle. - * The UserFunction is called whenever an object that matches - * the type parameter is found. If the user function returns - * a non-zero value, the search is terminated immediately and this - * value is returned to the caller. - * - * The point of this procedure is to provide a generic namespace - * walk routine that can be called from multiple places to - * provide multiple services; the User Function can be tailored - * to each task, whether it is a print function, a compare - * function, etc. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiWalkNamespace ( - ACPI_OBJECT_TYPE Type, - ACPI_HANDLE StartObject, - UINT32 MaxDepth, - ACPI_WALK_CALLBACK UserFunction, - void *Context, - void **ReturnValue) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (AcpiWalkNamespace); - - - /* Parameter validation */ - - if ((Type > ACPI_TYPE_LOCAL_MAX) || - (!MaxDepth) || - (!UserFunction)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* - * Lock the namespace around the walk. - * The namespace will be unlocked/locked around each call - * to the user function - since this function - * must be allowed to make Acpi calls itself. - */ - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - Status = AcpiNsWalkNamespace (Type, StartObject, MaxDepth, - ACPI_NS_WALK_UNLOCK, - UserFunction, Context, ReturnValue); - - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiWalkNamespace) - - -/******************************************************************************* - * - * FUNCTION: AcpiNsGetDeviceCallback - * - * PARAMETERS: Callback from AcpiGetDevice - * - * RETURN: Status - * - * DESCRIPTION: Takes callbacks from WalkNamespace and filters out all non- - * present devices, or if they specified a HID, it filters based - * on that. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiNsGetDeviceCallback ( - ACPI_HANDLE ObjHandle, - UINT32 NestingLevel, - void *Context, - void **ReturnValue) -{ - ACPI_GET_DEVICES_INFO *Info = Context; - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - UINT32 Flags; - ACPI_DEVICE_ID Hid; - ACPI_COMPATIBLE_ID_LIST *Cid; - ACPI_NATIVE_UINT i; - - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - Node = AcpiNsMapHandleToNode (ObjHandle); - Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - if (!Node) - { - return (AE_BAD_PARAMETER); - } - - /* Run _STA to determine if device is present */ - - Status = AcpiUtExecute_STA (Node, &Flags); - if (ACPI_FAILURE (Status)) - { - return (AE_CTRL_DEPTH); - } - - if (!(Flags & ACPI_STA_DEVICE_PRESENT)) - { - /* Don't examine children of the device if not present */ - - return (AE_CTRL_DEPTH); - } - - /* Filter based on device HID & CID */ - - if (Info->Hid != NULL) - { - Status = AcpiUtExecute_HID (Node, &Hid); - if (Status == AE_NOT_FOUND) - { - return (AE_OK); - } - else if (ACPI_FAILURE (Status)) - { - return (AE_CTRL_DEPTH); - } - - if (ACPI_STRNCMP (Hid.Value, Info->Hid, sizeof (Hid.Value)) != 0) - { - /* Get the list of Compatible IDs */ - - Status = AcpiUtExecute_CID (Node, &Cid); - if (Status == AE_NOT_FOUND) - { - return (AE_OK); - } - else if (ACPI_FAILURE (Status)) - { - return (AE_CTRL_DEPTH); - } - - /* Walk the CID list */ - - for (i = 0; i < Cid->Count; i++) - { - if (ACPI_STRNCMP (Cid->Id[i].Value, Info->Hid, - sizeof (ACPI_COMPATIBLE_ID)) != 0) - { - ACPI_FREE (Cid); - return (AE_OK); - } - } - ACPI_FREE (Cid); - } - } - - Status = Info->UserFunction (ObjHandle, NestingLevel, Info->Context, - ReturnValue); - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiGetDevices - * - * PARAMETERS: HID - HID to search for. Can be NULL. - * UserFunction - Called when a matching object is found - * Context - Passed to user function - * ReturnValue - Location where return value of - * UserFunction is put if terminated early - * - * RETURNS Return value from the UserFunction if terminated early. - * Otherwise, returns NULL. - * - * DESCRIPTION: Performs a modified depth-first walk of the namespace tree, - * starting (and ending) at the object specified by StartHandle. - * The UserFunction is called whenever an object of type - * Device is found. If the user function returns - * a non-zero value, the search is terminated immediately and this - * value is returned to the caller. - * - * This is a wrapper for WalkNamespace, but the callback performs - * additional filtering. Please see AcpiGetDeviceCallback. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetDevices ( - char *HID, - ACPI_WALK_CALLBACK UserFunction, - void *Context, - void **ReturnValue) -{ - ACPI_STATUS Status; - ACPI_GET_DEVICES_INFO Info; - - - ACPI_FUNCTION_TRACE (AcpiGetDevices); - - - /* Parameter validation */ - - if (!UserFunction) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* - * We're going to call their callback from OUR callback, so we need - * to know what it is, and their context parameter. - */ - Info.Hid = HID; - Info.Context = Context; - Info.UserFunction = UserFunction; - - /* - * Lock the namespace around the walk. - * The namespace will be unlocked/locked around each call - * to the user function - since this function - * must be allowed to make Acpi calls itself. - */ - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - Status = AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK, - AcpiNsGetDeviceCallback, &Info, ReturnValue); - - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiGetDevices) - - -/******************************************************************************* - * - * FUNCTION: AcpiAttachData - * - * PARAMETERS: ObjHandle - Namespace node - * Handler - Handler for this attachment - * Data - Pointer to data to be attached - * - * RETURN: Status - * - * DESCRIPTION: Attach arbitrary data and handler to a namespace node. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAttachData ( - ACPI_HANDLE ObjHandle, - ACPI_OBJECT_HANDLER Handler, - void *Data) -{ - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - - - /* Parameter validation */ - - if (!ObjHandle || - !Handler || - !Data) - { - return (AE_BAD_PARAMETER); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* Convert and validate the handle */ - - Node = AcpiNsMapHandleToNode (ObjHandle); - if (!Node) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - Status = AcpiNsAttachData (Node, Handler, Data); - -UnlockAndExit: - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiAttachData) - - -/******************************************************************************* - * - * FUNCTION: AcpiDetachData - * - * PARAMETERS: ObjHandle - Namespace node handle - * Handler - Handler used in call to AcpiAttachData - * - * RETURN: Status - * - * DESCRIPTION: Remove data that was previously attached to a node. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDetachData ( - ACPI_HANDLE ObjHandle, - ACPI_OBJECT_HANDLER Handler) -{ - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - - - /* Parameter validation */ - - if (!ObjHandle || - !Handler) - { - return (AE_BAD_PARAMETER); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* Convert and validate the handle */ - - Node = AcpiNsMapHandleToNode (ObjHandle); - if (!Node) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - Status = AcpiNsDetachData (Node, Handler); - -UnlockAndExit: - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiDetachData) - - -/******************************************************************************* - * - * FUNCTION: AcpiGetData - * - * PARAMETERS: ObjHandle - Namespace node - * Handler - Handler used in call to AttachData - * Data - Where the data is returned - * - * RETURN: Status - * - * DESCRIPTION: Retrieve data that was previously attached to a namespace node. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetData ( - ACPI_HANDLE ObjHandle, - ACPI_OBJECT_HANDLER Handler, - void **Data) -{ - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - - - /* Parameter validation */ - - if (!ObjHandle || - !Handler || - !Data) - { - return (AE_BAD_PARAMETER); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* Convert and validate the handle */ - - Node = AcpiNsMapHandleToNode (ObjHandle); - if (!Node) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - Status = AcpiNsGetAttachedData (Node, Handler, Data); - -UnlockAndExit: - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiGetData) - - diff --git a/sys/contrib/dev/acpica-unix-20061109/namespace/nsxfname.c b/sys/contrib/dev/acpica-unix-20061109/namespace/nsxfname.c deleted file mode 100644 index 79e6f2da45..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/namespace/nsxfname.c +++ /dev/null @@ -1,474 +0,0 @@ -/****************************************************************************** - * - * Module Name: nsxfname - Public interfaces to the ACPI subsystem - * ACPI Namespace oriented interfaces - * $Revision: 1.111 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __NSXFNAME_C__ - -#include "acpi.h" -#include "acnamesp.h" - - -#define _COMPONENT ACPI_NAMESPACE - ACPI_MODULE_NAME ("nsxfname") - - -/****************************************************************************** - * - * FUNCTION: AcpiGetHandle - * - * PARAMETERS: Parent - Object to search under (search scope). - * Pathname - Pointer to an asciiz string containing the - * name - * RetHandle - Where the return handle is returned - * - * RETURN: Status - * - * DESCRIPTION: This routine will search for a caller specified name in the - * name space. The caller can restrict the search region by - * specifying a non NULL parent. The parent value is itself a - * namespace handle. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetHandle ( - ACPI_HANDLE Parent, - ACPI_STRING Pathname, - ACPI_HANDLE *RetHandle) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node = NULL; - ACPI_NAMESPACE_NODE *PrefixNode = NULL; - - - ACPI_FUNCTION_ENTRY (); - - - /* Parameter Validation */ - - if (!RetHandle || !Pathname) - { - return (AE_BAD_PARAMETER); - } - - /* Convert a parent handle to a prefix node */ - - if (Parent) - { - PrefixNode = AcpiNsMapHandleToNode (Parent); - if (!PrefixNode) - { - return (AE_BAD_PARAMETER); - } - } - - /* - * Valid cases are: - * 1) Fully qualified pathname - * 2) Parent + Relative pathname - * - * Error for - */ - if (AcpiNsValidRootPrefix (Pathname[0])) - { - /* Pathname is fully qualified (starts with '\') */ - - /* Special case for root-only, since we can't search for it */ - - if (!ACPI_STRCMP (Pathname, ACPI_NS_ROOT_PATH)) - { - *RetHandle = AcpiNsConvertEntryToHandle (AcpiGbl_RootNode); - return (AE_OK); - } - } - else if (!PrefixNode) - { - /* Relative path with null prefix is disallowed */ - - return (AE_BAD_PARAMETER); - } - - /* Find the Node and convert to a handle */ - - Status = AcpiNsGetNode (PrefixNode, Pathname, ACPI_NS_NO_UPSEARCH, &Node); - if (ACPI_SUCCESS (Status)) - { - *RetHandle = AcpiNsConvertEntryToHandle (Node); - } - - return (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiGetHandle) - - -/****************************************************************************** - * - * FUNCTION: AcpiGetName - * - * PARAMETERS: Handle - Handle to be converted to a pathname - * NameType - Full pathname or single segment - * Buffer - Buffer for returned path - * - * RETURN: Pointer to a string containing the fully qualified Name. - * - * DESCRIPTION: This routine returns the fully qualified name associated with - * the Handle parameter. This and the AcpiPathnameToHandle are - * complementary functions. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetName ( - ACPI_HANDLE Handle, - UINT32 NameType, - ACPI_BUFFER *Buffer) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - - - /* Parameter validation */ - - if (NameType > ACPI_NAME_TYPE_MAX) - { - return (AE_BAD_PARAMETER); - } - - Status = AcpiUtValidateBuffer (Buffer); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - if (NameType == ACPI_FULL_PATHNAME) - { - /* Get the full pathname (From the namespace root) */ - - Status = AcpiNsHandleToPathname (Handle, Buffer); - return (Status); - } - - /* - * Wants the single segment ACPI name. - * Validate handle and convert to a namespace Node - */ - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - Node = AcpiNsMapHandleToNode (Handle); - if (!Node) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - /* Validate/Allocate/Clear caller buffer */ - - Status = AcpiUtInitializeBuffer (Buffer, ACPI_PATH_SEGMENT_LENGTH); - if (ACPI_FAILURE (Status)) - { - goto UnlockAndExit; - } - - /* Just copy the ACPI name from the Node and zero terminate it */ - - ACPI_STRNCPY (Buffer->Pointer, AcpiUtGetNodeName (Node), - ACPI_NAME_SIZE); - ((char *) Buffer->Pointer) [ACPI_NAME_SIZE] = 0; - Status = AE_OK; - - -UnlockAndExit: - - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiGetName) - - -/****************************************************************************** - * - * FUNCTION: AcpiGetObjectInfo - * - * PARAMETERS: Handle - Object Handle - * Buffer - Where the info is returned - * - * RETURN: Status - * - * DESCRIPTION: Returns information about an object as gleaned from the - * namespace node and possibly by running several standard - * control methods (Such as in the case of a device.) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetObjectInfo ( - ACPI_HANDLE Handle, - ACPI_BUFFER *Buffer) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - ACPI_DEVICE_INFO *Info; - ACPI_DEVICE_INFO *ReturnInfo; - ACPI_COMPATIBLE_ID_LIST *CidList = NULL; - ACPI_SIZE Size; - - - /* Parameter validation */ - - if (!Handle || !Buffer) - { - return (AE_BAD_PARAMETER); - } - - Status = AcpiUtValidateBuffer (Buffer); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - Info = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_DEVICE_INFO)); - if (!Info) - { - return (AE_NO_MEMORY); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - Node = AcpiNsMapHandleToNode (Handle); - if (!Node) - { - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - goto Cleanup; - } - - /* Init return structure */ - - Size = sizeof (ACPI_DEVICE_INFO); - - Info->Type = Node->Type; - Info->Name = Node->Name.Integer; - Info->Valid = 0; - - Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* If not a device, we are all done */ - - if (Info->Type == ACPI_TYPE_DEVICE) - { - /* - * Get extra info for ACPI Devices objects only: - * Run the Device _HID, _UID, _CID, _STA, _ADR and _SxD methods. - * - * Note: none of these methods are required, so they may or may - * not be present for this device. The Info->Valid bitfield is used - * to indicate which methods were found and ran successfully. - */ - - /* Execute the Device._HID method */ - - Status = AcpiUtExecute_HID (Node, &Info->HardwareId); - if (ACPI_SUCCESS (Status)) - { - Info->Valid |= ACPI_VALID_HID; - } - - /* Execute the Device._UID method */ - - Status = AcpiUtExecute_UID (Node, &Info->UniqueId); - if (ACPI_SUCCESS (Status)) - { - Info->Valid |= ACPI_VALID_UID; - } - - /* Execute the Device._CID method */ - - Status = AcpiUtExecute_CID (Node, &CidList); - if (ACPI_SUCCESS (Status)) - { - Size += CidList->Size; - Info->Valid |= ACPI_VALID_CID; - } - - /* Execute the Device._STA method */ - - Status = AcpiUtExecute_STA (Node, &Info->CurrentStatus); - if (ACPI_SUCCESS (Status)) - { - Info->Valid |= ACPI_VALID_STA; - } - - /* Execute the Device._ADR method */ - - Status = AcpiUtEvaluateNumericObject (METHOD_NAME__ADR, Node, - &Info->Address); - if (ACPI_SUCCESS (Status)) - { - Info->Valid |= ACPI_VALID_ADR; - } - - /* Execute the Device._SxD methods */ - - Status = AcpiUtExecute_Sxds (Node, Info->HighestDstates); - if (ACPI_SUCCESS (Status)) - { - Info->Valid |= ACPI_VALID_SXDS; - } - } - - /* Validate/Allocate/Clear caller buffer */ - - Status = AcpiUtInitializeBuffer (Buffer, Size); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* Populate the return buffer */ - - ReturnInfo = Buffer->Pointer; - ACPI_MEMCPY (ReturnInfo, Info, sizeof (ACPI_DEVICE_INFO)); - - if (CidList) - { - ACPI_MEMCPY (&ReturnInfo->CompatibilityId, CidList, CidList->Size); - } - - -Cleanup: - ACPI_FREE (Info); - if (CidList) - { - ACPI_FREE (CidList); - } - return (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiGetObjectInfo) - diff --git a/sys/contrib/dev/acpica-unix-20061109/namespace/nsxfobj.c b/sys/contrib/dev/acpica-unix-20061109/namespace/nsxfobj.c deleted file mode 100644 index 799729b1a4..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/namespace/nsxfobj.c +++ /dev/null @@ -1,356 +0,0 @@ -/******************************************************************************* - * - * Module Name: nsxfobj - Public interfaces to the ACPI subsystem - * ACPI Object oriented interfaces - * $Revision: 1.121 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __NSXFOBJ_C__ - -#include "acpi.h" -#include "acnamesp.h" - - -#define _COMPONENT ACPI_NAMESPACE - ACPI_MODULE_NAME ("nsxfobj") - -/******************************************************************************* - * - * FUNCTION: AcpiGetType - * - * PARAMETERS: Handle - Handle of object whose type is desired - * RetType - Where the type will be placed - * - * RETURN: Status - * - * DESCRIPTION: This routine returns the type associatd with a particular handle - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetType ( - ACPI_HANDLE Handle, - ACPI_OBJECT_TYPE *RetType) -{ - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - - - /* Parameter Validation */ - - if (!RetType) - { - return (AE_BAD_PARAMETER); - } - - /* - * Special case for the predefined Root Node - * (return type ANY) - */ - if (Handle == ACPI_ROOT_OBJECT) - { - *RetType = ACPI_TYPE_ANY; - return (AE_OK); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* Convert and validate the handle */ - - Node = AcpiNsMapHandleToNode (Handle); - if (!Node) - { - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return (AE_BAD_PARAMETER); - } - - *RetType = Node->Type; - - - Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiGetType) - - -/******************************************************************************* - * - * FUNCTION: AcpiGetParent - * - * PARAMETERS: Handle - Handle of object whose parent is desired - * RetHandle - Where the parent handle will be placed - * - * RETURN: Status - * - * DESCRIPTION: Returns a handle to the parent of the object represented by - * Handle. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetParent ( - ACPI_HANDLE Handle, - ACPI_HANDLE *RetHandle) -{ - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - - - if (!RetHandle) - { - return (AE_BAD_PARAMETER); - } - - /* Special case for the predefined Root Node (no parent) */ - - if (Handle == ACPI_ROOT_OBJECT) - { - return (AE_NULL_ENTRY); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* Convert and validate the handle */ - - Node = AcpiNsMapHandleToNode (Handle); - if (!Node) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - - /* Get the parent entry */ - - *RetHandle = - AcpiNsConvertEntryToHandle (AcpiNsGetParentNode (Node)); - - /* Return exception if parent is null */ - - if (!AcpiNsGetParentNode (Node)) - { - Status = AE_NULL_ENTRY; - } - - -UnlockAndExit: - - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiGetParent) - - -/******************************************************************************* - * - * FUNCTION: AcpiGetNextObject - * - * PARAMETERS: Type - Type of object to be searched for - * Parent - Parent object whose children we are getting - * LastChild - Previous child that was found. - * The NEXT child will be returned - * RetHandle - Where handle to the next object is placed - * - * RETURN: Status - * - * DESCRIPTION: Return the next peer object within the namespace. If Handle is - * valid, Scope is ignored. Otherwise, the first object within - * Scope is returned. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetNextObject ( - ACPI_OBJECT_TYPE Type, - ACPI_HANDLE Parent, - ACPI_HANDLE Child, - ACPI_HANDLE *RetHandle) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - ACPI_NAMESPACE_NODE *ParentNode = NULL; - ACPI_NAMESPACE_NODE *ChildNode = NULL; - - - /* Parameter validation */ - - if (Type > ACPI_TYPE_EXTERNAL_MAX) - { - return (AE_BAD_PARAMETER); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* If null handle, use the parent */ - - if (!Child) - { - /* Start search at the beginning of the specified scope */ - - ParentNode = AcpiNsMapHandleToNode (Parent); - if (!ParentNode) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - } - else - { - /* Non-null handle, ignore the parent */ - /* Convert and validate the handle */ - - ChildNode = AcpiNsMapHandleToNode (Child); - if (!ChildNode) - { - Status = AE_BAD_PARAMETER; - goto UnlockAndExit; - } - } - - /* Internal function does the real work */ - - Node = AcpiNsGetNextNode (Type, ParentNode, ChildNode); - if (!Node) - { - Status = AE_NOT_FOUND; - goto UnlockAndExit; - } - - if (RetHandle) - { - *RetHandle = AcpiNsConvertEntryToHandle (Node); - } - - -UnlockAndExit: - - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiGetNextObject) - diff --git a/sys/contrib/dev/acpica-unix-20061109/os_specific/service_layers/osdosxf.c b/sys/contrib/dev/acpica-unix-20061109/os_specific/service_layers/osdosxf.c deleted file mode 100644 index 195219709e..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/os_specific/service_layers/osdosxf.c +++ /dev/null @@ -1,1368 +0,0 @@ -/****************************************************************************** - * - * Module Name: osdosxf - DOS OSL interfaces - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -/* - * These interfaces are required in order to link to the ACPI subsystem - * parser. They are called during the execution of the parser, and all - * map directly to Clibrary calls. - */ - - -#pragma warning(disable:4115) /* warning C4115: named type definition in parentheses (caused by rpcasync.h> */ - -#include -#include -#include -#include -#include - -#include "acpi.h" -#include "amlcode.h" -#include "acparser.h" -#include "acdebug.h" -#include "16bit.h" - -#define _COMPONENT ACPI_OS_SERVICES - ACPI_MODULE_NAME ("adosd") - - -extern FILE *AcpiGbl_DebugFile; -FILE *AcpiGbl_OutputFile = stdout; - -ACPI_STATUS -AeLocalGetRootPointer ( - UINT32 Flags, - ACPI_POINTER *Address); - -typedef struct -{ - UINT32 Units; -} DOS_SEMAPHORE; - - -/****************************************************************************** - * - * FUNCTION: AcpiOsInitialize, AcpiOsTerminate - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Init and terminate. Nothing to do. - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsInitialize (void) -{ - return AE_OK; -} - - -ACPI_STATUS -AcpiOsTerminate (void) -{ - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsGetRootPointer - * - * PARAMETERS: Flags - Logical/Physical addressing - * PhysicalAddress - of the RSDP - * - * RETURN: Status - * - * DESCRIPTION: Returns the RSDP - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsGetRootPointer ( - UINT32 Flags, - ACPI_POINTER *Address) -{ - ACPI_STATUS Status; - - Status = AeLocalGetRootPointer (Flags, Address); - printf ("Root Pointer: %p\n", Address->Pointer.Logical); - return (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsPredefinedOverride - * - * PARAMETERS: InitVal - Initial value of the predefined object - * NewVal - The new value for the object - * - * RETURN: Status, pointer to value. Null pointer returned if not - * overriding. - * - * DESCRIPTION: Allow the OS to override predefined names - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsPredefinedOverride ( - const ACPI_PREDEFINED_NAMES *InitVal, - ACPI_STRING *NewVal) -{ - - if (!InitVal || !NewVal) - { - return (AE_BAD_PARAMETER); - } - - *NewVal = NULL; - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsTableOverride - * - * PARAMETERS: ExistingTable - Header of current table (probably firmware) - * NewTable - Where an entire new table is returned. - * - * RETURN: Status, pointer to new table. Null pointer returned if no - * table is available to override - * - * DESCRIPTION: Return a different version of a table if one is available - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsTableOverride ( - ACPI_TABLE_HEADER *ExistingTable, - ACPI_TABLE_HEADER **NewTable) -{ -#ifndef ACPI_EXEC_APP - UINT8 *NewTablePtr; - UINT32 TableLength; - ACPI_STATUS Status; - char Signature[4]; -#endif - - - if (!ExistingTable || !NewTable) - { - return (AE_BAD_PARAMETER); - } - -#ifdef ACPI_EXEC_APP - *NewTable = NULL; - return (AE_OK); - -#else - - ACPI_STRNCPY (Signature, ExistingTable->Signature, ACPI_NAME_SIZE); - - /* Correct signature for FADT is "FACP" */ - - if (ACPI_COMPARE_NAME (Signature, "FADT")) - { - ACPI_STRNCPY (Signature, ACPI_SIG_FADT, ACPI_NAME_SIZE); - } - - Status = AfFindTable (Signature, &NewTablePtr, &TableLength); - - *NewTable = NULL; - if (Status == AE_OK) - { - *NewTable = (ACPI_TABLE_HEADER *) NewTablePtr; - AcpiOsPrintf ("[%4.4s] obtained from memory, %d bytes\n", - (char *) &ExistingTable->Signature, (UINT32) (*NewTable)->Length); - } - return (Status); -#endif -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsReadable - * - * PARAMETERS: Pointer - Area to be verified - * Length - Size of area - * - * RETURN: TRUE if readable for entire length - * - * DESCRIPTION: Verify that a pointer is valid for reading - * - *****************************************************************************/ - -BOOLEAN -AcpiOsReadable ( - void *Pointer, - ACPI_SIZE Length) -{ - - return (TRUE); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsWritable - * - * PARAMETERS: Pointer - Area to be verified - * Length - Size of area - * - * RETURN: TRUE if writable for entire length - * - * DESCRIPTION: Verify that a pointer is valid for writing - * - *****************************************************************************/ - -BOOLEAN -AcpiOsWritable ( - void *Pointer, - ACPI_SIZE Length) -{ - - return (TRUE); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOslDoFormat - * - * PARAMETERS: fmt, ... Standard printf format - * - * RETURN: None - * - * DESCRIPTION: Replace %X with %lX everywhere. - * - *****************************************************************************/ - -static char NewFmt[256]; - -void -AcpiOslDoFormat ( - const char *Fmt) -{ - char *New = NewFmt; - const char *Old = Fmt; - - while (*Fmt) - { - if (*Fmt != '%') - { - *New++ = *Fmt++; - continue; - } - - *New++ = *Fmt++; - - if (*Fmt == 'x' || *Fmt == 'X') - { - memcpy (New, "lX", 2); - New += 2; - Fmt += 1; - continue; - } - - if (*Fmt == 'd') - { - memcpy (New, "ld", 2); - New += 2; - Fmt += 1; - continue; - } - - if (*Fmt == 'u') - { - memcpy (New, "lu", 2); - New += 2; - Fmt += 1; - continue; - } - - if (!ACPI_STRNCMP (Fmt, "2.2d", 4)) - { - memcpy (New, "2.2ld", 5); - New += 5; - Fmt += 4; - continue; - } - - if (!ACPI_STRNCMP (Fmt, "2d", 2)) - { - memcpy (New, "2ld", 3); - New += 3; - Fmt += 2; - continue; - } - - if (!ACPI_STRNCMP (Fmt, "8.8X", 4)) - { - memcpy (New, "8.8lX", 5); - New += 5; - Fmt += 4; - continue; - } - - if (!ACPI_STRNCMP (Fmt, "5.5X", 4)) - { - memcpy (New, "5.5lX", 5); - New += 5; - Fmt += 4; - continue; - } - - if (!ACPI_STRNCMP (Fmt, "4.4X", 4)) - { - memcpy (New, "4.4lX", 5); - New += 5; - Fmt += 4; - continue; - } - - if (!ACPI_STRNCMP (Fmt, "2.2X", 4)) - { - memcpy (New, "2.2lX", 5); - New += 5; - Fmt += 4; - continue; - } - - if (!ACPI_STRNCMP (Fmt, ".8X", 3)) - { - memcpy (New, ".8lX", 4); - New += 4; - Fmt += 3; - continue; - } - - if (!ACPI_STRNCMP (Fmt, ".4X", 3)) - { - memcpy (New, ".4lX", 4); - New += 4; - Fmt += 3; - continue; - } - - if (!ACPI_STRNCMP (Fmt, ".2X", 3)) - { - memcpy (New, ".2lX", 4); - New += 4; - Fmt += 3; - continue; - } - - if (!ACPI_STRNCMP (Fmt, "2X", 2)) - { - memcpy (New, "2lX", 3); - New += 3; - Fmt += 2; - continue; - } - - if (!ACPI_STRNCMP (Fmt, "02X", 2)) - { - memcpy (New, "02lX", 4); - New += 4; - Fmt += 3; - continue; - } - *New++ = *Fmt++; - } - - *New = 0; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsRedirectOutput - * - * PARAMETERS: Destination - An open file handle/pointer - * - * RETURN: None - * - * DESCRIPTION: Causes redirect of AcpiOsPrintf and AcpiOsVprintf - * - *****************************************************************************/ - -void -AcpiOsRedirectOutput ( - void *Destination) -{ - - AcpiGbl_OutputFile = Destination; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsPrintf - * - * PARAMETERS: fmt, ... Standard printf format - * - * RETURN: None - * - * DESCRIPTION: Formatted output - * - *****************************************************************************/ - -void ACPI_INTERNAL_VAR_XFACE -AcpiOsPrintf ( - const char *Fmt, - ...) -{ - va_list Args; - - - va_start (Args, Fmt); - - AcpiOsVprintf (Fmt, Args); - - va_end (Args); - return; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsVprintf - * - * PARAMETERS: fmt Standard printf format - * args Argument list - * - * RETURN: None - * - * DESCRIPTION: Formatted output with argument list pointer - * - *****************************************************************************/ - -void -AcpiOsVprintf ( - const char *Fmt, - va_list Args) -{ - INT32 Count = 0; - UINT8 Flags; - - - AcpiOslDoFormat (Fmt); - - Flags = AcpiGbl_DbOutputFlags; - if (Flags & ACPI_DB_REDIRECTABLE_OUTPUT) - { - /* Output is directable to either a file (if open) or the console */ - - if (AcpiGbl_DebugFile) - { - /* Output file is open, send the output there */ - - Count = vfprintf (AcpiGbl_DebugFile, NewFmt, Args); - } - else - { - /* No redirection, send output to console (once only!) */ - - Flags |= ACPI_DB_CONSOLE_OUTPUT; - } - } - - if (Flags & ACPI_DB_CONSOLE_OUTPUT) - { - Count = vfprintf (AcpiGbl_OutputFile, NewFmt, Args); - } - - return; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsGetLine - * - * PARAMETERS: fmt Standard printf format - * args Argument list - * - * RETURN: Actual bytes read - * - * DESCRIPTION: Formatted input with argument list pointer - * - *****************************************************************************/ - -UINT32 -AcpiOsGetLine ( - char *Buffer) -{ - UINT8 Temp; - UINT32 i; - - - for (i = 0; ; i++) - { - scanf ("%1c", &Temp); - if (!Temp || Temp == '\n') - { - break; - } - - Buffer [i] = Temp; - } - - /* Null terminate the buffer */ - - Buffer [i] = 0; - - /* Return the number of bytes in the string */ - - return (i); -} - -/****************************************************************************** - * - * FUNCTION: AcpiOsMapMemory - * - * PARAMETERS: where Physical address of memory to be mapped - * length How much memory to map - * there Logical address of mapped memory - * - * RETURN: Pointer to mapped memory. Null on error. - * - * DESCRIPTION: Map physical memory into caller's address space - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsMapMemory ( - ACPI_PHYSICAL_ADDRESS where, - ACPI_SIZE length, - void **there) -{ - *there = where; - - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsUnmapMemory - * - * PARAMETERS: where Logical address of memory to be unmapped - * length How much memory to unmap - * - * RETURN: None. - * - * DESCRIPTION: Delete a previously created mapping. Where and Length must - * correspond to a previous mapping exactly. - * - *****************************************************************************/ - -void -AcpiOsUnmapMemory ( - void *where, - ACPI_SIZE length) -{ - - return; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsAllocate - * - * PARAMETERS: Size Amount to allocate, in bytes - * - * RETURN: Pointer to the new allocation. Null on error. - * - * DESCRIPTION: Allocate memory. Algorithm is dependent on the OS. - * - *****************************************************************************/ - -UINT32 TotalAllocations; -UINT32 TotalSize; - -void * -AcpiOsAllocate ( - ACPI_SIZE size) -{ - void *Mem; - - - Mem = (void *) malloc ((size_t) size); - if (!Mem) - { - ACPI_ERROR ((AE_INFO, - "Could not allocate memory of size %X\n (total allocations/size, %X/%X)", - (UINT32) size, TotalAllocations, TotalSize)); - } - - TotalAllocations++; - TotalSize += size; - return Mem; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsFree - * - * PARAMETERS: mem Pointer to previously allocated memory - * - * RETURN: None. - * - * DESCRIPTION: Free memory allocated via AcpiOsAllocate - * - *****************************************************************************/ - -void -AcpiOsFree ( - char *mem) -{ - - - free ((void *) mem); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsCreateSemaphore - * - * PARAMETERS: InitialUnits - Units to be assigned to the new semaphore - * OutHandle - Where a handle will be returned - * - * RETURN: Status - * - * DESCRIPTION: Create an OS semaphore - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsCreateSemaphore ( - UINT32 MaxUnits, - UINT32 InitialUnits, - ACPI_HANDLE *OutHandle) -{ - DOS_SEMAPHORE *Sem; - - - Sem = AcpiOsAllocate (sizeof (DOS_SEMAPHORE)); - if (!Sem) - { - return (AE_NO_MEMORY); - } - - Sem->Units = InitialUnits; - *OutHandle = Sem; - return AE_OK; -} - -/****************************************************************************** - * - * FUNCTION: AcpiOsDeleteSemaphore - * - * PARAMETERS: Handle - Handle returned by AcpiOsCreateSemaphore - * - * RETURN: Status - * - * DESCRIPTION: Delete an OS semaphore - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsDeleteSemaphore ( - ACPI_HANDLE Handle) -{ - - if (!Handle) - { - return AE_BAD_PARAMETER; - } - - AcpiOsFree (Handle); - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsWaitSemaphore - * - * PARAMETERS: Handle - Handle returned by AcpiOsCreateSemaphore - * Units - How many units to wait for - * Timeout - How long to wait - * - * RETURN: Status - * - * DESCRIPTION: Wait for units - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsWaitSemaphore ( - ACPI_HANDLE Handle, - UINT32 Units, - UINT16 Timeout) -{ - DOS_SEMAPHORE *Sem; - - if (!Handle) - { - return AE_BAD_PARAMETER; - } - - Sem = Handle; - if (Sem->Units) - { - Sem->Units--; - return AE_OK; - } - - - return AE_TIME; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsSignalSemaphore - * - * PARAMETERS: Handle - Handle returned by AcpiOsCreateSemaphore - * Units - Number of units to send - * - * RETURN: Status - * - * DESCRIPTION: Send units - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsSignalSemaphore ( - ACPI_HANDLE Handle, - UINT32 Units) -{ - DOS_SEMAPHORE *Sem; - - if (!Handle) - { - return AE_BAD_PARAMETER; - } - - Sem = Handle; - Sem->Units++; - return AE_OK; -} - - -ACPI_STATUS -AcpiOsCreateLock ( - ACPI_SPINLOCK *OutHandle); -{ - - return (AcpiOsCreateSemaphore (1, 1, OutHandle)); -} - -void -AcpiOsDeleteLock ( - ACPI_SPINLOCK Handle) -{ - AcpiOsDeleteSemaphore (Handle); -} - - -ACPI_CPU_FLAGS -AcpiOsAcquireLock ( - ACPI_SPINLOCK Handle) -{ - AcpiOsWaitSemaphore (Handle, 1, 0xFFFF); - return (0); -} - - -void -AcpiOsReleaseLock ( - ACPI_SPINLOCK Handle, - ACPI_CPU_FLAGS Flags) -{ - AcpiOsSignalSemaphore (Handle, 1); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsInstallInterruptHandler - * - * PARAMETERS: InterruptNumber Level handler should respond to. - * Isr Address of the ACPI interrupt handler - * ExceptPtr Where status is returned - * - * RETURN: Handle to the newly installed handler. - * - * DESCRIPTION: Install an interrupt handler. Used to install the ACPI - * OS-independent handler. - * - *****************************************************************************/ - -UINT32 -AcpiOsInstallInterruptHandler ( - UINT32 InterruptNumber, - ACPI_OSD_HANDLER ServiceRoutine, - void *Context) -{ - - - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsRemoveInterruptHandler - * - * PARAMETERS: Handle Returned when handler was installed - * - * RETURN: Status - * - * DESCRIPTION: Uninstalls an interrupt handler. - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsRemoveInterruptHandler ( - UINT32 InterruptNumber, - ACPI_OSD_HANDLER ServiceRoutine) -{ - - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsGetThreadId - * - * PARAMETERS: None - * - * RETURN: Id of the running thread - * - * DESCRIPTION: Get the Id of the current (running) thread - * - *****************************************************************************/ - -ACPI_THREAD_ID -AcpiOsGetThreadId ( - void) -{ - - /* Only one thread! */ - - return (1); - -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsExecute - * - * PARAMETERS: Type - Type of execution - * Function - Address of the function to execute - * Context - Passed as a parameter to the function - * - * RETURN: Status. - * - * DESCRIPTION: Execute a new thread - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsExecute ( - ACPI_EXECUTE_TYPE Type, - ACPI_OSD_EXEC_CALLBACK Function, - void *Context) -{ - - return 0; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsBreakpoint - * - * PARAMETERS: Msg Message to print - * - * RETURN: Status - * - * DESCRIPTION: Print a message and break to the debugger. - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsBreakpoint ( - char *Msg) -{ - - /* Print the message and do an INT 3 */ - - if (Msg) - { - AcpiOsPrintf ("AcpiOsBreakpoint: %s ****\n", Msg); - } - else - { - AcpiOsPrintf ("At AcpiOsBreakpoint ****\n"); - } - - - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsStall - * - * PARAMETERS: microseconds To sleep - * - * RETURN: Blocks until sleep is completed. - * - * DESCRIPTION: Sleep at microsecond granularity - * - *****************************************************************************/ - -void -AcpiOsStall ( - UINT32 microseconds) -{ - - return; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsSleep - * - * PARAMETERS: milliseconds To sleep - * - * RETURN: Blocks until sleep is completed. - * - * DESCRIPTION: Sleep at millisecond granularity - * - *****************************************************************************/ - -void -AcpiOsSleep ( - ACPI_INTEGER milliseconds) -{ - - return; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsGetTimer - * - * PARAMETERS: None - * - * RETURN: Current time in 100 nanosecond units - * - * DESCRIPTION: Get the current system time - * - *****************************************************************************/ - -UINT64 -AcpiOsGetTimer (void) -{ - UINT64 Time; - - Time.Lo = 0; - Time.Hi = 0; - return (Time); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsValidateInterface - * - * PARAMETERS: Interface - Requested interface to be validated - * - * RETURN: AE_OK if interface is supported, AE_SUPPORT otherwise - * - * DESCRIPTION: Match an interface string to the interfaces supported by the - * host. Strings originate from an AML call to the _OSI method. - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsValidateInterface ( - char *Interface) -{ - - return (AE_SUPPORT); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsValidateAddress - * - * PARAMETERS: SpaceId - ACPI space ID - * Address - Physical address - * Length - Address length - * - * RETURN: AE_OK if Address/Length is valid for the SpaceId. Otherwise, - * should return AE_AML_ILLEGAL_ADDRESS. - * - * DESCRIPTION: Validate a system address via the host OS. Used to validate - * the addresses accessed by AML operation regions. - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsValidateAddress ( - UINT8 SpaceId, - ACPI_PHYSICAL_ADDRESS Address, - ACPI_SIZE Length) -{ - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsReadPciConfiguration - * - * PARAMETERS: PciId Seg/Bus/Dev - * Register Device Register - * Value Buffer where value is placed - * Width Number of bits - * - * RETURN: Status - * - * DESCRIPTION: Read data from PCI configuration space - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsReadPciConfiguration ( - ACPI_PCI_ID *PciId, - UINT32 Register, - void *Value, - UINT32 Width) -{ - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsWritePciConfiguration - * - * PARAMETERS: PciId Seg/Bus/Dev - * Register Device Register - * Value Value to be written - * Width Number of bits - * - * RETURN: Status. - * - * DESCRIPTION: Write data to PCI configuration space - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsWritePciConfiguration ( - ACPI_PCI_ID *PciId, - UINT32 Register, - ACPI_INTEGER Value, - UINT32 Width) -{ - - return (AE_OK); -} - -/* TEMPORARY STUB FUNCTION */ -void -AcpiOsDerivePciId( - ACPI_HANDLE rhandle, - ACPI_HANDLE chandle, - ACPI_PCI_ID **PciId) -{ - -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsReadPort - * - * PARAMETERS: Address Address of I/O port/register to read - * Value Where value is placed - * Width Number of bits - * - * RETURN: Value read from port - * - * DESCRIPTION: Read data from an I/O port or register - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsReadPort ( - ACPI_IO_ADDRESS Address, - UINT32 *Value, - UINT32 Width) -{ - - switch (Width) - { - case 8: - *Value = 0xFF; - break; - - case 16: - *Value = 0xFFFF; - break; - - case 32: - *Value = 0xFFFFFFFF; - break; - } - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsWritePort - * - * PARAMETERS: Address Address of I/O port/register to write - * Value Value to write - * Width Number of bits - * - * RETURN: None - * - * DESCRIPTION: Write data to an I/O port or register - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsWritePort ( - ACPI_IO_ADDRESS Address, - UINT32 Value, - UINT32 Width) -{ - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsReadMemory - * - * PARAMETERS: Address Physical Memory Address to read - * Value Where value is placed - * Width Number of bits - * - * RETURN: Value read from physical memory address - * - * DESCRIPTION: Read data from a physical memory address - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsReadMemory ( - ACPI_PHYSICAL_ADDRESS Address, - UINT32 *Value, - UINT32 Width) -{ - - switch (Width) - { - case 8: - case 16: - case 32: - *Value = 0; - break; - - default: - return (AE_BAD_PARAMETER); - break; - } - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsWriteMemory - * - * PARAMETERS: Address Physical Memory Address to write - * Value Value to write - * Width Number of bits - * - * RETURN: None - * - * DESCRIPTION: Write data to a physical memory address - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsWriteMemory ( - ACPI_PHYSICAL_ADDRESS Address, - UINT32 Value, - UINT32 Width) -{ - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsSignal - * - * PARAMETERS: Function ACPI CA signal function code - * Info Pointer to function-dependent structure - * - * RETURN: Status - * - * DESCRIPTION: Miscellaneous functions - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsSignal ( - UINT32 Function, - void *Info) -{ - - return (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/os_specific/service_layers/osunixdir.c b/sys/contrib/dev/acpica-unix-20061109/os_specific/service_layers/osunixdir.c deleted file mode 100644 index 39bf6e459d..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/os_specific/service_layers/osunixdir.c +++ /dev/null @@ -1,303 +0,0 @@ - -/****************************************************************************** - * - * Module Name: osunixdir - Unix directory access interfaces - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include -#include -#include -#include -#include -#include -#include - -#include "acpisrc.h" - -typedef struct ExternalFindInfo -{ - char *DirPathname; - DIR *DirPtr; - char temp_buffer[128]; - char *WildcardSpec; - char RequestedFileType; - -} EXTERNAL_FIND_INFO; - - -/******************************************************************************* - * - * FUNCTION: AcpiOsOpenDirectory - * - * PARAMETERS: DirPathname - Full pathname to the directory - * WildcardSpec - string of the form "*.c", etc. - * - * RETURN: A directory "handle" to be used in subsequent search operations. - * NULL returned on failure. - * - * DESCRIPTION: Open a directory in preparation for a wildcard search - * - ******************************************************************************/ - -void * -AcpiOsOpenDirectory ( - char *DirPathname, - char *WildcardSpec, - char RequestedFileType) -{ - EXTERNAL_FIND_INFO *ExternalInfo; - DIR *dir; - - - /* Allocate the info struct that will be returned to the caller */ - - ExternalInfo = calloc (sizeof (EXTERNAL_FIND_INFO), 1); - if (!ExternalInfo) - { - return NULL; - } - - /* Get the directory stream */ - - dir = opendir(DirPathname); - if (!dir) - { - free(ExternalInfo); - return NULL; - } - - /* Save the info in the return structure */ - - ExternalInfo->WildcardSpec = WildcardSpec; - ExternalInfo->RequestedFileType = RequestedFileType; - ExternalInfo->DirPathname = DirPathname; - ExternalInfo->DirPtr = dir; - return (ExternalInfo); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiOsGetNextFilename - * - * PARAMETERS: DirHandle - Created via AcpiOsOpenDirectory - * - * RETURN: Next filename matched. NULL if no more matches. - * - * DESCRIPTION: Get the next file in the directory that matches the wildcard - * specification. - * - ******************************************************************************/ - -char * -AcpiOsGetNextFilename ( - void *DirHandle) -{ - EXTERNAL_FIND_INFO *ExternalInfo = DirHandle; - struct dirent *dir_entry; - - while((dir_entry = readdir(ExternalInfo->DirPtr))) - { - if (!fnmatch(ExternalInfo->WildcardSpec, dir_entry->d_name, 0)) - { - char *temp_str; - int str_len; - struct stat temp_stat; - int err; - - if (dir_entry->d_name[0] == '.') - continue; - - str_len = strlen(dir_entry->d_name) + strlen (ExternalInfo->DirPathname) + 2; - - temp_str = calloc(str_len, 1); - if (!temp_str) - { - printf ("Could not allocate buffer for temporary string\n"); - return NULL; - } - - strcpy(temp_str, ExternalInfo->DirPathname); - strcat(temp_str, "/"); - strcat(temp_str, dir_entry->d_name); - - err = stat(temp_str, &temp_stat); - free (temp_str); - if (err == -1) - { - printf ("stat() error - should not happen\n"); - return NULL; - } - - if ((S_ISDIR(temp_stat.st_mode) - && (ExternalInfo->RequestedFileType == REQUEST_DIR_ONLY)) - || - ((!S_ISDIR(temp_stat.st_mode) - && ExternalInfo->RequestedFileType == REQUEST_FILE_ONLY))) - { - /* copy to a temp buffer because dir_entry struct is on the stack */ - strcpy(ExternalInfo->temp_buffer, dir_entry->d_name); - return (ExternalInfo->temp_buffer); - } - } - } - - return NULL; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiOsCloseDirectory - * - * PARAMETERS: DirHandle - Created via AcpiOsOpenDirectory - * - * RETURN: None. - * - * DESCRIPTION: Close the open directory and cleanup. - * - ******************************************************************************/ - -void -AcpiOsCloseDirectory ( - void *DirHandle) -{ - EXTERNAL_FIND_INFO *ExternalInfo = DirHandle; - - - /* Close the directory and free allocations */ - - closedir(ExternalInfo->DirPtr); - free (DirHandle); -} - -/* Other functions acpisrc uses but that aren't standard on Unix */ - -/* lowercase a string */ -char* -strlwr ( - char *str) -{ - int length; - int i; - - length = strlen(str); - - for (i = 0; i < length; i++) - { - str[i] = tolower(str[i]); - } - - return str; -} diff --git a/sys/contrib/dev/acpica-unix-20061109/os_specific/service_layers/osunixxf.c b/sys/contrib/dev/acpica-unix-20061109/os_specific/service_layers/osunixxf.c deleted file mode 100644 index 246f426cf9..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/os_specific/service_layers/osunixxf.c +++ /dev/null @@ -1,1155 +0,0 @@ -/****************************************************************************** - * - * Module Name: osunixxf - UNIX OSL interfaces - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -/* - * These interfaces are required in order to compile the ASL compiler under - * Linux. - */ - -#include -#include -#include -#include -#include - -#include "acpi.h" -#include "amlcode.h" -#include "acparser.h" -#include "acdebug.h" - -#define _COMPONENT ACPI_OS_SERVICES - ACPI_MODULE_NAME ("osunixxf") - - -extern FILE *AcpiGbl_DebugFile; -FILE *AcpiGbl_OutputFile; - -ACPI_PHYSICAL_ADDRESS -AeLocalGetRootPointer ( - void); - - -/****************************************************************************** - * - * FUNCTION: AcpiOsInitialize, AcpiOsTerminate - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Init and terminate. Nothing to do. - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsInitialize (void) -{ - AcpiGbl_OutputFile = stdout; - - return AE_OK; -} - - -ACPI_STATUS -AcpiOsTerminate (void) -{ - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsGetRootPointer - * - * PARAMETERS: None - * - * RETURN: RSDP physical address - * - * DESCRIPTION: Gets the root pointer (RSDP) - * - *****************************************************************************/ - -ACPI_PHYSICAL_ADDRESS -AcpiOsGetRootPointer ( - void) -{ - - return (AeLocalGetRootPointer ()); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsPredefinedOverride - * - * PARAMETERS: InitVal - Initial value of the predefined object - * NewVal - The new value for the object - * - * RETURN: Status, pointer to value. Null pointer returned if not - * overriding. - * - * DESCRIPTION: Allow the OS to override predefined names - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsPredefinedOverride ( - const ACPI_PREDEFINED_NAMES *InitVal, - ACPI_STRING *NewVal) -{ - - if (!InitVal || !NewVal) - { - return (AE_BAD_PARAMETER); - } - - *NewVal = NULL; - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsTableOverride - * - * PARAMETERS: ExistingTable - Header of current table (probably firmware) - * NewTable - Where an entire new table is returned. - * - * RETURN: Status, pointer to new table. Null pointer returned if no - * table is available to override - * - * DESCRIPTION: Return a different version of a table if one is available - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsTableOverride ( - ACPI_TABLE_HEADER *ExistingTable, - ACPI_TABLE_HEADER **NewTable) -{ - - if (!ExistingTable || !NewTable) - { - return (AE_BAD_PARAMETER); - } - - *NewTable = NULL; - -#ifdef ACPI_EXEC_APP - - /* This code exercises the table override mechanism in the core */ - - if (ACPI_COMPARE_NAME (ExistingTable->Signature, ACPI_SIG_DSDT)) - { - /* override DSDT with itself */ - - *NewTable = AcpiGbl_DbTablePtr; - } - return (AE_OK); -#else - return AE_NO_ACPI_TABLES; -#endif -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsReadable - * - * PARAMETERS: Pointer - Area to be verified - * Length - Size of area - * - * RETURN: TRUE if readable for entire length - * - * DESCRIPTION: Verify that a pointer is valid for reading - * - *****************************************************************************/ - -BOOLEAN -AcpiOsReadable ( - void *Pointer, - ACPI_SIZE Length) -{ - - return (TRUE); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsWritable - * - * PARAMETERS: Pointer - Area to be verified - * Length - Size of area - * - * RETURN: TRUE if writable for entire length - * - * DESCRIPTION: Verify that a pointer is valid for writing - * - *****************************************************************************/ - -BOOLEAN -AcpiOsWritable ( - void *Pointer, - ACPI_SIZE Length) -{ - - return (TRUE); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsRedirectOutput - * - * PARAMETERS: Destination - An open file handle/pointer - * - * RETURN: None - * - * DESCRIPTION: Causes redirect of AcpiOsPrintf and AcpiOsVprintf - * - *****************************************************************************/ - -void -AcpiOsRedirectOutput ( - void *Destination) -{ - - AcpiGbl_OutputFile = Destination; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsPrintf - * - * PARAMETERS: fmt, ... Standard printf format - * - * RETURN: None - * - * DESCRIPTION: Formatted output - * - *****************************************************************************/ - -void ACPI_INTERNAL_VAR_XFACE -AcpiOsPrintf ( - const char *Fmt, - ...) -{ - va_list Args; - - - va_start (Args, Fmt); - - AcpiOsVprintf (Fmt, Args); - - va_end (Args); - return; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsVprintf - * - * PARAMETERS: fmt Standard printf format - * args Argument list - * - * RETURN: None - * - * DESCRIPTION: Formatted output with argument list pointer - * - *****************************************************************************/ - -void -AcpiOsVprintf ( - const char *Fmt, - va_list Args) -{ - INT32 Count = 0; - UINT8 Flags; - - - Flags = AcpiGbl_DbOutputFlags; - if (Flags & ACPI_DB_REDIRECTABLE_OUTPUT) - { - /* Output is directable to either a file (if open) or the console */ - - if (AcpiGbl_DebugFile) - { - /* Output file is open, send the output there */ - - Count = vfprintf (AcpiGbl_DebugFile, Fmt, Args); - } - else - { - /* No redirection, send output to console (once only!) */ - - Flags |= ACPI_DB_CONSOLE_OUTPUT; - } - } - - if (Flags & ACPI_DB_CONSOLE_OUTPUT) - { - Count = vfprintf (AcpiGbl_OutputFile, Fmt, Args); - } - - return; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsGetLine - * - * PARAMETERS: fmt Standard printf format - * args Argument list - * - * RETURN: Actual bytes read - * - * DESCRIPTION: Formatted input with argument list pointer - * - *****************************************************************************/ - -UINT32 -AcpiOsGetLine ( - char *Buffer) -{ - UINT8 Temp; - UINT32 i; - - - for (i = 0; ; i++) - { - scanf ("%1c", &Temp); - if (!Temp || Temp == '\n') - { - break; - } - - Buffer [i] = Temp; - } - - /* Null terminate the buffer */ - - Buffer [i] = 0; - - /* Return the number of bytes in the string */ - - return (i); -} - -/****************************************************************************** - * - * FUNCTION: AcpiOsMapMemory - * - * PARAMETERS: where Physical address of memory to be mapped - * length How much memory to map - * - * RETURN: Pointer to mapped memory. Null on error. - * - * DESCRIPTION: Map physical memory into caller's address space - * - *****************************************************************************/ - -void * -AcpiOsMapMemory ( - ACPI_PHYSICAL_ADDRESS where, - ACPI_SIZE length) -{ - - return (ACPI_TO_POINTER ((ACPI_NATIVE_UINT) where)); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsUnmapMemory - * - * PARAMETERS: where Logical address of memory to be unmapped - * length How much memory to unmap - * - * RETURN: None. - * - * DESCRIPTION: Delete a previously created mapping. Where and Length must - * correspond to a previous mapping exactly. - * - *****************************************************************************/ - -void -AcpiOsUnmapMemory ( - void *where, - ACPI_SIZE length) -{ - - return; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsAllocate - * - * PARAMETERS: Size Amount to allocate, in bytes - * - * RETURN: Pointer to the new allocation. Null on error. - * - * DESCRIPTION: Allocate memory. Algorithm is dependent on the OS. - * - *****************************************************************************/ - -void * -AcpiOsAllocate ( - ACPI_SIZE size) -{ - void *Mem; - - - Mem = (void *) malloc ((size_t) size); - - return Mem; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsFree - * - * PARAMETERS: mem Pointer to previously allocated memory - * - * RETURN: None. - * - * DESCRIPTION: Free memory allocated via AcpiOsAllocate - * - *****************************************************************************/ - -void -AcpiOsFree ( - void *mem) -{ - - - free (mem); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsCreateSemaphore - * - * PARAMETERS: InitialUnits - Units to be assigned to the new semaphore - * OutHandle - Where a handle will be returned - * - * RETURN: Status - * - * DESCRIPTION: Create an OS semaphore - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsCreateSemaphore ( - UINT32 MaxUnits, - UINT32 InitialUnits, - ACPI_HANDLE *OutHandle) -{ - - - *OutHandle = (ACPI_HANDLE) 1; - return AE_OK; -} - -/****************************************************************************** - * - * FUNCTION: AcpiOsDeleteSemaphore - * - * PARAMETERS: Handle - Handle returned by AcpiOsCreateSemaphore - * - * RETURN: Status - * - * DESCRIPTION: Delete an OS semaphore - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsDeleteSemaphore ( - ACPI_HANDLE Handle) -{ - - if (!Handle) - { - return AE_BAD_PARAMETER; - } - - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsWaitSemaphore - * - * PARAMETERS: Handle - Handle returned by AcpiOsCreateSemaphore - * Units - How many units to wait for - * Timeout - How long to wait - * - * RETURN: Status - * - * DESCRIPTION: Wait for units - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsWaitSemaphore ( - ACPI_HANDLE Handle, - UINT32 Units, - UINT16 Timeout) -{ - - - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsSignalSemaphore - * - * PARAMETERS: Handle - Handle returned by AcpiOsCreateSemaphore - * Units - Number of units to send - * - * RETURN: Status - * - * DESCRIPTION: Send units - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsSignalSemaphore ( - ACPI_HANDLE Handle, - UINT32 Units) -{ - - - return AE_OK; -} - - -ACPI_STATUS -AcpiOsCreateLock ( - ACPI_SPINLOCK *OutHandle) -{ - - return (AcpiOsCreateSemaphore (1, 1, OutHandle)); -} - -void -AcpiOsDeleteLock ( - ACPI_SPINLOCK Handle) -{ - AcpiOsDeleteSemaphore (Handle); -} - - -ACPI_CPU_FLAGS -AcpiOsAcquireLock ( - ACPI_HANDLE Handle) -{ - AcpiOsWaitSemaphore (Handle, 1, 0xFFFF); - return (0); -} - - -void -AcpiOsReleaseLock ( - ACPI_SPINLOCK Handle, - ACPI_CPU_FLAGS Flags) -{ - AcpiOsSignalSemaphore (Handle, 1); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsInstallInterruptHandler - * - * PARAMETERS: InterruptNumber Level handler should respond to. - * Isr Address of the ACPI interrupt handler - * ExceptPtr Where status is returned - * - * RETURN: Handle to the newly installed handler. - * - * DESCRIPTION: Install an interrupt handler. Used to install the ACPI - * OS-independent handler. - * - *****************************************************************************/ - -UINT32 -AcpiOsInstallInterruptHandler ( - UINT32 InterruptNumber, - ACPI_OSD_HANDLER ServiceRoutine, - void *Context) -{ - - - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsRemoveInterruptHandler - * - * PARAMETERS: Handle Returned when handler was installed - * - * RETURN: Status - * - * DESCRIPTION: Uninstalls an interrupt handler. - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsRemoveInterruptHandler ( - UINT32 InterruptNumber, - ACPI_OSD_HANDLER ServiceRoutine) -{ - - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsExecute - * - * PARAMETERS: Type - Type of execution - * Function - Address of the function to execute - * Context - Passed as a parameter to the function - * - * RETURN: Status. - * - * DESCRIPTION: Execute a new thread - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsExecute ( - ACPI_EXECUTE_TYPE Type, - ACPI_OSD_EXEC_CALLBACK Function, - void *Context) -{ - -// _beginthread (Function, (unsigned) 0, Context); - return 0; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsBreakpoint - * - * PARAMETERS: Msg Message to print - * - * RETURN: Status - * - * DESCRIPTION: Print a message and break to the debugger. - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsBreakpoint ( - char *Msg) -{ - - if (Msg) - { - AcpiOsPrintf ("AcpiOsBreakpoint: %s ****\n", Msg); - } - else - { - AcpiOsPrintf ("At AcpiOsBreakpoint ****\n"); - } - - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsStall - * - * PARAMETERS: microseconds To sleep - * - * RETURN: Blocks until sleep is completed. - * - * DESCRIPTION: Sleep at microsecond granularity - * - *****************************************************************************/ - -void -AcpiOsStall ( - UINT32 microseconds) -{ - - if (microseconds) - { - usleep (microseconds); - } - return; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsSleep - * - * PARAMETERS: milliseconds To sleep - * - * RETURN: Blocks until sleep is completed. - * - * DESCRIPTION: Sleep at millisecond granularity - * - *****************************************************************************/ - -void -AcpiOsSleep ( - ACPI_INTEGER milliseconds) -{ - - sleep (milliseconds / 1000); /* Sleep for whole seconds */ - - /* - * Arg to usleep() must be less than 1,000,000 (1 second) - */ - usleep ((milliseconds % 1000) * 1000); /* Sleep for remaining usecs */ - - return; -} - -/****************************************************************************** - * - * FUNCTION: AcpiOsGetTimer - * - * PARAMETERS: None - * - * RETURN: Current time in 100 nanosecond units - * - * DESCRIPTION: Get the current system time - * - *****************************************************************************/ - -UINT64 -AcpiOsGetTimer (void) -{ - struct timeval time; - - gettimeofday(&time, NULL); - - /* Seconds * 10^7 = 100ns(10^-7), Microseconds(10^-6) * 10^1 = 100ns */ - - return (((UINT64) time.tv_sec * 10000000) + ((UINT64) time.tv_usec * 10)); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsValidateInterface - * - * PARAMETERS: Interface - Requested interface to be validated - * - * RETURN: AE_OK if interface is supported, AE_SUPPORT otherwise - * - * DESCRIPTION: Match an interface string to the interfaces supported by the - * host. Strings originate from an AML call to the _OSI method. - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsValidateInterface ( - char *Interface) -{ - - return (AE_SUPPORT); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsValidateAddress - * - * PARAMETERS: SpaceId - ACPI space ID - * Address - Physical address - * Length - Address length - * - * RETURN: AE_OK if Address/Length is valid for the SpaceId. Otherwise, - * should return AE_AML_ILLEGAL_ADDRESS. - * - * DESCRIPTION: Validate a system address via the host OS. Used to validate - * the addresses accessed by AML operation regions. - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsValidateAddress ( - UINT8 SpaceId, - ACPI_PHYSICAL_ADDRESS Address, - ACPI_SIZE Length) -{ - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsReadPciConfiguration - * - * PARAMETERS: PciId Seg/Bus/Dev - * Register Device Register - * Value Buffer where value is placed - * Width Number of bits - * - * RETURN: Status - * - * DESCRIPTION: Read data from PCI configuration space - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsReadPciConfiguration ( - ACPI_PCI_ID *PciId, - UINT32 Register, - void *Value, - UINT32 Width) -{ - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsWritePciConfiguration - * - * PARAMETERS: PciId Seg/Bus/Dev - * Register Device Register - * Value Value to be written - * Width Number of bits - * - * RETURN: Status. - * - * DESCRIPTION: Write data to PCI configuration space - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsWritePciConfiguration ( - ACPI_PCI_ID *PciId, - UINT32 Register, - ACPI_INTEGER Value, - UINT32 Width) -{ - - return (AE_OK); -} - -/* TEMPORARY STUB FUNCTION */ -void -AcpiOsDerivePciId( - ACPI_HANDLE rhandle, - ACPI_HANDLE chandle, - ACPI_PCI_ID **PciId) -{ - -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsReadPort - * - * PARAMETERS: Address Address of I/O port/register to read - * Value Where value is placed - * Width Number of bits - * - * RETURN: Value read from port - * - * DESCRIPTION: Read data from an I/O port or register - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsReadPort ( - ACPI_IO_ADDRESS Address, - UINT32 *Value, - UINT32 Width) -{ - - switch (Width) - { - case 8: - *Value = 0xFF; - break; - - case 16: - *Value = 0xFFFF; - break; - - case 32: - *Value = 0xFFFFFFFF; - break; - } - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsWritePort - * - * PARAMETERS: Address Address of I/O port/register to write - * Value Value to write - * Width Number of bits - * - * RETURN: None - * - * DESCRIPTION: Write data to an I/O port or register - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsWritePort ( - ACPI_IO_ADDRESS Address, - UINT32 Value, - UINT32 Width) -{ - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsReadMemory - * - * PARAMETERS: Address Physical Memory Address to read - * Value Where value is placed - * Width Number of bits - * - * RETURN: Value read from physical memory address - * - * DESCRIPTION: Read data from a physical memory address - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsReadMemory ( - ACPI_PHYSICAL_ADDRESS Address, - UINT32 *Value, - UINT32 Width) -{ - - switch (Width) - { - case 8: - case 16: - case 32: - *Value = 0; - break; - - default: - return (AE_BAD_PARAMETER); - break; - } - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsWriteMemory - * - * PARAMETERS: Address Physical Memory Address to write - * Value Value to write - * Width Number of bits - * - * RETURN: None - * - * DESCRIPTION: Write data to a physical memory address - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsWriteMemory ( - ACPI_PHYSICAL_ADDRESS Address, - UINT32 Value, - UINT32 Width) -{ - - return (AE_OK); -} - - -ACPI_THREAD_ID -AcpiOsGetThreadId(void) -{ - return getpid(); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsSignal - * - * PARAMETERS: Function ACPI CA signal function code - * Info Pointer to function-dependent structure - * - * RETURN: Status - * - * DESCRIPTION: Miscellaneous functions - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsSignal ( - UINT32 Function, - void *Info) -{ - - switch (Function) - { - case ACPI_SIGNAL_FATAL: - break; - - case ACPI_SIGNAL_BREAKPOINT: - - if (Info) - { - AcpiOsPrintf ("AcpiOsBreakpoint: %s ****\n", Info); - } - else - { - AcpiOsPrintf ("At AcpiOsBreakpoint ****\n"); - } - - break; - } - - - return (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/os_specific/service_layers/oswindir.c b/sys/contrib/dev/acpica-unix-20061109/os_specific/service_layers/oswindir.c deleted file mode 100644 index ccbfc9ed42..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/os_specific/service_layers/oswindir.c +++ /dev/null @@ -1,318 +0,0 @@ - -/****************************************************************************** - * - * Module Name: oswindir - Windows directory access interfaces - * $Revision: 1.7 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include -#include -#include -#include - -#include - -typedef struct ExternalFindInfo -{ - struct _finddata_t DosInfo; - char *FullWildcardSpec; - long FindHandle; - char State; - char RequestedFileType; - -} EXTERNAL_FIND_INFO; - - -/******************************************************************************* - * - * FUNCTION: AcpiOsOpenDirectory - * - * PARAMETERS: DirPathname - Full pathname to the directory - * WildcardSpec - string of the form "*.c", etc. - * RequestedFileType - Either a directory or normal file - * - * RETURN: A directory "handle" to be used in subsequent search operations. - * NULL returned on failure. - * - * DESCRIPTION: Open a directory in preparation for a wildcard search - * - ******************************************************************************/ - -void * -AcpiOsOpenDirectory ( - char *DirPathname, - char *WildcardSpec, - char RequestedFileType) -{ - long FindHandle; - char *FullWildcardSpec; - EXTERNAL_FIND_INFO *SearchInfo; - - - /* Allocate the info struct that will be returned to the caller */ - - SearchInfo = calloc (sizeof (EXTERNAL_FIND_INFO), 1); - if (!SearchInfo) - { - return NULL; - } - - /* Allocate space for the full wildcard path */ - - FullWildcardSpec = calloc (strlen (DirPathname) + strlen (WildcardSpec) + 2, 1); - if (!FullWildcardSpec) - { - printf ("Could not allocate buffer for wildcard pathname\n"); - return NULL; - } - - /* Create the full wildcard path */ - - strcpy (FullWildcardSpec, DirPathname); - strcat (FullWildcardSpec, "/"); - strcat (FullWildcardSpec, WildcardSpec); - - /* Initialize the find functions, get first match */ - - FindHandle = _findfirst (FullWildcardSpec, &SearchInfo->DosInfo); - if (FindHandle == -1) - { - /* Failure means that no match was found */ - - free (FullWildcardSpec); - free (SearchInfo); - return NULL; - } - - /* Save the info in the return structure */ - - SearchInfo->RequestedFileType = RequestedFileType; - SearchInfo->FullWildcardSpec = FullWildcardSpec; - SearchInfo->FindHandle = FindHandle; - SearchInfo->State = 0; - return (SearchInfo); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiOsGetNextFilename - * - * PARAMETERS: DirHandle - Created via AcpiOsOpenDirectory - * - * RETURN: Next filename matched. NULL if no more matches. - * - * DESCRIPTION: Get the next file in the directory that matches the wildcard - * specification. - * - ******************************************************************************/ - -char * -AcpiOsGetNextFilename ( - void *DirHandle) -{ - EXTERNAL_FIND_INFO *SearchInfo = DirHandle; - int Status; - char FileTypeNotMatched = 1; - - - /* - * Loop while we have matched files but not found any files of - * the requested type. - */ - while (FileTypeNotMatched) - { - /* On the first call, we already have the first match */ - - if (SearchInfo->State == 0) - { - /* No longer the first match */ - - SearchInfo->State = 1; - } - else - { - /* Get the next match */ - - Status = _findnext (SearchInfo->FindHandle, &SearchInfo->DosInfo); - if (Status != 0) - { - return NULL; - } - } - - /* - * Found a match, now check to make sure that the file type - * matches the requested file type (directory or normal file) - * - * NOTE: use of the attrib field saves us from doing a very - * expensive stat() on the file! - */ - switch (SearchInfo->RequestedFileType) - { - case REQUEST_FILE_ONLY: - - /* Anything other than A_SUBDIR is OK */ - - if (!(SearchInfo->DosInfo.attrib & _A_SUBDIR)) - { - FileTypeNotMatched = 0; - } - break; - - case REQUEST_DIR_ONLY: - - /* Must have A_SUBDIR bit set */ - - if (SearchInfo->DosInfo.attrib & _A_SUBDIR) - { - FileTypeNotMatched = 0; - } - break; - - default: - return NULL; - } - } - - return (SearchInfo->DosInfo.name); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiOsCloseDirectory - * - * PARAMETERS: DirHandle - Created via AcpiOsOpenDirectory - * - * RETURN: None. - * - * DESCRIPTION: Close the open directory and cleanup. - * - ******************************************************************************/ - -void -AcpiOsCloseDirectory ( - void *DirHandle) -{ - EXTERNAL_FIND_INFO *SearchInfo = DirHandle; - - - /* Close the directory and free allocations */ - - _findclose (SearchInfo->FindHandle); - free (SearchInfo->FullWildcardSpec); - free (DirHandle); -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/os_specific/service_layers/oswinxf.c b/sys/contrib/dev/acpica-unix-20061109/os_specific/service_layers/oswinxf.c deleted file mode 100644 index 693934528e..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/os_specific/service_layers/oswinxf.c +++ /dev/null @@ -1,1579 +0,0 @@ -/****************************************************************************** - * - * Module Name: oswinxf - Windows OSL - * $Revision: 1.86 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -/* - * These interfaces are required in order to link to the ACPI subsystem - * parser. They are called during the execution of the parser, and all - * map directly to Clibrary calls. - */ - -#ifdef WIN32 -#pragma warning(disable:4115) /* warning C4115: named type definition in parentheses (caused by rpcasync.h> */ - -#include -#include -#endif - -#ifdef WIN64 -#include -#endif - -#include -#include -#include -#include -#include - -#include "acpi.h" -#include "acdebug.h" - -#define _COMPONENT ACPI_OS_SERVICES - ACPI_MODULE_NAME ("oswinxf") - - -#define NUM_SEMAPHORES 128 - -typedef struct semaphore_entry -{ - UINT16 MaxUnits; - UINT16 CurrentUnits; - void *OsHandle; -} SEMAPHORE_ENTRY; - - -SEMAPHORE_ENTRY AcpiGbl_Semaphores[NUM_SEMAPHORES]; -extern FILE *AcpiGbl_DebugFile; - -ACPI_PHYSICAL_ADDRESS -AeLocalGetRootPointer ( - void); - -FILE *AcpiGbl_OutputFile; -UINT64 TimerFrequency; - - -/****************************************************************************** - * - * FUNCTION: OsTerminate - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Nothing to do for windows - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsTerminate (void) -{ - return AE_OK; -} - - -#ifndef ACPI_EXEC_APP -/* Used by both iASL and AcpiDump applications */ - -CHAR s[500]; - -/****************************************************************************** - * - * FUNCTION: OsGetTable - * - * PARAMETERS: None - * - * RETURN: Pointer to the table. NULL if failure - * - * DESCRIPTION: Get an ACPI table from the Windows registry. - * - *****************************************************************************/ - -ACPI_TABLE_HEADER * -OsGetTable ( - char *TableName) -{ - HKEY Handle = NULL; - ULONG i; - LONG Status; - ULONG Type; - ULONG NameSize; - ULONG DataSize; - HKEY SubKey; - ACPI_TABLE_HEADER *Buffer; - char *Signature = TableName; - - - /* Get a handle to the DSDT key */ - - while (1) - { - ACPI_STRCPY (s, "HARDWARE\\ACPI\\"); - ACPI_STRCAT (s, Signature); - - Status = RegOpenKeyEx (HKEY_LOCAL_MACHINE, s, - 0L, KEY_ALL_ACCESS, &Handle); - - if (Status != ERROR_SUCCESS) - { - /* - * Somewhere along the way, MS changed the registry entry for - * the FADT from - * HARDWARE/ACPI/FACP to - * HARDWARE/ACPI/FADT. - * - * This code allows for both. - */ - if (ACPI_COMPARE_NAME (Signature, "FACP")) - { - Signature = "FADT"; - } - else - { - AcpiOsPrintf ("Could not find %s in registry at %s\n", TableName, s); - return (NULL); - } - } - else - { - break; - } - } - - /* Actual table is down a couple of levels */ - - for (i = 0; ;) - { - Status = RegEnumKey (Handle, i, s, sizeof(s)); - i += 1; - if (Status == ERROR_NO_MORE_ITEMS) - { - break; - } - - Status = RegOpenKey (Handle, s, &SubKey); - if (Status != ERROR_SUCCESS) - { - AcpiOsPrintf ("Could not open %s entry\n", TableName); - return (NULL); - } - - RegCloseKey (Handle); - Handle = SubKey; - i = 0; - } - - /* Find the table entry */ - - for (i = 0; ;) - { - NameSize = sizeof (s); - Status = RegEnumValue (Handle, i, s, &NameSize, - NULL, &Type, NULL, 0 ); - if (Status != ERROR_SUCCESS) - { - AcpiOsPrintf ("Could not get %s registry entry\n", TableName); - return (NULL); - } - - if (Type == REG_BINARY) - { - break; - } - i += 1; - } - - /* Get the size of the table */ - - Status = RegQueryValueEx (Handle, s, NULL, NULL, NULL, &DataSize); - if (Status != ERROR_SUCCESS) - { - AcpiOsPrintf ("Could not read the %s table size\n", TableName); - return (NULL); - } - - /* Allocate a new buffer for the table */ - - Buffer = AcpiOsAllocate (DataSize); - if (!Buffer) - { - goto Cleanup; - } - - /* Get the actual table from the registry */ - - Status = RegQueryValueEx (Handle, s, NULL, NULL, (UCHAR *) Buffer, &DataSize); - if (Status != ERROR_SUCCESS) - { - AcpiOsPrintf ("Could not read %s data\n", TableName); - return (NULL); - } - -Cleanup: - RegCloseKey (Handle); - return (Buffer); -} - -#endif - -/****************************************************************************** - * - * FUNCTION: AcpiOsInitialize, AcpiOsTerminate - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Init this OSL - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsInitialize (void) -{ - UINT32 i; - LARGE_INTEGER LocalTimerFrequency; - - - AcpiGbl_OutputFile = stdout; - - for (i = 0; i < NUM_SEMAPHORES; i++) - { - AcpiGbl_Semaphores[i].OsHandle = NULL; - } - - TimerFrequency = 0; - if (QueryPerformanceFrequency (&LocalTimerFrequency)) - { - /* Frequency is in ticks per second */ - - TimerFrequency = LocalTimerFrequency.QuadPart; - } - - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsGetRootPointer - * - * PARAMETERS: None - * - * RETURN: RSDP physical address - * - * DESCRIPTION: Gets the root pointer (RSDP) - * - *****************************************************************************/ - -ACPI_PHYSICAL_ADDRESS -AcpiOsGetRootPointer ( - void) -{ - - return (AeLocalGetRootPointer ()); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsPredefinedOverride - * - * PARAMETERS: InitVal - Initial value of the predefined object - * NewVal - The new value for the object - * - * RETURN: Status, pointer to value. Null pointer returned if not - * overriding. - * - * DESCRIPTION: Allow the OS to override predefined names - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsPredefinedOverride ( - const ACPI_PREDEFINED_NAMES *InitVal, - ACPI_STRING *NewVal) -{ - - if (!InitVal || !NewVal) - { - return (AE_BAD_PARAMETER); - } - - *NewVal = NULL; - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsTableOverride - * - * PARAMETERS: ExistingTable - Header of current table (probably firmware) - * NewTable - Where an entire new table is returned. - * - * RETURN: Status, pointer to new table. Null pointer returned if no - * table is available to override - * - * DESCRIPTION: Return a different version of a table if one is available - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsTableOverride ( - ACPI_TABLE_HEADER *ExistingTable, - ACPI_TABLE_HEADER **NewTable) -{ -#ifndef ACPI_EXEC_APP - char TableName[ACPI_NAME_SIZE + 1]; -#endif - - - if (!ExistingTable || !NewTable) - { - return (AE_BAD_PARAMETER); - } - - *NewTable = NULL; - - -#ifdef ACPI_EXEC_APP - - /* This code exercises the table override mechanism in the core */ - - if (ACPI_COMPARE_NAME (ExistingTable->Signature, ACPI_SIG_DSDT)) - { - /* override DSDT with itself */ - - *NewTable = AcpiGbl_DbTablePtr; - } - -#else - - /* Construct a null-terminated string from table signature */ - - TableName[ACPI_NAME_SIZE] = 0; - ACPI_STRNCPY (TableName, ExistingTable->Signature, ACPI_NAME_SIZE); - - *NewTable = OsGetTable (TableName); - if (*NewTable) - { - AcpiOsPrintf ("%s obtained from registry, %d bytes\n", - TableName, (*NewTable)->Length); - } - else - { - AcpiOsPrintf ("Could not read %s from registry\n", TableName); - } -#endif - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsGetTimer - * - * PARAMETERS: None - * - * RETURN: Current ticks in 100-nanosecond units - * - * DESCRIPTION: Get the value of a system timer - * - ******************************************************************************/ - -UINT64 -AcpiOsGetTimer ( - void) -{ - LARGE_INTEGER Timer; - - -// return ((UINT64) GetTickCount() * 10000); - - /* Attempt to use hi-granularity timer first */ - - if (TimerFrequency && - QueryPerformanceCounter (&Timer)) - { - /* Convert to 100 nanosecond ticks */ - - return ((UINT64) ((Timer.QuadPart * (UINT64) 10000000) / TimerFrequency)); - } - - /* Fall back to the lo-granularity timer */ - - else - { - /* Convert milliseconds to 100 nanosecond ticks */ - - return ((UINT64) GetTickCount() * 10000); - } -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsReadable - * - * PARAMETERS: Pointer - Area to be verified - * Length - Size of area - * - * RETURN: TRUE if readable for entire length - * - * DESCRIPTION: Verify that a pointer is valid for reading - * - *****************************************************************************/ - -BOOLEAN -AcpiOsReadable ( - void *Pointer, - ACPI_SIZE Length) -{ - - return ((BOOLEAN) !IsBadReadPtr (Pointer, Length)); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsWritable - * - * PARAMETERS: Pointer - Area to be verified - * Length - Size of area - * - * RETURN: TRUE if writable for entire length - * - * DESCRIPTION: Verify that a pointer is valid for writing - * - *****************************************************************************/ - -BOOLEAN -AcpiOsWritable ( - void *Pointer, - ACPI_SIZE Length) -{ - - return ((BOOLEAN) !IsBadWritePtr (Pointer, Length)); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsRedirectOutput - * - * PARAMETERS: Destination - An open file handle/pointer - * - * RETURN: None - * - * DESCRIPTION: Causes redirect of AcpiOsPrintf and AcpiOsVprintf - * - *****************************************************************************/ - -void -AcpiOsRedirectOutput ( - void *Destination) -{ - - AcpiGbl_OutputFile = Destination; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsPrintf - * - * PARAMETERS: fmt, ... Standard printf format - * - * RETURN: None - * - * DESCRIPTION: Formatted output - * - *****************************************************************************/ - -void ACPI_INTERNAL_VAR_XFACE -AcpiOsPrintf ( - const char *Fmt, - ...) -{ - va_list Args; - - - va_start (Args, Fmt); - - AcpiOsVprintf (Fmt, Args); - - va_end (Args); - return; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsVprintf - * - * PARAMETERS: fmt Standard printf format - * args Argument list - * - * RETURN: None - * - * DESCRIPTION: Formatted output with argument list pointer - * - *****************************************************************************/ - -void -AcpiOsVprintf ( - const char *Fmt, - va_list Args) -{ - INT32 Count = 0; - UINT8 Flags; - - - Flags = AcpiGbl_DbOutputFlags; - if (Flags & ACPI_DB_REDIRECTABLE_OUTPUT) - { - /* Output is directable to either a file (if open) or the console */ - - if (AcpiGbl_DebugFile) - { - /* Output file is open, send the output there */ - - Count = vfprintf (AcpiGbl_DebugFile, Fmt, Args); - } - else - { - /* No redirection, send output to console (once only!) */ - - Flags |= ACPI_DB_CONSOLE_OUTPUT; - } - } - - if (Flags & ACPI_DB_CONSOLE_OUTPUT) - { - Count = vfprintf (AcpiGbl_OutputFile, Fmt, Args); - } - - return; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsGetLine - * - * PARAMETERS: fmt Standard printf format - * args Argument list - * - * RETURN: Actual bytes read - * - * DESCRIPTION: Formatted input with argument list pointer - * - *****************************************************************************/ - -UINT32 -AcpiOsGetLine ( - char *Buffer) -{ - char Temp; - UINT32 i; - - - for (i = 0; ; i++) - { - scanf ("%1c", &Temp); - if (!Temp || Temp == '\n') - { - break; - } - - Buffer [i] = Temp; - } - - /* Null terminate the buffer */ - - Buffer [i] = 0; - - /* Return the number of bytes in the string */ - - return (i); -} - -/****************************************************************************** - * - * FUNCTION: AcpiOsMapMemory - * - * PARAMETERS: where Physical address of memory to be mapped - * length How much memory to map - * - * RETURN: Pointer to mapped memory. Null on error. - * - * DESCRIPTION: Map physical memory into caller's address space - * - *****************************************************************************/ - -void * -AcpiOsMapMemory ( - ACPI_PHYSICAL_ADDRESS where, - ACPI_SIZE length) -{ - - return (ACPI_TO_POINTER ((ACPI_NATIVE_UINT) where)); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsUnmapMemory - * - * PARAMETERS: where Logical address of memory to be unmapped - * length How much memory to unmap - * - * RETURN: None. - * - * DESCRIPTION: Delete a previously created mapping. Where and Length must - * correspond to a previous mapping exactly. - * - *****************************************************************************/ - -void -AcpiOsUnmapMemory ( - void *where, - ACPI_SIZE length) -{ - - return; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsAllocate - * - * PARAMETERS: Size Amount to allocate, in bytes - * - * RETURN: Pointer to the new allocation. Null on error. - * - * DESCRIPTION: Allocate memory. Algorithm is dependent on the OS. - * - *****************************************************************************/ - -void * -AcpiOsAllocate ( - ACPI_SIZE size) -{ - void *Mem; - - - Mem = (void *) malloc ((size_t) size); - - return Mem; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsFree - * - * PARAMETERS: mem Pointer to previously allocated memory - * - * RETURN: None. - * - * DESCRIPTION: Free memory allocated via AcpiOsAllocate - * - *****************************************************************************/ - -void -AcpiOsFree ( - void *Mem) -{ - - free (Mem); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsCreateSemaphore - * - * PARAMETERS: MaxUnits - Maximum units that can be sent - * InitialUnits - Units to be assigned to the new semaphore - * OutHandle - Where a handle will be returned - * - * RETURN: Status - * - * DESCRIPTION: Create an OS semaphore - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsCreateSemaphore ( - UINT32 MaxUnits, - UINT32 InitialUnits, - ACPI_SEMAPHORE *OutHandle) -{ -#ifdef _MULTI_THREADED - void *Mutex; - UINT32 i; - - ACPI_FUNCTION_NAME (OsCreateSemaphore); -#endif - - - if (MaxUnits == ACPI_UINT32_MAX) - { - MaxUnits = 255; - } - - if (InitialUnits == ACPI_UINT32_MAX) - { - InitialUnits = MaxUnits; - } - - if (InitialUnits > MaxUnits) - { - return AE_BAD_PARAMETER; - } - -#ifdef _MULTI_THREADED - - /* Find an empty slot */ - - for (i = 0; i < NUM_SEMAPHORES; i++) - { - if (!AcpiGbl_Semaphores[i].OsHandle) - { - break; - } - } - if (i >= NUM_SEMAPHORES) - { - return AE_LIMIT; - } - - /* Create an OS semaphore */ - - Mutex = CreateSemaphore (NULL, InitialUnits, MaxUnits, NULL); - if (!Mutex) - { - ACPI_ERROR ((AE_INFO, "Could not create semaphore")); - return AE_NO_MEMORY; - } - - AcpiGbl_Semaphores[i].MaxUnits = (UINT16) MaxUnits; - AcpiGbl_Semaphores[i].CurrentUnits = (UINT16) InitialUnits; - AcpiGbl_Semaphores[i].OsHandle = Mutex; - - ACPI_DEBUG_PRINT ((ACPI_DB_MUTEX, "Handle=%d, Max=%d, Current=%d, OsHandle=%p\n", - i, MaxUnits, InitialUnits, Mutex)); - - *OutHandle = (void *) i; -#endif - - return AE_OK; -} - -/****************************************************************************** - * - * FUNCTION: AcpiOsDeleteSemaphore - * - * PARAMETERS: Handle - Handle returned by AcpiOsCreateSemaphore - * - * RETURN: Status - * - * DESCRIPTION: Delete an OS semaphore - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsDeleteSemaphore ( - ACPI_SEMAPHORE Handle) -{ - UINT32 Index = (UINT32) Handle; - - - if ((Index >= NUM_SEMAPHORES) || - !AcpiGbl_Semaphores[Index].OsHandle) - { - return AE_BAD_PARAMETER; - } - - -#ifdef _MULTI_THREADED - - CloseHandle (AcpiGbl_Semaphores[Index].OsHandle); - AcpiGbl_Semaphores[Index].OsHandle = NULL; -#endif - - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsWaitSemaphore - * - * PARAMETERS: Handle - Handle returned by AcpiOsCreateSemaphore - * Units - How many units to wait for - * Timeout - How long to wait - * - * RETURN: Status - * - * DESCRIPTION: Wait for units - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsWaitSemaphore ( - ACPI_SEMAPHORE Handle, - UINT32 Units, - UINT16 Timeout) -{ -#ifdef _MULTI_THREADED - UINT32 Index = (UINT32) Handle; - UINT32 WaitStatus; - UINT32 OsTimeout = Timeout; - - - ACPI_FUNCTION_ENTRY (); - - - if ((Index >= NUM_SEMAPHORES) || - !AcpiGbl_Semaphores[Index].OsHandle) - { - return AE_BAD_PARAMETER; - } - - if (Units > 1) - { - printf ("WaitSemaphore: Attempt to receive %d units\n", Units); - return AE_NOT_IMPLEMENTED; - } - - -/* TBD: Make this a command line option so that we can catch - * synchronization deadlocks - * - if (Timeout == INFINITE) - Timeout = 400000; -*/ - - if (Timeout == ACPI_WAIT_FOREVER) - { - OsTimeout = INFINITE; - } - else - { - /* Add 10ms to account for clock tick granularity */ - - OsTimeout += 10; - } - - WaitStatus = WaitForSingleObject (AcpiGbl_Semaphores[Index].OsHandle, OsTimeout); - if (WaitStatus == WAIT_TIMEOUT) - { -/* Make optional -- wait of 0 is used to detect if unit is available - ACPI_ERROR ((AE_INFO, "Timeout on semaphore %d", - Handle)); -*/ - return AE_TIME; - } - - if (AcpiGbl_Semaphores[Index].CurrentUnits == 0) - { - ACPI_ERROR ((AE_INFO, "%s - No unit received. Timeout %X, OSstatus 0x%X", - AcpiUtGetMutexName (Index), Timeout, WaitStatus)); - - return AE_OK; - } - - AcpiGbl_Semaphores[Index].CurrentUnits--; -#endif - - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsSignalSemaphore - * - * PARAMETERS: Handle - Handle returned by AcpiOsCreateSemaphore - * Units - Number of units to send - * - * RETURN: Status - * - * DESCRIPTION: Send units - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsSignalSemaphore ( - ACPI_SEMAPHORE Handle, - UINT32 Units) -{ -#ifdef _MULTI_THREADED - - UINT32 Index = (UINT32) Handle; - - - ACPI_FUNCTION_ENTRY (); - - - if (Index >= NUM_SEMAPHORES) - { - printf ("SignalSemaphore: Index/Handle out of range: %2.2X\n", Index); - return AE_BAD_PARAMETER; - } - - if (!AcpiGbl_Semaphores[Index].OsHandle) - { - printf ("SignalSemaphore: Null OS handle, Index %2.2X\n", Index); - return AE_BAD_PARAMETER; - } - - if (Units > 1) - { - printf ("SignalSemaphore: Attempt to signal %d units, Index %2.2X\n", Units, Index); - return AE_NOT_IMPLEMENTED; - } - - if ((AcpiGbl_Semaphores[Index].CurrentUnits + 1) > - AcpiGbl_Semaphores[Index].MaxUnits) - { - ACPI_ERROR ((AE_INFO, - "Oversignalled semaphore[%d]! Current %d Max %d", - Index, AcpiGbl_Semaphores[Index].CurrentUnits, - AcpiGbl_Semaphores[Index].MaxUnits)); - - return (AE_LIMIT); - } - - AcpiGbl_Semaphores[Index].CurrentUnits++; - ReleaseSemaphore (AcpiGbl_Semaphores[Index].OsHandle, Units, NULL); - -#endif - - return (AE_OK); -} - - -/* Spinlock interfaces, just implement with a semaphore */ - -ACPI_STATUS -AcpiOsCreateLock ( - ACPI_SPINLOCK *OutHandle) -{ - return (AcpiOsCreateSemaphore (1, 1, OutHandle)); -} - -void -AcpiOsDeleteLock ( - ACPI_SPINLOCK Handle) -{ - AcpiOsDeleteSemaphore (Handle); -} - -ACPI_CPU_FLAGS -AcpiOsAcquireLock ( - ACPI_SPINLOCK Handle) -{ - AcpiOsWaitSemaphore (Handle, 1, 0xFFFF); - return (0); -} - -void -AcpiOsReleaseLock ( - ACPI_SPINLOCK Handle, - ACPI_CPU_FLAGS Flags) -{ - AcpiOsSignalSemaphore (Handle, 1); -} - - -#if ACPI_FUTURE_IMPLEMENTATION - -/* Mutex interfaces, just implement with a semaphore */ - -ACPI_STATUS -AcpiOsCreateMutex ( - ACPI_MUTEX *OutHandle) -{ - return (AcpiOsCreateSemaphore (1, 1, OutHandle)); -} - -void -AcpiOsDeleteMutex ( - ACPI_MUTEX Handle) -{ - AcpiOsDeleteSemaphore (Handle); -} - -ACPI_STATUS -AcpiOsAcquireMutex ( - ACPI_MUTEX Handle, - UINT16 Timeout) -{ - AcpiOsWaitSemaphore (Handle, 1, Timeout); - return (0); -} - -void -AcpiOsReleaseMutex ( - ACPI_MUTEX Handle) -{ - AcpiOsSignalSemaphore (Handle, 1); -} -#endif - - -/****************************************************************************** - * - * FUNCTION: AcpiOsInstallInterruptHandler - * - * PARAMETERS: InterruptNumber Level handler should respond to. - * Isr Address of the ACPI interrupt handler - * ExceptPtr Where status is returned - * - * RETURN: Handle to the newly installed handler. - * - * DESCRIPTION: Install an interrupt handler. Used to install the ACPI - * OS-independent handler. - * - *****************************************************************************/ - -UINT32 -AcpiOsInstallInterruptHandler ( - UINT32 InterruptNumber, - ACPI_OSD_HANDLER ServiceRoutine, - void *Context) -{ - - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsRemoveInterruptHandler - * - * PARAMETERS: Handle Returned when handler was installed - * - * RETURN: Status - * - * DESCRIPTION: Uninstalls an interrupt handler. - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsRemoveInterruptHandler ( - UINT32 InterruptNumber, - ACPI_OSD_HANDLER ServiceRoutine) -{ - - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsGetThreadId - * - * PARAMETERS: None - * - * RETURN: Id of the running thread - * - * DESCRIPTION: Get the Id of the current (running) thread - * - *****************************************************************************/ - -ACPI_THREAD_ID -AcpiOsGetThreadId ( - void) -{ - DWORD ThreadId; - - /* Ensure ID is never 0 */ - - ThreadId = GetCurrentThreadId (); - return (ThreadId + 1); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsExecute - * - * PARAMETERS: Type - Type of execution - * Function - Address of the function to execute - * Context - Passed as a parameter to the function - * - * RETURN: Status - * - * DESCRIPTION: Execute a new thread - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsExecute ( - ACPI_EXECUTE_TYPE Type, - ACPI_OSD_EXEC_CALLBACK Function, - void *Context) -{ - -#ifdef _MULTI_THREADED - _beginthread (Function, (unsigned) 0, Context); -#endif - - return 0; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsStall - * - * PARAMETERS: microseconds To sleep - * - * RETURN: Blocks until sleep is completed. - * - * DESCRIPTION: Sleep at microsecond granularity - * - *****************************************************************************/ - -void -AcpiOsStall ( - UINT32 microseconds) -{ - - Sleep ((microseconds / 1000) + 1); - return; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsSleep - * - * PARAMETERS: milliseconds To sleep - * - * RETURN: Blocks until sleep is completed. - * - * DESCRIPTION: Sleep at millisecond granularity - * - *****************************************************************************/ - -void -AcpiOsSleep ( - ACPI_INTEGER milliseconds) -{ - - /* Add 10ms to account for clock tick granularity */ - - Sleep (((unsigned long) milliseconds) + 10); - return; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsValidateInterface - * - * PARAMETERS: Interface - Requested interface to be validated - * - * RETURN: AE_OK if interface is supported, AE_SUPPORT otherwise - * - * DESCRIPTION: Match an interface string to the interfaces supported by the - * host. Strings originate from an AML call to the _OSI method. - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsValidateInterface ( - char *Interface) -{ - - return (AE_SUPPORT); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsValidateAddress - * - * PARAMETERS: SpaceId - ACPI space ID - * Address - Physical address - * Length - Address length - * - * RETURN: AE_OK if Address/Length is valid for the SpaceId. Otherwise, - * should return AE_AML_ILLEGAL_ADDRESS. - * - * DESCRIPTION: Validate a system address via the host OS. Used to validate - * the addresses accessed by AML operation regions. - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsValidateAddress ( - UINT8 SpaceId, - ACPI_PHYSICAL_ADDRESS Address, - ACPI_SIZE Length) -{ - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsReadPciConfiguration - * - * PARAMETERS: PciId Seg/Bus/Dev - * Register Device Register - * Value Buffer where value is placed - * Width Number of bits - * - * RETURN: Status - * - * DESCRIPTION: Read data from PCI configuration space - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsReadPciConfiguration ( - ACPI_PCI_ID *PciId, - UINT32 Register, - void *Value, - UINT32 Width) -{ - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsWritePciConfiguration - * - * PARAMETERS: PciId Seg/Bus/Dev - * Register Device Register - * Value Value to be written - * Width Number of bits - * - * RETURN: Status. - * - * DESCRIPTION: Write data to PCI configuration space - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsWritePciConfiguration ( - ACPI_PCI_ID *PciId, - UINT32 Register, - ACPI_INTEGER Value, - UINT32 Width) -{ - - return (AE_OK); -} - -/* TEMPORARY STUB FUNCTION */ -void -AcpiOsDerivePciId( - ACPI_HANDLE rhandle, - ACPI_HANDLE chandle, - ACPI_PCI_ID **PciId) -{ - - return; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsReadPort - * - * PARAMETERS: Address Address of I/O port/register to read - * Value Where value is placed - * Width Number of bits - * - * RETURN: Value read from port - * - * DESCRIPTION: Read data from an I/O port or register - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsReadPort ( - ACPI_IO_ADDRESS Address, - UINT32 *Value, - UINT32 Width) -{ - - switch (Width) - { - case 8: - *Value = 0xFF; - break; - - case 16: - *Value = 0xFFFF; - break; - - case 32: - *Value = 0xFFFFFFFF; - break; - - default: - return (AE_BAD_PARAMETER); - } - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsWritePort - * - * PARAMETERS: Address Address of I/O port/register to write - * Value Value to write - * Width Number of bits - * - * RETURN: None - * - * DESCRIPTION: Write data to an I/O port or register - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsWritePort ( - ACPI_IO_ADDRESS Address, - UINT32 Value, - UINT32 Width) -{ - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsReadMemory - * - * PARAMETERS: Address Physical Memory Address to read - * Value Where value is placed - * Width Number of bits - * - * RETURN: Value read from physical memory address. Always returned - * as a 32-bit integer, regardless of the read width. - * - * DESCRIPTION: Read data from a physical memory address - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsReadMemory ( - ACPI_PHYSICAL_ADDRESS Address, - UINT32 *Value, - UINT32 Width) -{ - - switch (Width) - { - case 8: - case 16: - case 32: - *Value = 0; - break; - - default: - return (AE_BAD_PARAMETER); - break; - } - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsWriteMemory - * - * PARAMETERS: Address Physical Memory Address to write - * Value Value to write - * Width Number of bits - * - * RETURN: None - * - * DESCRIPTION: Write data to a physical memory address - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsWriteMemory ( - ACPI_PHYSICAL_ADDRESS Address, - UINT32 Value, - UINT32 Width) -{ - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsSignal - * - * PARAMETERS: Function ACPI CA signal function code - * Info Pointer to function-dependent structure - * - * RETURN: Status - * - * DESCRIPTION: Miscellaneous functions - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsSignal ( - UINT32 Function, - void *Info) -{ - - switch (Function) - { - case ACPI_SIGNAL_FATAL: - break; - - case ACPI_SIGNAL_BREAKPOINT: - - if (Info) - { - AcpiOsPrintf ("AcpiOsBreakpoint: %s ****\n", Info); - } - else - { - AcpiOsPrintf ("At AcpiOsBreakpoint ****\n"); - } - - break; - } - - return (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/osunixxf.c b/sys/contrib/dev/acpica-unix-20061109/osunixxf.c deleted file mode 100644 index 246f426cf9..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/osunixxf.c +++ /dev/null @@ -1,1155 +0,0 @@ -/****************************************************************************** - * - * Module Name: osunixxf - UNIX OSL interfaces - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -/* - * These interfaces are required in order to compile the ASL compiler under - * Linux. - */ - -#include -#include -#include -#include -#include - -#include "acpi.h" -#include "amlcode.h" -#include "acparser.h" -#include "acdebug.h" - -#define _COMPONENT ACPI_OS_SERVICES - ACPI_MODULE_NAME ("osunixxf") - - -extern FILE *AcpiGbl_DebugFile; -FILE *AcpiGbl_OutputFile; - -ACPI_PHYSICAL_ADDRESS -AeLocalGetRootPointer ( - void); - - -/****************************************************************************** - * - * FUNCTION: AcpiOsInitialize, AcpiOsTerminate - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Init and terminate. Nothing to do. - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsInitialize (void) -{ - AcpiGbl_OutputFile = stdout; - - return AE_OK; -} - - -ACPI_STATUS -AcpiOsTerminate (void) -{ - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsGetRootPointer - * - * PARAMETERS: None - * - * RETURN: RSDP physical address - * - * DESCRIPTION: Gets the root pointer (RSDP) - * - *****************************************************************************/ - -ACPI_PHYSICAL_ADDRESS -AcpiOsGetRootPointer ( - void) -{ - - return (AeLocalGetRootPointer ()); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsPredefinedOverride - * - * PARAMETERS: InitVal - Initial value of the predefined object - * NewVal - The new value for the object - * - * RETURN: Status, pointer to value. Null pointer returned if not - * overriding. - * - * DESCRIPTION: Allow the OS to override predefined names - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsPredefinedOverride ( - const ACPI_PREDEFINED_NAMES *InitVal, - ACPI_STRING *NewVal) -{ - - if (!InitVal || !NewVal) - { - return (AE_BAD_PARAMETER); - } - - *NewVal = NULL; - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsTableOverride - * - * PARAMETERS: ExistingTable - Header of current table (probably firmware) - * NewTable - Where an entire new table is returned. - * - * RETURN: Status, pointer to new table. Null pointer returned if no - * table is available to override - * - * DESCRIPTION: Return a different version of a table if one is available - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsTableOverride ( - ACPI_TABLE_HEADER *ExistingTable, - ACPI_TABLE_HEADER **NewTable) -{ - - if (!ExistingTable || !NewTable) - { - return (AE_BAD_PARAMETER); - } - - *NewTable = NULL; - -#ifdef ACPI_EXEC_APP - - /* This code exercises the table override mechanism in the core */ - - if (ACPI_COMPARE_NAME (ExistingTable->Signature, ACPI_SIG_DSDT)) - { - /* override DSDT with itself */ - - *NewTable = AcpiGbl_DbTablePtr; - } - return (AE_OK); -#else - return AE_NO_ACPI_TABLES; -#endif -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsReadable - * - * PARAMETERS: Pointer - Area to be verified - * Length - Size of area - * - * RETURN: TRUE if readable for entire length - * - * DESCRIPTION: Verify that a pointer is valid for reading - * - *****************************************************************************/ - -BOOLEAN -AcpiOsReadable ( - void *Pointer, - ACPI_SIZE Length) -{ - - return (TRUE); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsWritable - * - * PARAMETERS: Pointer - Area to be verified - * Length - Size of area - * - * RETURN: TRUE if writable for entire length - * - * DESCRIPTION: Verify that a pointer is valid for writing - * - *****************************************************************************/ - -BOOLEAN -AcpiOsWritable ( - void *Pointer, - ACPI_SIZE Length) -{ - - return (TRUE); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsRedirectOutput - * - * PARAMETERS: Destination - An open file handle/pointer - * - * RETURN: None - * - * DESCRIPTION: Causes redirect of AcpiOsPrintf and AcpiOsVprintf - * - *****************************************************************************/ - -void -AcpiOsRedirectOutput ( - void *Destination) -{ - - AcpiGbl_OutputFile = Destination; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsPrintf - * - * PARAMETERS: fmt, ... Standard printf format - * - * RETURN: None - * - * DESCRIPTION: Formatted output - * - *****************************************************************************/ - -void ACPI_INTERNAL_VAR_XFACE -AcpiOsPrintf ( - const char *Fmt, - ...) -{ - va_list Args; - - - va_start (Args, Fmt); - - AcpiOsVprintf (Fmt, Args); - - va_end (Args); - return; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsVprintf - * - * PARAMETERS: fmt Standard printf format - * args Argument list - * - * RETURN: None - * - * DESCRIPTION: Formatted output with argument list pointer - * - *****************************************************************************/ - -void -AcpiOsVprintf ( - const char *Fmt, - va_list Args) -{ - INT32 Count = 0; - UINT8 Flags; - - - Flags = AcpiGbl_DbOutputFlags; - if (Flags & ACPI_DB_REDIRECTABLE_OUTPUT) - { - /* Output is directable to either a file (if open) or the console */ - - if (AcpiGbl_DebugFile) - { - /* Output file is open, send the output there */ - - Count = vfprintf (AcpiGbl_DebugFile, Fmt, Args); - } - else - { - /* No redirection, send output to console (once only!) */ - - Flags |= ACPI_DB_CONSOLE_OUTPUT; - } - } - - if (Flags & ACPI_DB_CONSOLE_OUTPUT) - { - Count = vfprintf (AcpiGbl_OutputFile, Fmt, Args); - } - - return; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsGetLine - * - * PARAMETERS: fmt Standard printf format - * args Argument list - * - * RETURN: Actual bytes read - * - * DESCRIPTION: Formatted input with argument list pointer - * - *****************************************************************************/ - -UINT32 -AcpiOsGetLine ( - char *Buffer) -{ - UINT8 Temp; - UINT32 i; - - - for (i = 0; ; i++) - { - scanf ("%1c", &Temp); - if (!Temp || Temp == '\n') - { - break; - } - - Buffer [i] = Temp; - } - - /* Null terminate the buffer */ - - Buffer [i] = 0; - - /* Return the number of bytes in the string */ - - return (i); -} - -/****************************************************************************** - * - * FUNCTION: AcpiOsMapMemory - * - * PARAMETERS: where Physical address of memory to be mapped - * length How much memory to map - * - * RETURN: Pointer to mapped memory. Null on error. - * - * DESCRIPTION: Map physical memory into caller's address space - * - *****************************************************************************/ - -void * -AcpiOsMapMemory ( - ACPI_PHYSICAL_ADDRESS where, - ACPI_SIZE length) -{ - - return (ACPI_TO_POINTER ((ACPI_NATIVE_UINT) where)); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsUnmapMemory - * - * PARAMETERS: where Logical address of memory to be unmapped - * length How much memory to unmap - * - * RETURN: None. - * - * DESCRIPTION: Delete a previously created mapping. Where and Length must - * correspond to a previous mapping exactly. - * - *****************************************************************************/ - -void -AcpiOsUnmapMemory ( - void *where, - ACPI_SIZE length) -{ - - return; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsAllocate - * - * PARAMETERS: Size Amount to allocate, in bytes - * - * RETURN: Pointer to the new allocation. Null on error. - * - * DESCRIPTION: Allocate memory. Algorithm is dependent on the OS. - * - *****************************************************************************/ - -void * -AcpiOsAllocate ( - ACPI_SIZE size) -{ - void *Mem; - - - Mem = (void *) malloc ((size_t) size); - - return Mem; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsFree - * - * PARAMETERS: mem Pointer to previously allocated memory - * - * RETURN: None. - * - * DESCRIPTION: Free memory allocated via AcpiOsAllocate - * - *****************************************************************************/ - -void -AcpiOsFree ( - void *mem) -{ - - - free (mem); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsCreateSemaphore - * - * PARAMETERS: InitialUnits - Units to be assigned to the new semaphore - * OutHandle - Where a handle will be returned - * - * RETURN: Status - * - * DESCRIPTION: Create an OS semaphore - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsCreateSemaphore ( - UINT32 MaxUnits, - UINT32 InitialUnits, - ACPI_HANDLE *OutHandle) -{ - - - *OutHandle = (ACPI_HANDLE) 1; - return AE_OK; -} - -/****************************************************************************** - * - * FUNCTION: AcpiOsDeleteSemaphore - * - * PARAMETERS: Handle - Handle returned by AcpiOsCreateSemaphore - * - * RETURN: Status - * - * DESCRIPTION: Delete an OS semaphore - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsDeleteSemaphore ( - ACPI_HANDLE Handle) -{ - - if (!Handle) - { - return AE_BAD_PARAMETER; - } - - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsWaitSemaphore - * - * PARAMETERS: Handle - Handle returned by AcpiOsCreateSemaphore - * Units - How many units to wait for - * Timeout - How long to wait - * - * RETURN: Status - * - * DESCRIPTION: Wait for units - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsWaitSemaphore ( - ACPI_HANDLE Handle, - UINT32 Units, - UINT16 Timeout) -{ - - - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsSignalSemaphore - * - * PARAMETERS: Handle - Handle returned by AcpiOsCreateSemaphore - * Units - Number of units to send - * - * RETURN: Status - * - * DESCRIPTION: Send units - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsSignalSemaphore ( - ACPI_HANDLE Handle, - UINT32 Units) -{ - - - return AE_OK; -} - - -ACPI_STATUS -AcpiOsCreateLock ( - ACPI_SPINLOCK *OutHandle) -{ - - return (AcpiOsCreateSemaphore (1, 1, OutHandle)); -} - -void -AcpiOsDeleteLock ( - ACPI_SPINLOCK Handle) -{ - AcpiOsDeleteSemaphore (Handle); -} - - -ACPI_CPU_FLAGS -AcpiOsAcquireLock ( - ACPI_HANDLE Handle) -{ - AcpiOsWaitSemaphore (Handle, 1, 0xFFFF); - return (0); -} - - -void -AcpiOsReleaseLock ( - ACPI_SPINLOCK Handle, - ACPI_CPU_FLAGS Flags) -{ - AcpiOsSignalSemaphore (Handle, 1); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsInstallInterruptHandler - * - * PARAMETERS: InterruptNumber Level handler should respond to. - * Isr Address of the ACPI interrupt handler - * ExceptPtr Where status is returned - * - * RETURN: Handle to the newly installed handler. - * - * DESCRIPTION: Install an interrupt handler. Used to install the ACPI - * OS-independent handler. - * - *****************************************************************************/ - -UINT32 -AcpiOsInstallInterruptHandler ( - UINT32 InterruptNumber, - ACPI_OSD_HANDLER ServiceRoutine, - void *Context) -{ - - - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsRemoveInterruptHandler - * - * PARAMETERS: Handle Returned when handler was installed - * - * RETURN: Status - * - * DESCRIPTION: Uninstalls an interrupt handler. - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsRemoveInterruptHandler ( - UINT32 InterruptNumber, - ACPI_OSD_HANDLER ServiceRoutine) -{ - - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsExecute - * - * PARAMETERS: Type - Type of execution - * Function - Address of the function to execute - * Context - Passed as a parameter to the function - * - * RETURN: Status. - * - * DESCRIPTION: Execute a new thread - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsExecute ( - ACPI_EXECUTE_TYPE Type, - ACPI_OSD_EXEC_CALLBACK Function, - void *Context) -{ - -// _beginthread (Function, (unsigned) 0, Context); - return 0; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsBreakpoint - * - * PARAMETERS: Msg Message to print - * - * RETURN: Status - * - * DESCRIPTION: Print a message and break to the debugger. - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsBreakpoint ( - char *Msg) -{ - - if (Msg) - { - AcpiOsPrintf ("AcpiOsBreakpoint: %s ****\n", Msg); - } - else - { - AcpiOsPrintf ("At AcpiOsBreakpoint ****\n"); - } - - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsStall - * - * PARAMETERS: microseconds To sleep - * - * RETURN: Blocks until sleep is completed. - * - * DESCRIPTION: Sleep at microsecond granularity - * - *****************************************************************************/ - -void -AcpiOsStall ( - UINT32 microseconds) -{ - - if (microseconds) - { - usleep (microseconds); - } - return; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsSleep - * - * PARAMETERS: milliseconds To sleep - * - * RETURN: Blocks until sleep is completed. - * - * DESCRIPTION: Sleep at millisecond granularity - * - *****************************************************************************/ - -void -AcpiOsSleep ( - ACPI_INTEGER milliseconds) -{ - - sleep (milliseconds / 1000); /* Sleep for whole seconds */ - - /* - * Arg to usleep() must be less than 1,000,000 (1 second) - */ - usleep ((milliseconds % 1000) * 1000); /* Sleep for remaining usecs */ - - return; -} - -/****************************************************************************** - * - * FUNCTION: AcpiOsGetTimer - * - * PARAMETERS: None - * - * RETURN: Current time in 100 nanosecond units - * - * DESCRIPTION: Get the current system time - * - *****************************************************************************/ - -UINT64 -AcpiOsGetTimer (void) -{ - struct timeval time; - - gettimeofday(&time, NULL); - - /* Seconds * 10^7 = 100ns(10^-7), Microseconds(10^-6) * 10^1 = 100ns */ - - return (((UINT64) time.tv_sec * 10000000) + ((UINT64) time.tv_usec * 10)); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsValidateInterface - * - * PARAMETERS: Interface - Requested interface to be validated - * - * RETURN: AE_OK if interface is supported, AE_SUPPORT otherwise - * - * DESCRIPTION: Match an interface string to the interfaces supported by the - * host. Strings originate from an AML call to the _OSI method. - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsValidateInterface ( - char *Interface) -{ - - return (AE_SUPPORT); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsValidateAddress - * - * PARAMETERS: SpaceId - ACPI space ID - * Address - Physical address - * Length - Address length - * - * RETURN: AE_OK if Address/Length is valid for the SpaceId. Otherwise, - * should return AE_AML_ILLEGAL_ADDRESS. - * - * DESCRIPTION: Validate a system address via the host OS. Used to validate - * the addresses accessed by AML operation regions. - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsValidateAddress ( - UINT8 SpaceId, - ACPI_PHYSICAL_ADDRESS Address, - ACPI_SIZE Length) -{ - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsReadPciConfiguration - * - * PARAMETERS: PciId Seg/Bus/Dev - * Register Device Register - * Value Buffer where value is placed - * Width Number of bits - * - * RETURN: Status - * - * DESCRIPTION: Read data from PCI configuration space - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsReadPciConfiguration ( - ACPI_PCI_ID *PciId, - UINT32 Register, - void *Value, - UINT32 Width) -{ - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsWritePciConfiguration - * - * PARAMETERS: PciId Seg/Bus/Dev - * Register Device Register - * Value Value to be written - * Width Number of bits - * - * RETURN: Status. - * - * DESCRIPTION: Write data to PCI configuration space - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsWritePciConfiguration ( - ACPI_PCI_ID *PciId, - UINT32 Register, - ACPI_INTEGER Value, - UINT32 Width) -{ - - return (AE_OK); -} - -/* TEMPORARY STUB FUNCTION */ -void -AcpiOsDerivePciId( - ACPI_HANDLE rhandle, - ACPI_HANDLE chandle, - ACPI_PCI_ID **PciId) -{ - -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsReadPort - * - * PARAMETERS: Address Address of I/O port/register to read - * Value Where value is placed - * Width Number of bits - * - * RETURN: Value read from port - * - * DESCRIPTION: Read data from an I/O port or register - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsReadPort ( - ACPI_IO_ADDRESS Address, - UINT32 *Value, - UINT32 Width) -{ - - switch (Width) - { - case 8: - *Value = 0xFF; - break; - - case 16: - *Value = 0xFFFF; - break; - - case 32: - *Value = 0xFFFFFFFF; - break; - } - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsWritePort - * - * PARAMETERS: Address Address of I/O port/register to write - * Value Value to write - * Width Number of bits - * - * RETURN: None - * - * DESCRIPTION: Write data to an I/O port or register - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsWritePort ( - ACPI_IO_ADDRESS Address, - UINT32 Value, - UINT32 Width) -{ - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsReadMemory - * - * PARAMETERS: Address Physical Memory Address to read - * Value Where value is placed - * Width Number of bits - * - * RETURN: Value read from physical memory address - * - * DESCRIPTION: Read data from a physical memory address - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsReadMemory ( - ACPI_PHYSICAL_ADDRESS Address, - UINT32 *Value, - UINT32 Width) -{ - - switch (Width) - { - case 8: - case 16: - case 32: - *Value = 0; - break; - - default: - return (AE_BAD_PARAMETER); - break; - } - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsWriteMemory - * - * PARAMETERS: Address Physical Memory Address to write - * Value Value to write - * Width Number of bits - * - * RETURN: None - * - * DESCRIPTION: Write data to a physical memory address - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsWriteMemory ( - ACPI_PHYSICAL_ADDRESS Address, - UINT32 Value, - UINT32 Width) -{ - - return (AE_OK); -} - - -ACPI_THREAD_ID -AcpiOsGetThreadId(void) -{ - return getpid(); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsSignal - * - * PARAMETERS: Function ACPI CA signal function code - * Info Pointer to function-dependent structure - * - * RETURN: Status - * - * DESCRIPTION: Miscellaneous functions - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsSignal ( - UINT32 Function, - void *Info) -{ - - switch (Function) - { - case ACPI_SIGNAL_FATAL: - break; - - case ACPI_SIGNAL_BREAKPOINT: - - if (Info) - { - AcpiOsPrintf ("AcpiOsBreakpoint: %s ****\n", Info); - } - else - { - AcpiOsPrintf ("At AcpiOsBreakpoint ****\n"); - } - - break; - } - - - return (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/resources/rsaddr.c b/sys/contrib/dev/acpica-unix-20061109/resources/rsaddr.c deleted file mode 100644 index 5172e77f1b..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/resources/rsaddr.c +++ /dev/null @@ -1,479 +0,0 @@ -/******************************************************************************* - * - * Module Name: rsaddr - Address resource descriptors (16/32/64) - * $Revision: 1.49 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __RSADDR_C__ - -#include "acpi.h" -#include "acresrc.h" - -#define _COMPONENT ACPI_RESOURCES - ACPI_MODULE_NAME ("rsaddr") - - -/******************************************************************************* - * - * AcpiRsConvertAddress16 - All WORD (16-bit) address resources - * - ******************************************************************************/ - -ACPI_RSCONVERT_INFO AcpiRsConvertAddress16[5] = -{ - {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_ADDRESS16, - ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS16), - ACPI_RSC_TABLE_SIZE (AcpiRsConvertAddress16)}, - - {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_ADDRESS16, - sizeof (AML_RESOURCE_ADDRESS16), - 0}, - - /* Resource Type, General Flags, and Type-Specific Flags */ - - {ACPI_RSC_ADDRESS, 0, 0, 0}, - - /* - * These fields are contiguous in both the source and destination: - * Address Granularity - * Address Range Minimum - * Address Range Maximum - * Address Translation Offset - * Address Length - */ - {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.Address16.Granularity), - AML_OFFSET (Address16.Granularity), - 5}, - - /* Optional ResourceSource (Index and String) */ - - {ACPI_RSC_SOURCE, ACPI_RS_OFFSET (Data.Address16.ResourceSource), - 0, - sizeof (AML_RESOURCE_ADDRESS16)} -}; - - -/******************************************************************************* - * - * AcpiRsConvertAddress32 - All DWORD (32-bit) address resources - * - ******************************************************************************/ - -ACPI_RSCONVERT_INFO AcpiRsConvertAddress32[5] = -{ - {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_ADDRESS32, - ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS32), - ACPI_RSC_TABLE_SIZE (AcpiRsConvertAddress32)}, - - {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_ADDRESS32, - sizeof (AML_RESOURCE_ADDRESS32), - 0}, - - /* Resource Type, General Flags, and Type-Specific Flags */ - - {ACPI_RSC_ADDRESS, 0, 0, 0}, - - /* - * These fields are contiguous in both the source and destination: - * Address Granularity - * Address Range Minimum - * Address Range Maximum - * Address Translation Offset - * Address Length - */ - {ACPI_RSC_MOVE32, ACPI_RS_OFFSET (Data.Address32.Granularity), - AML_OFFSET (Address32.Granularity), - 5}, - - /* Optional ResourceSource (Index and String) */ - - {ACPI_RSC_SOURCE, ACPI_RS_OFFSET (Data.Address32.ResourceSource), - 0, - sizeof (AML_RESOURCE_ADDRESS32)} -}; - - -/******************************************************************************* - * - * AcpiRsConvertAddress64 - All QWORD (64-bit) address resources - * - ******************************************************************************/ - -ACPI_RSCONVERT_INFO AcpiRsConvertAddress64[5] = -{ - {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_ADDRESS64, - ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS64), - ACPI_RSC_TABLE_SIZE (AcpiRsConvertAddress64)}, - - {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_ADDRESS64, - sizeof (AML_RESOURCE_ADDRESS64), - 0}, - - /* Resource Type, General Flags, and Type-Specific Flags */ - - {ACPI_RSC_ADDRESS, 0, 0, 0}, - - /* - * These fields are contiguous in both the source and destination: - * Address Granularity - * Address Range Minimum - * Address Range Maximum - * Address Translation Offset - * Address Length - */ - {ACPI_RSC_MOVE64, ACPI_RS_OFFSET (Data.Address64.Granularity), - AML_OFFSET (Address64.Granularity), - 5}, - - /* Optional ResourceSource (Index and String) */ - - {ACPI_RSC_SOURCE, ACPI_RS_OFFSET (Data.Address64.ResourceSource), - 0, - sizeof (AML_RESOURCE_ADDRESS64)} -}; - - -/******************************************************************************* - * - * AcpiRsConvertExtAddress64 - All Extended (64-bit) address resources - * - ******************************************************************************/ - -ACPI_RSCONVERT_INFO AcpiRsConvertExtAddress64[5] = -{ - {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64, - ACPI_RS_SIZE (ACPI_RESOURCE_EXTENDED_ADDRESS64), - ACPI_RSC_TABLE_SIZE (AcpiRsConvertExtAddress64)}, - - {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64, - sizeof (AML_RESOURCE_EXTENDED_ADDRESS64), - 0}, - - /* Resource Type, General Flags, and Type-Specific Flags */ - - {ACPI_RSC_ADDRESS, 0, 0, 0}, - - /* Revision ID */ - - {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.ExtAddress64.RevisionID), - AML_OFFSET (ExtAddress64.RevisionID), - 1}, - /* - * These fields are contiguous in both the source and destination: - * Address Granularity - * Address Range Minimum - * Address Range Maximum - * Address Translation Offset - * Address Length - * Type-Specific Attribute - */ - {ACPI_RSC_MOVE64, ACPI_RS_OFFSET (Data.ExtAddress64.Granularity), - AML_OFFSET (ExtAddress64.Granularity), - 6} -}; - - -/******************************************************************************* - * - * AcpiRsConvertGeneralFlags - Flags common to all address descriptors - * - ******************************************************************************/ - -static ACPI_RSCONVERT_INFO AcpiRsConvertGeneralFlags[6] = -{ - {ACPI_RSC_FLAGINIT, 0, AML_OFFSET (Address.Flags), - ACPI_RSC_TABLE_SIZE (AcpiRsConvertGeneralFlags)}, - - /* Resource Type (Memory, Io, BusNumber, etc.) */ - - {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Address.ResourceType), - AML_OFFSET (Address.ResourceType), - 1}, - - /* General Flags - Consume, Decode, MinFixed, MaxFixed */ - - {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.ProducerConsumer), - AML_OFFSET (Address.Flags), - 0}, - - {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.Decode), - AML_OFFSET (Address.Flags), - 1}, - - {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.MinAddressFixed), - AML_OFFSET (Address.Flags), - 2}, - - {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.MaxAddressFixed), - AML_OFFSET (Address.Flags), - 3} -}; - - -/******************************************************************************* - * - * AcpiRsConvertMemFlags - Flags common to Memory address descriptors - * - ******************************************************************************/ - -static ACPI_RSCONVERT_INFO AcpiRsConvertMemFlags[5] = -{ - {ACPI_RSC_FLAGINIT, 0, AML_OFFSET (Address.SpecificFlags), - ACPI_RSC_TABLE_SIZE (AcpiRsConvertMemFlags)}, - - /* Memory-specific flags */ - - {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Mem.WriteProtect), - AML_OFFSET (Address.SpecificFlags), - 0}, - - {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Mem.Caching), - AML_OFFSET (Address.SpecificFlags), - 1}, - - {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Mem.RangeType), - AML_OFFSET (Address.SpecificFlags), - 3}, - - {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Mem.Translation), - AML_OFFSET (Address.SpecificFlags), - 5} -}; - - -/******************************************************************************* - * - * AcpiRsConvertIoFlags - Flags common to I/O address descriptors - * - ******************************************************************************/ - -static ACPI_RSCONVERT_INFO AcpiRsConvertIoFlags[4] = -{ - {ACPI_RSC_FLAGINIT, 0, AML_OFFSET (Address.SpecificFlags), - ACPI_RSC_TABLE_SIZE (AcpiRsConvertIoFlags)}, - - /* I/O-specific flags */ - - {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Io.RangeType), - AML_OFFSET (Address.SpecificFlags), - 0}, - - {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Io.Translation), - AML_OFFSET (Address.SpecificFlags), - 4}, - - {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Io.TranslationType), - AML_OFFSET (Address.SpecificFlags), - 5} -}; - - -/******************************************************************************* - * - * FUNCTION: AcpiRsGetAddressCommon - * - * PARAMETERS: Resource - Pointer to the internal resource struct - * Aml - Pointer to the AML resource descriptor - * - * RETURN: TRUE if the ResourceType field is OK, FALSE otherwise - * - * DESCRIPTION: Convert common flag fields from a raw AML resource descriptor - * to an internal resource descriptor - * - ******************************************************************************/ - -BOOLEAN -AcpiRsGetAddressCommon ( - ACPI_RESOURCE *Resource, - AML_RESOURCE *Aml) -{ - ACPI_FUNCTION_ENTRY (); - - - /* Validate the Resource Type */ - - if ((Aml->Address.ResourceType > 2) && (Aml->Address.ResourceType < 0xC0)) - { - return (FALSE); - } - - /* Get the Resource Type and General Flags */ - - (void) AcpiRsConvertAmlToResource (Resource, Aml, AcpiRsConvertGeneralFlags); - - /* Get the Type-Specific Flags (Memory and I/O descriptors only) */ - - if (Resource->Data.Address.ResourceType == ACPI_MEMORY_RANGE) - { - (void) AcpiRsConvertAmlToResource (Resource, Aml, AcpiRsConvertMemFlags); - } - else if (Resource->Data.Address.ResourceType == ACPI_IO_RANGE) - { - (void) AcpiRsConvertAmlToResource (Resource, Aml, AcpiRsConvertIoFlags); - } - else - { - /* Generic resource type, just grab the TypeSpecific byte */ - - Resource->Data.Address.Info.TypeSpecific = Aml->Address.SpecificFlags; - } - - return (TRUE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsSetAddressCommon - * - * PARAMETERS: Aml - Pointer to the AML resource descriptor - * Resource - Pointer to the internal resource struct - * - * RETURN: None - * - * DESCRIPTION: Convert common flag fields from a resource descriptor to an - * AML descriptor - * - ******************************************************************************/ - -void -AcpiRsSetAddressCommon ( - AML_RESOURCE *Aml, - ACPI_RESOURCE *Resource) -{ - ACPI_FUNCTION_ENTRY (); - - - /* Set the Resource Type and General Flags */ - - (void) AcpiRsConvertResourceToAml (Resource, Aml, AcpiRsConvertGeneralFlags); - - /* Set the Type-Specific Flags (Memory and I/O descriptors only) */ - - if (Resource->Data.Address.ResourceType == ACPI_MEMORY_RANGE) - { - (void) AcpiRsConvertResourceToAml (Resource, Aml, AcpiRsConvertMemFlags); - } - else if (Resource->Data.Address.ResourceType == ACPI_IO_RANGE) - { - (void) AcpiRsConvertResourceToAml (Resource, Aml, AcpiRsConvertIoFlags); - } - else - { - /* Generic resource type, just copy the TypeSpecific byte */ - - Aml->Address.SpecificFlags = Resource->Data.Address.Info.TypeSpecific; - } -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/resources/rscalc.c b/sys/contrib/dev/acpica-unix-20061109/resources/rscalc.c deleted file mode 100644 index 97fd5a3e71..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/resources/rscalc.c +++ /dev/null @@ -1,715 +0,0 @@ -/******************************************************************************* - * - * Module Name: rscalc - Calculate stream and list lengths - * $Revision: 1.79 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __RSCALC_C__ - -#include "acpi.h" -#include "acresrc.h" -#include "amlcode.h" -#include "acnamesp.h" - -#define _COMPONENT ACPI_RESOURCES - ACPI_MODULE_NAME ("rscalc") - - -/* Local prototypes */ - -static UINT8 -AcpiRsCountSetBits ( - UINT16 BitField); - -static ACPI_RS_LENGTH -AcpiRsStructOptionLength ( - ACPI_RESOURCE_SOURCE *ResourceSource); - -static UINT32 -AcpiRsStreamOptionLength ( - UINT32 ResourceLength, - UINT32 MinimumTotalLength); - - -/******************************************************************************* - * - * FUNCTION: AcpiRsCountSetBits - * - * PARAMETERS: BitField - Field in which to count bits - * - * RETURN: Number of bits set within the field - * - * DESCRIPTION: Count the number of bits set in a resource field. Used for - * (Short descriptor) interrupt and DMA lists. - * - ******************************************************************************/ - -static UINT8 -AcpiRsCountSetBits ( - UINT16 BitField) -{ - UINT8 BitsSet; - - - ACPI_FUNCTION_ENTRY (); - - - for (BitsSet = 0; BitField; BitsSet++) - { - /* Zero the least significant bit that is set */ - - BitField &= (BitField - 1); - } - - return (BitsSet); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsStructOptionLength - * - * PARAMETERS: ResourceSource - Pointer to optional descriptor field - * - * RETURN: Status - * - * DESCRIPTION: Common code to handle optional ResourceSourceIndex and - * ResourceSource fields in some Large descriptors. Used during - * list-to-stream conversion - * - ******************************************************************************/ - -static ACPI_RS_LENGTH -AcpiRsStructOptionLength ( - ACPI_RESOURCE_SOURCE *ResourceSource) -{ - ACPI_FUNCTION_ENTRY (); - - - /* - * If the ResourceSource string is valid, return the size of the string - * (StringLength includes the NULL terminator) plus the size of the - * ResourceSourceIndex (1). - */ - if (ResourceSource->StringPtr) - { - return ((ACPI_RS_LENGTH) (ResourceSource->StringLength + 1)); - } - - return (0); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsStreamOptionLength - * - * PARAMETERS: ResourceLength - Length from the resource header - * MinimumTotalLength - Minimum length of this resource, before - * any optional fields. Includes header size - * - * RETURN: Length of optional string (0 if no string present) - * - * DESCRIPTION: Common code to handle optional ResourceSourceIndex and - * ResourceSource fields in some Large descriptors. Used during - * stream-to-list conversion - * - ******************************************************************************/ - -static UINT32 -AcpiRsStreamOptionLength ( - UINT32 ResourceLength, - UINT32 MinimumAmlResourceLength) -{ - UINT32 StringLength = 0; - - - ACPI_FUNCTION_ENTRY (); - - - /* - * The ResourceSourceIndex and ResourceSource are optional elements of some - * Large-type resource descriptors. - */ - - /* - * If the length of the actual resource descriptor is greater than the ACPI - * spec-defined minimum length, it means that a ResourceSourceIndex exists - * and is followed by a (required) null terminated string. The string length - * (including the null terminator) is the resource length minus the minimum - * length, minus one byte for the ResourceSourceIndex itself. - */ - if (ResourceLength > MinimumAmlResourceLength) - { - /* Compute the length of the optional string */ - - StringLength = ResourceLength - MinimumAmlResourceLength - 1; - } - - /* - * Round the length up to a multiple of the native word in order to - * guarantee that the entire resource descriptor is native word aligned - */ - return ((UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (StringLength)); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsGetAmlLength - * - * PARAMETERS: Resource - Pointer to the resource linked list - * SizeNeeded - Where the required size is returned - * - * RETURN: Status - * - * DESCRIPTION: Takes a linked list of internal resource descriptors and - * calculates the size buffer needed to hold the corresponding - * external resource byte stream. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsGetAmlLength ( - ACPI_RESOURCE *Resource, - ACPI_SIZE *SizeNeeded) -{ - ACPI_SIZE AmlSizeNeeded = 0; - ACPI_RS_LENGTH TotalSize; - - - ACPI_FUNCTION_TRACE (RsGetAmlLength); - - - /* Traverse entire list of internal resource descriptors */ - - while (Resource) - { - /* Validate the descriptor type */ - - if (Resource->Type > ACPI_RESOURCE_TYPE_MAX) - { - return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE); - } - - /* Get the base size of the (external stream) resource descriptor */ - - TotalSize = AcpiGbl_AmlResourceSizes [Resource->Type]; - - /* - * Augment the base size for descriptors with optional and/or - * variable-length fields - */ - switch (Resource->Type) - { - case ACPI_RESOURCE_TYPE_VENDOR: - /* - * Vendor Defined Resource: - * For a Vendor Specific resource, if the Length is between 1 and 7 - * it will be created as a Small Resource data type, otherwise it - * is a Large Resource data type. - */ - if (Resource->Data.Vendor.ByteLength > 7) - { - /* Base size of a Large resource descriptor */ - - TotalSize = sizeof (AML_RESOURCE_LARGE_HEADER); - } - - /* Add the size of the vendor-specific data */ - - TotalSize = (ACPI_RS_LENGTH) - (TotalSize + Resource->Data.Vendor.ByteLength); - break; - - - case ACPI_RESOURCE_TYPE_END_TAG: - /* - * End Tag: - * We are done -- return the accumulated total size. - */ - *SizeNeeded = AmlSizeNeeded + TotalSize; - - /* Normal exit */ - - return_ACPI_STATUS (AE_OK); - - - case ACPI_RESOURCE_TYPE_ADDRESS16: - /* - * 16-Bit Address Resource: - * Add the size of the optional ResourceSource info - */ - TotalSize = (ACPI_RS_LENGTH) - (TotalSize + AcpiRsStructOptionLength ( - &Resource->Data.Address16.ResourceSource)); - break; - - - case ACPI_RESOURCE_TYPE_ADDRESS32: - /* - * 32-Bit Address Resource: - * Add the size of the optional ResourceSource info - */ - TotalSize = (ACPI_RS_LENGTH) - (TotalSize + AcpiRsStructOptionLength ( - &Resource->Data.Address32.ResourceSource)); - break; - - - case ACPI_RESOURCE_TYPE_ADDRESS64: - /* - * 64-Bit Address Resource: - * Add the size of the optional ResourceSource info - */ - TotalSize = (ACPI_RS_LENGTH) - (TotalSize + AcpiRsStructOptionLength ( - &Resource->Data.Address64.ResourceSource)); - break; - - - case ACPI_RESOURCE_TYPE_EXTENDED_IRQ: - /* - * Extended IRQ Resource: - * Add the size of each additional optional interrupt beyond the - * required 1 (4 bytes for each UINT32 interrupt number) - */ - TotalSize = (ACPI_RS_LENGTH) - (TotalSize + - ((Resource->Data.ExtendedIrq.InterruptCount - 1) * 4) + - - /* Add the size of the optional ResourceSource info */ - - AcpiRsStructOptionLength ( - &Resource->Data.ExtendedIrq.ResourceSource)); - break; - - - default: - break; - } - - /* Update the total */ - - AmlSizeNeeded += TotalSize; - - /* Point to the next object */ - - Resource = ACPI_ADD_PTR (ACPI_RESOURCE, Resource, Resource->Length); - } - - /* Did not find an EndTag resource descriptor */ - - return_ACPI_STATUS (AE_AML_NO_RESOURCE_END_TAG); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsGetListLength - * - * PARAMETERS: AmlBuffer - Pointer to the resource byte stream - * AmlBufferLength - Size of AmlBuffer - * SizeNeeded - Where the size needed is returned - * - * RETURN: Status - * - * DESCRIPTION: Takes an external resource byte stream and calculates the size - * buffer needed to hold the corresponding internal resource - * descriptor linked list. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsGetListLength ( - UINT8 *AmlBuffer, - UINT32 AmlBufferLength, - ACPI_SIZE *SizeNeeded) -{ - ACPI_STATUS Status; - UINT8 *EndAml; - UINT8 *Buffer; - UINT32 BufferSize; - UINT16 Temp16; - UINT16 ResourceLength; - UINT32 ExtraStructBytes; - UINT8 ResourceIndex; - UINT8 MinimumAmlResourceLength; - - - ACPI_FUNCTION_TRACE (RsGetListLength); - - - *SizeNeeded = 0; - EndAml = AmlBuffer + AmlBufferLength; - - /* Walk the list of AML resource descriptors */ - - while (AmlBuffer < EndAml) - { - /* Validate the Resource Type and Resource Length */ - - Status = AcpiUtValidateResource (AmlBuffer, &ResourceIndex); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Get the resource length and base (minimum) AML size */ - - ResourceLength = AcpiUtGetResourceLength (AmlBuffer); - MinimumAmlResourceLength = AcpiGbl_ResourceAmlSizes[ResourceIndex]; - - /* - * Augment the size for descriptors with optional - * and/or variable length fields - */ - ExtraStructBytes = 0; - Buffer = AmlBuffer + AcpiUtGetResourceHeaderLength (AmlBuffer); - - switch (AcpiUtGetResourceType (AmlBuffer)) - { - case ACPI_RESOURCE_NAME_IRQ: - /* - * IRQ Resource: - * Get the number of bits set in the 16-bit IRQ mask - */ - ACPI_MOVE_16_TO_16 (&Temp16, Buffer); - ExtraStructBytes = AcpiRsCountSetBits (Temp16); - break; - - - case ACPI_RESOURCE_NAME_DMA: - /* - * DMA Resource: - * Get the number of bits set in the 8-bit DMA mask - */ - ExtraStructBytes = AcpiRsCountSetBits (*Buffer); - break; - - - case ACPI_RESOURCE_NAME_VENDOR_SMALL: - case ACPI_RESOURCE_NAME_VENDOR_LARGE: - /* - * Vendor Resource: - * Get the number of vendor data bytes - */ - ExtraStructBytes = ResourceLength; - break; - - - case ACPI_RESOURCE_NAME_END_TAG: - /* - * End Tag: - * This is the normal exit, add size of EndTag - */ - *SizeNeeded += ACPI_RS_SIZE_MIN; - return_ACPI_STATUS (AE_OK); - - - case ACPI_RESOURCE_NAME_ADDRESS32: - case ACPI_RESOURCE_NAME_ADDRESS16: - case ACPI_RESOURCE_NAME_ADDRESS64: - /* - * Address Resource: - * Add the size of the optional ResourceSource - */ - ExtraStructBytes = AcpiRsStreamOptionLength ( - ResourceLength, MinimumAmlResourceLength); - break; - - - case ACPI_RESOURCE_NAME_EXTENDED_IRQ: - /* - * Extended IRQ Resource: - * Using the InterruptTableLength, add 4 bytes for each additional - * interrupt. Note: at least one interrupt is required and is - * included in the minimum descriptor size (reason for the -1) - */ - ExtraStructBytes = (Buffer[1] - 1) * sizeof (UINT32); - - /* Add the size of the optional ResourceSource */ - - ExtraStructBytes += AcpiRsStreamOptionLength ( - ResourceLength - ExtraStructBytes, MinimumAmlResourceLength); - break; - - - default: - break; - } - - /* - * Update the required buffer size for the internal descriptor structs - * - * Important: Round the size up for the appropriate alignment. This - * is a requirement on IA64. - */ - BufferSize = AcpiGbl_ResourceStructSizes[ResourceIndex] + - ExtraStructBytes; - BufferSize = (UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (BufferSize); - - *SizeNeeded += BufferSize; - - ACPI_DEBUG_PRINT ((ACPI_DB_RESOURCES, - "Type %.2X, AmlLength %.2X InternalLength %.2X\n", - AcpiUtGetResourceType (AmlBuffer), - AcpiUtGetDescriptorLength (AmlBuffer), BufferSize)); - - /* - * Point to the next resource within the AML stream using the length - * contained in the resource descriptor header - */ - AmlBuffer += AcpiUtGetDescriptorLength (AmlBuffer); - } - - /* Did not find an EndTag resource descriptor */ - - return_ACPI_STATUS (AE_AML_NO_RESOURCE_END_TAG); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsGetPciRoutingTableLength - * - * PARAMETERS: PackageObject - Pointer to the package object - * BufferSizeNeeded - UINT32 pointer of the size buffer - * needed to properly return the - * parsed data - * - * RETURN: Status - * - * DESCRIPTION: Given a package representing a PCI routing table, this - * calculates the size of the corresponding linked list of - * descriptions. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsGetPciRoutingTableLength ( - ACPI_OPERAND_OBJECT *PackageObject, - ACPI_SIZE *BufferSizeNeeded) -{ - UINT32 NumberOfElements; - ACPI_SIZE TempSizeNeeded = 0; - ACPI_OPERAND_OBJECT **TopObjectList; - UINT32 Index; - ACPI_OPERAND_OBJECT *PackageElement; - ACPI_OPERAND_OBJECT **SubObjectList; - BOOLEAN NameFound; - UINT32 TableIndex; - - - ACPI_FUNCTION_TRACE (RsGetPciRoutingTableLength); - - - NumberOfElements = PackageObject->Package.Count; - - /* - * Calculate the size of the return buffer. - * The base size is the number of elements * the sizes of the - * structures. Additional space for the strings is added below. - * The minus one is to subtract the size of the UINT8 Source[1] - * member because it is added below. - * - * But each PRT_ENTRY structure has a pointer to a string and - * the size of that string must be found. - */ - TopObjectList = PackageObject->Package.Elements; - - for (Index = 0; Index < NumberOfElements; Index++) - { - /* Dereference the sub-package */ - - PackageElement = *TopObjectList; - - /* - * The SubObjectList will now point to an array of the - * four IRQ elements: Address, Pin, Source and SourceIndex - */ - SubObjectList = PackageElement->Package.Elements; - - /* Scan the IrqTableElements for the Source Name String */ - - NameFound = FALSE; - - for (TableIndex = 0; TableIndex < 4 && !NameFound; TableIndex++) - { - if (*SubObjectList && /* Null object allowed */ - - ((ACPI_TYPE_STRING == - ACPI_GET_OBJECT_TYPE (*SubObjectList)) || - - ((ACPI_TYPE_LOCAL_REFERENCE == - ACPI_GET_OBJECT_TYPE (*SubObjectList)) && - - ((*SubObjectList)->Reference.Opcode == - AML_INT_NAMEPATH_OP)))) - { - NameFound = TRUE; - } - else - { - /* Look at the next element */ - - SubObjectList++; - } - } - - TempSizeNeeded += (sizeof (ACPI_PCI_ROUTING_TABLE) - 4); - - /* Was a String type found? */ - - if (NameFound) - { - if (ACPI_GET_OBJECT_TYPE (*SubObjectList) == ACPI_TYPE_STRING) - { - /* - * The length String.Length field does not include the - * terminating NULL, add 1 - */ - TempSizeNeeded += ((ACPI_SIZE) - (*SubObjectList)->String.Length + 1); - } - else - { - TempSizeNeeded += AcpiNsGetPathnameLength ( - (*SubObjectList)->Reference.Node); - } - } - else - { - /* - * If no name was found, then this is a NULL, which is - * translated as a UINT32 zero. - */ - TempSizeNeeded += sizeof (UINT32); - } - - /* Round up the size since each element must be aligned */ - - TempSizeNeeded = ACPI_ROUND_UP_TO_64BIT (TempSizeNeeded); - - /* Point to the next ACPI_OPERAND_OBJECT */ - - TopObjectList++; - } - - /* - * Add an extra element to the end of the list, essentially a - * NULL terminator - */ - *BufferSizeNeeded = TempSizeNeeded + sizeof (ACPI_PCI_ROUTING_TABLE); - return_ACPI_STATUS (AE_OK); -} diff --git a/sys/contrib/dev/acpica-unix-20061109/resources/rscreate.c b/sys/contrib/dev/acpica-unix-20061109/resources/rscreate.c deleted file mode 100644 index 1cb836adc7..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/resources/rscreate.c +++ /dev/null @@ -1,526 +0,0 @@ -/******************************************************************************* - * - * Module Name: rscreate - Create resource lists/tables - * $Revision: 1.77 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __RSCREATE_C__ - -#include "acpi.h" -#include "acresrc.h" -#include "amlcode.h" -#include "acnamesp.h" - -#define _COMPONENT ACPI_RESOURCES - ACPI_MODULE_NAME ("rscreate") - - -/******************************************************************************* - * - * FUNCTION: AcpiRsCreateResourceList - * - * PARAMETERS: AmlBuffer - Pointer to the resource byte stream - * OutputBuffer - Pointer to the user's buffer - * - * RETURN: Status: AE_OK if okay, else a valid ACPI_STATUS code - * If OutputBuffer is not large enough, OutputBufferLength - * indicates how large OutputBuffer should be, else it - * indicates how may UINT8 elements of OutputBuffer are valid. - * - * DESCRIPTION: Takes the byte stream returned from a _CRS, _PRS control method - * execution and parses the stream to create a linked list - * of device resources. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsCreateResourceList ( - ACPI_OPERAND_OBJECT *AmlBuffer, - ACPI_BUFFER *OutputBuffer) -{ - - ACPI_STATUS Status; - UINT8 *AmlStart; - ACPI_SIZE ListSizeNeeded = 0; - UINT32 AmlBufferLength; - void *Resource; - - - ACPI_FUNCTION_TRACE (RsCreateResourceList); - - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "AmlBuffer = %p\n", - AmlBuffer)); - - /* Params already validated, so we don't re-validate here */ - - AmlBufferLength = AmlBuffer->Buffer.Length; - AmlStart = AmlBuffer->Buffer.Pointer; - - /* - * Pass the AmlBuffer into a module that can calculate - * the buffer size needed for the linked list - */ - Status = AcpiRsGetListLength (AmlStart, AmlBufferLength, - &ListSizeNeeded); - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Status=%X ListSizeNeeded=%X\n", - Status, (UINT32) ListSizeNeeded)); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Validate/Allocate/Clear caller buffer */ - - Status = AcpiUtInitializeBuffer (OutputBuffer, ListSizeNeeded); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Do the conversion */ - - Resource = OutputBuffer->Pointer; - Status = AcpiUtWalkAmlResources (AmlStart, AmlBufferLength, - AcpiRsConvertAmlToResources, &Resource); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "OutputBuffer %p Length %X\n", - OutputBuffer->Pointer, (UINT32) OutputBuffer->Length)); - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsCreatePciRoutingTable - * - * PARAMETERS: PackageObject - Pointer to an ACPI_OPERAND_OBJECT - * package - * OutputBuffer - Pointer to the user's buffer - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code. - * If the OutputBuffer is too small, the error will be - * AE_BUFFER_OVERFLOW and OutputBuffer->Length will point - * to the size buffer needed. - * - * DESCRIPTION: Takes the ACPI_OPERAND_OBJECT package and creates a - * linked list of PCI interrupt descriptions - * - * NOTE: It is the caller's responsibility to ensure that the start of the - * output buffer is aligned properly (if necessary). - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsCreatePciRoutingTable ( - ACPI_OPERAND_OBJECT *PackageObject, - ACPI_BUFFER *OutputBuffer) -{ - UINT8 *Buffer; - ACPI_OPERAND_OBJECT **TopObjectList; - ACPI_OPERAND_OBJECT **SubObjectList; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_SIZE BufferSizeNeeded = 0; - UINT32 NumberOfElements; - UINT32 Index; - ACPI_PCI_ROUTING_TABLE *UserPrt; - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - ACPI_BUFFER PathBuffer; - - - ACPI_FUNCTION_TRACE (RsCreatePciRoutingTable); - - - /* Params already validated, so we don't re-validate here */ - - /* Get the required buffer length */ - - Status = AcpiRsGetPciRoutingTableLength (PackageObject, - &BufferSizeNeeded); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "BufferSizeNeeded = %X\n", - (UINT32) BufferSizeNeeded)); - - /* Validate/Allocate/Clear caller buffer */ - - Status = AcpiUtInitializeBuffer (OutputBuffer, BufferSizeNeeded); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Loop through the ACPI_INTERNAL_OBJECTS - Each object - * should be a package that in turn contains an - * ACPI_INTEGER Address, a UINT8 Pin, a Name and a UINT8 SourceIndex. - */ - TopObjectList = PackageObject->Package.Elements; - NumberOfElements = PackageObject->Package.Count; - Buffer = OutputBuffer->Pointer; - UserPrt = ACPI_CAST_PTR (ACPI_PCI_ROUTING_TABLE, Buffer); - - for (Index = 0; Index < NumberOfElements; Index++) - { - /* - * Point UserPrt past this current structure - * - * NOTE: On the first iteration, UserPrt->Length will - * be zero because we cleared the return buffer earlier - */ - Buffer += UserPrt->Length; - UserPrt = ACPI_CAST_PTR (ACPI_PCI_ROUTING_TABLE, Buffer); - - /* - * Fill in the Length field with the information we have at this point. - * The minus four is to subtract the size of the UINT8 Source[4] member - * because it is added below. - */ - UserPrt->Length = (sizeof (ACPI_PCI_ROUTING_TABLE) - 4); - - /* Each element of the top-level package must also be a package */ - - if (ACPI_GET_OBJECT_TYPE (*TopObjectList) != ACPI_TYPE_PACKAGE) - { - ACPI_ERROR ((AE_INFO, - "(PRT[%X]) Need sub-package, found %s", - Index, AcpiUtGetObjectTypeName (*TopObjectList))); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); - } - - /* Each sub-package must be of length 4 */ - - if ((*TopObjectList)->Package.Count != 4) - { - ACPI_ERROR ((AE_INFO, - "(PRT[%X]) Need package of length 4, found length %d", - Index, (*TopObjectList)->Package.Count)); - return_ACPI_STATUS (AE_AML_PACKAGE_LIMIT); - } - - /* - * Dereference the sub-package. - * The SubObjectList will now point to an array of the four IRQ - * elements: [Address, Pin, Source, SourceIndex] - */ - SubObjectList = (*TopObjectList)->Package.Elements; - - /* 1) First subobject: Dereference the PRT.Address */ - - ObjDesc = SubObjectList[0]; - if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_INTEGER) - { - UserPrt->Address = ObjDesc->Integer.Value; - } - else - { - ACPI_ERROR ((AE_INFO, - "(PRT[%X].Address) Need Integer, found %s", - Index, AcpiUtGetObjectTypeName (ObjDesc))); - return_ACPI_STATUS (AE_BAD_DATA); - } - - /* 2) Second subobject: Dereference the PRT.Pin */ - - ObjDesc = SubObjectList[1]; - if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_INTEGER) - { - UserPrt->Pin = (UINT32) ObjDesc->Integer.Value; - } - else - { - ACPI_ERROR ((AE_INFO, - "(PRT[%X].Pin) Need Integer, found %s", - Index, AcpiUtGetObjectTypeName (ObjDesc))); - return_ACPI_STATUS (AE_BAD_DATA); - } - - /* - * 3) Third subobject: Dereference the PRT.SourceName - * The name may be unresolved (slack mode), so allow a null object - */ - ObjDesc = SubObjectList[2]; - if (ObjDesc) - { - switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) - { - case ACPI_TYPE_LOCAL_REFERENCE: - - if (ObjDesc->Reference.Opcode != AML_INT_NAMEPATH_OP) - { - ACPI_ERROR ((AE_INFO, - "(PRT[%X].Source) Need name, found reference op %X", - Index, ObjDesc->Reference.Opcode)); - return_ACPI_STATUS (AE_BAD_DATA); - } - - Node = ObjDesc->Reference.Node; - - /* Use *remaining* length of the buffer as max for pathname */ - - PathBuffer.Length = OutputBuffer->Length - - (UINT32) ((UINT8 *) UserPrt->Source - - (UINT8 *) OutputBuffer->Pointer); - PathBuffer.Pointer = UserPrt->Source; - - Status = AcpiNsHandleToPathname ((ACPI_HANDLE) Node, &PathBuffer); - - /* +1 to include null terminator */ - - UserPrt->Length += (UINT32) ACPI_STRLEN (UserPrt->Source) + 1; - break; - - - case ACPI_TYPE_STRING: - - ACPI_STRCPY (UserPrt->Source, ObjDesc->String.Pointer); - - /* - * Add to the Length field the length of the string - * (add 1 for terminator) - */ - UserPrt->Length += ObjDesc->String.Length + 1; - break; - - - case ACPI_TYPE_INTEGER: - /* - * If this is a number, then the Source Name is NULL, since the - * entire buffer was zeroed out, we can leave this alone. - * - * Add to the Length field the length of the UINT32 NULL - */ - UserPrt->Length += sizeof (UINT32); - break; - - - default: - - ACPI_ERROR ((AE_INFO, - "(PRT[%X].Source) Need Ref/String/Integer, found %s", - Index, AcpiUtGetObjectTypeName (ObjDesc))); - return_ACPI_STATUS (AE_BAD_DATA); - } - } - - /* Now align the current length */ - - UserPrt->Length = (UINT32) ACPI_ROUND_UP_TO_64BIT (UserPrt->Length); - - /* 4) Fourth subobject: Dereference the PRT.SourceIndex */ - - ObjDesc = SubObjectList[3]; - if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_INTEGER) - { - UserPrt->SourceIndex = (UINT32) ObjDesc->Integer.Value; - } - else - { - ACPI_ERROR ((AE_INFO, - "(PRT[%X].SourceIndex) Need Integer, found %s", - Index, AcpiUtGetObjectTypeName (ObjDesc))); - return_ACPI_STATUS (AE_BAD_DATA); - } - - /* Point to the next ACPI_OPERAND_OBJECT in the top level package */ - - TopObjectList++; - } - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "OutputBuffer %p Length %X\n", - OutputBuffer->Pointer, (UINT32) OutputBuffer->Length)); - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsCreateAmlResources - * - * PARAMETERS: LinkedListBuffer - Pointer to the resource linked list - * OutputBuffer - Pointer to the user's buffer - * - * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code. - * If the OutputBuffer is too small, the error will be - * AE_BUFFER_OVERFLOW and OutputBuffer->Length will point - * to the size buffer needed. - * - * DESCRIPTION: Takes the linked list of device resources and - * creates a bytestream to be used as input for the - * _SRS control method. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsCreateAmlResources ( - ACPI_RESOURCE *LinkedListBuffer, - ACPI_BUFFER *OutputBuffer) -{ - ACPI_STATUS Status; - ACPI_SIZE AmlSizeNeeded = 0; - - - ACPI_FUNCTION_TRACE (RsCreateAmlResources); - - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "LinkedListBuffer = %p\n", - LinkedListBuffer)); - - /* - * Params already validated, so we don't re-validate here - * - * Pass the LinkedListBuffer into a module that calculates - * the buffer size needed for the byte stream. - */ - Status = AcpiRsGetAmlLength (LinkedListBuffer, - &AmlSizeNeeded); - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "AmlSizeNeeded=%X, %s\n", - (UINT32) AmlSizeNeeded, AcpiFormatException (Status))); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Validate/Allocate/Clear caller buffer */ - - Status = AcpiUtInitializeBuffer (OutputBuffer, AmlSizeNeeded); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Do the conversion */ - - Status = AcpiRsConvertResourcesToAml (LinkedListBuffer, AmlSizeNeeded, - OutputBuffer->Pointer); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "OutputBuffer %p Length %X\n", - OutputBuffer->Pointer, (UINT32) OutputBuffer->Length)); - return_ACPI_STATUS (AE_OK); -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/resources/rsdump.c b/sys/contrib/dev/acpica-unix-20061109/resources/rsdump.c deleted file mode 100644 index 1f90cf7b42..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/resources/rsdump.c +++ /dev/null @@ -1,870 +0,0 @@ -/******************************************************************************* - * - * Module Name: rsdump - Functions to display the resource structures. - * $Revision: 1.61 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __RSDUMP_C__ - -#include "acpi.h" -#include "acresrc.h" - -#define _COMPONENT ACPI_RESOURCES - ACPI_MODULE_NAME ("rsdump") - - -#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) - -/* Local prototypes */ - -static void -AcpiRsOutString ( - char *Title, - char *Value); - -static void -AcpiRsOutInteger8 ( - char *Title, - UINT8 Value); - -static void -AcpiRsOutInteger16 ( - char *Title, - UINT16 Value); - -static void -AcpiRsOutInteger32 ( - char *Title, - UINT32 Value); - -static void -AcpiRsOutInteger64 ( - char *Title, - UINT64 Value); - -static void -AcpiRsOutTitle ( - char *Title); - -static void -AcpiRsDumpByteList ( - UINT16 Length, - UINT8 *Data); - -static void -AcpiRsDumpDwordList ( - UINT8 Length, - UINT32 *Data); - -static void -AcpiRsDumpShortByteList ( - UINT8 Length, - UINT8 *Data); - -static void -AcpiRsDumpResourceSource ( - ACPI_RESOURCE_SOURCE *ResourceSource); - -static void -AcpiRsDumpAddressCommon ( - ACPI_RESOURCE_DATA *Resource); - -static void -AcpiRsDumpDescriptor ( - void *Resource, - ACPI_RSDUMP_INFO *Table); - - -#define ACPI_RSD_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_RESOURCE_DATA,f) -#define ACPI_PRT_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_PCI_ROUTING_TABLE,f) -#define ACPI_RSD_TABLE_SIZE(name) (sizeof(name) / sizeof (ACPI_RSDUMP_INFO)) - - -/******************************************************************************* - * - * Resource Descriptor info tables - * - * Note: The first table entry must be a Title or Literal and must contain - * the table length (number of table entries) - * - ******************************************************************************/ - -ACPI_RSDUMP_INFO AcpiRsDumpIrq[6] = -{ - {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpIrq), "IRQ", NULL}, - {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Irq.Triggering), "Triggering", AcpiGbl_HeDecode}, - {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Irq.Polarity), "Polarity", AcpiGbl_LlDecode}, - {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Irq.Sharable), "Sharing", AcpiGbl_ShrDecode}, - {ACPI_RSD_UINT8 , ACPI_RSD_OFFSET (Irq.InterruptCount), "Interrupt Count", NULL}, - {ACPI_RSD_SHORTLIST,ACPI_RSD_OFFSET (Irq.Interrupts[0]), "Interrupt List", NULL} -}; - -ACPI_RSDUMP_INFO AcpiRsDumpDma[6] = -{ - {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpDma), "DMA", NULL}, - {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Dma.Type), "Speed", AcpiGbl_TypDecode}, - {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Dma.BusMaster), "Mastering", AcpiGbl_BmDecode}, - {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Dma.Transfer), "Transfer Type", AcpiGbl_SizDecode}, - {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (Dma.ChannelCount), "Channel Count", NULL}, - {ACPI_RSD_SHORTLIST,ACPI_RSD_OFFSET (Dma.Channels[0]), "Channel List", NULL} -}; - -ACPI_RSDUMP_INFO AcpiRsDumpStartDpf[3] = -{ - {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpStartDpf), "Start-Dependent-Functions",NULL}, - {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (StartDpf.CompatibilityPriority), "Compatibility Priority", AcpiGbl_ConfigDecode}, - {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (StartDpf.PerformanceRobustness), "Performance/Robustness", AcpiGbl_ConfigDecode} -}; - -ACPI_RSDUMP_INFO AcpiRsDumpEndDpf[1] = -{ - {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpEndDpf), "End-Dependent-Functions", NULL} -}; - -ACPI_RSDUMP_INFO AcpiRsDumpIo[6] = -{ - {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpIo), "I/O", NULL}, - {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Io.IoDecode), "Address Decoding", AcpiGbl_IoDecode}, - {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Io.Minimum), "Address Minimum", NULL}, - {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Io.Maximum), "Address Maximum", NULL}, - {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (Io.Alignment), "Alignment", NULL}, - {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (Io.AddressLength), "Address Length", NULL} -}; - -ACPI_RSDUMP_INFO AcpiRsDumpFixedIo[3] = -{ - {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpFixedIo), "Fixed I/O", NULL}, - {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (FixedIo.Address), "Address", NULL}, - {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (FixedIo.AddressLength), "Address Length", NULL} -}; - -ACPI_RSDUMP_INFO AcpiRsDumpVendor[3] = -{ - {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpVendor), "Vendor Specific", NULL}, - {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Vendor.ByteLength), "Length", NULL}, - {ACPI_RSD_LONGLIST, ACPI_RSD_OFFSET (Vendor.ByteData[0]), "Vendor Data", NULL} -}; - -ACPI_RSDUMP_INFO AcpiRsDumpEndTag[1] = -{ - {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpEndTag), "EndTag", NULL} -}; - -ACPI_RSDUMP_INFO AcpiRsDumpMemory24[6] = -{ - {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpMemory24), "24-Bit Memory Range", NULL}, - {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Memory24.WriteProtect), "Write Protect", AcpiGbl_RwDecode}, - {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Memory24.Minimum), "Address Minimum", NULL}, - {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Memory24.Maximum), "Address Maximum", NULL}, - {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Memory24.Alignment), "Alignment", NULL}, - {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Memory24.AddressLength), "Address Length", NULL} -}; - -ACPI_RSDUMP_INFO AcpiRsDumpMemory32[6] = -{ - {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpMemory32), "32-Bit Memory Range", NULL}, - {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Memory32.WriteProtect), "Write Protect", AcpiGbl_RwDecode}, - {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (Memory32.Minimum), "Address Minimum", NULL}, - {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (Memory32.Maximum), "Address Maximum", NULL}, - {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (Memory32.Alignment), "Alignment", NULL}, - {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (Memory32.AddressLength), "Address Length", NULL} -}; - -ACPI_RSDUMP_INFO AcpiRsDumpFixedMemory32[4] = -{ - {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpFixedMemory32), "32-Bit Fixed Memory Range",NULL}, - {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (FixedMemory32.WriteProtect), "Write Protect", AcpiGbl_RwDecode}, - {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (FixedMemory32.Address), "Address", NULL}, - {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (FixedMemory32.AddressLength), "Address Length", NULL} -}; - -ACPI_RSDUMP_INFO AcpiRsDumpAddress16[8] = -{ - {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpAddress16), "16-Bit WORD Address Space",NULL}, - {ACPI_RSD_ADDRESS, 0, NULL, NULL}, - {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Address16.Granularity), "Granularity", NULL}, - {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Address16.Minimum), "Address Minimum", NULL}, - {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Address16.Maximum), "Address Maximum", NULL}, - {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Address16.TranslationOffset), "Translation Offset", NULL}, - {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Address16.AddressLength), "Address Length", NULL}, - {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET (Address16.ResourceSource), NULL, NULL} -}; - -ACPI_RSDUMP_INFO AcpiRsDumpAddress32[8] = -{ - {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpAddress32), "32-Bit DWORD Address Space", NULL}, - {ACPI_RSD_ADDRESS, 0, NULL, NULL}, - {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (Address32.Granularity), "Granularity", NULL}, - {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (Address32.Minimum), "Address Minimum", NULL}, - {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (Address32.Maximum), "Address Maximum", NULL}, - {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (Address32.TranslationOffset), "Translation Offset", NULL}, - {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (Address32.AddressLength), "Address Length", NULL}, - {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET (Address32.ResourceSource), NULL, NULL} -}; - -ACPI_RSDUMP_INFO AcpiRsDumpAddress64[8] = -{ - {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpAddress64), "64-Bit QWORD Address Space", NULL}, - {ACPI_RSD_ADDRESS, 0, NULL, NULL}, - {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (Address64.Granularity), "Granularity", NULL}, - {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (Address64.Minimum), "Address Minimum", NULL}, - {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (Address64.Maximum), "Address Maximum", NULL}, - {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (Address64.TranslationOffset), "Translation Offset", NULL}, - {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (Address64.AddressLength), "Address Length", NULL}, - {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET (Address64.ResourceSource), NULL, NULL} -}; - -ACPI_RSDUMP_INFO AcpiRsDumpExtAddress64[8] = -{ - {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpExtAddress64), "64-Bit Extended Address Space", NULL}, - {ACPI_RSD_ADDRESS, 0, NULL, NULL}, - {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (ExtAddress64.Granularity), "Granularity", NULL}, - {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (ExtAddress64.Minimum), "Address Minimum", NULL}, - {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (ExtAddress64.Maximum), "Address Maximum", NULL}, - {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (ExtAddress64.TranslationOffset), "Translation Offset", NULL}, - {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (ExtAddress64.AddressLength), "Address Length", NULL}, - {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (ExtAddress64.TypeSpecific), "Type-Specific Attribute", NULL} -}; - -ACPI_RSDUMP_INFO AcpiRsDumpExtIrq[8] = -{ - {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpExtIrq), "Extended IRQ", NULL}, - {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.ProducerConsumer), "Type", AcpiGbl_ConsumeDecode}, - {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Triggering), "Triggering", AcpiGbl_HeDecode}, - {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Polarity), "Polarity", AcpiGbl_LlDecode}, - {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Sharable), "Sharing", AcpiGbl_ShrDecode}, - {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET (ExtendedIrq.ResourceSource), NULL, NULL}, - {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (ExtendedIrq.InterruptCount), "Interrupt Count", NULL}, - {ACPI_RSD_DWORDLIST,ACPI_RSD_OFFSET (ExtendedIrq.Interrupts[0]), "Interrupt List", NULL} -}; - -ACPI_RSDUMP_INFO AcpiRsDumpGenericReg[6] = -{ - {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpGenericReg), "Generic Register", NULL}, - {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (GenericReg.SpaceId), "Space ID", NULL}, - {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (GenericReg.BitWidth), "Bit Width", NULL}, - {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (GenericReg.BitOffset), "Bit Offset", NULL}, - {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (GenericReg.AccessSize), "Access Size", NULL}, - {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (GenericReg.Address), "Address", NULL} -}; - - -/* - * Tables used for common address descriptor flag fields - */ -static ACPI_RSDUMP_INFO AcpiRsDumpGeneralFlags[5] = -{ - {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpGeneralFlags), NULL, NULL}, - {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.ProducerConsumer), "Consumer/Producer", AcpiGbl_ConsumeDecode}, - {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Decode), "Address Decode", AcpiGbl_DecDecode}, - {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.MinAddressFixed), "Min Relocatability", AcpiGbl_MinDecode}, - {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.MaxAddressFixed), "Max Relocatability", AcpiGbl_MaxDecode} -}; - -static ACPI_RSDUMP_INFO AcpiRsDumpMemoryFlags[5] = -{ - {ACPI_RSD_LITERAL, ACPI_RSD_TABLE_SIZE (AcpiRsDumpMemoryFlags), "Resource Type", (void *) "Memory Range"}, - {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Info.Mem.WriteProtect), "Write Protect", AcpiGbl_RwDecode}, - {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Address.Info.Mem.Caching), "Caching", AcpiGbl_MemDecode}, - {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Address.Info.Mem.RangeType), "Range Type", AcpiGbl_MtpDecode}, - {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Info.Mem.Translation), "Translation", AcpiGbl_TtpDecode} -}; - -static ACPI_RSDUMP_INFO AcpiRsDumpIoFlags[4] = -{ - {ACPI_RSD_LITERAL, ACPI_RSD_TABLE_SIZE (AcpiRsDumpIoFlags), "Resource Type", (void *) "I/O Range"}, - {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Address.Info.Io.RangeType), "Range Type", AcpiGbl_RngDecode}, - {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Info.Io.Translation), "Translation", AcpiGbl_TtpDecode}, - {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Info.Io.TranslationType), "Translation Type", AcpiGbl_TrsDecode} -}; - - -/* - * Table used to dump _PRT contents - */ -static ACPI_RSDUMP_INFO AcpiRsDumpPrt[5] = -{ - {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpPrt), NULL, NULL}, - {ACPI_RSD_UINT64, ACPI_PRT_OFFSET (Address), "Address", NULL}, - {ACPI_RSD_UINT32, ACPI_PRT_OFFSET (Pin), "Pin", NULL}, - {ACPI_RSD_STRING, ACPI_PRT_OFFSET (Source[0]), "Source", NULL}, - {ACPI_RSD_UINT32, ACPI_PRT_OFFSET (SourceIndex), "Source Index", NULL} -}; - - -/******************************************************************************* - * - * FUNCTION: AcpiRsDumpDescriptor - * - * PARAMETERS: Resource - * - * RETURN: None - * - * DESCRIPTION: - * - ******************************************************************************/ - -static void -AcpiRsDumpDescriptor ( - void *Resource, - ACPI_RSDUMP_INFO *Table) -{ - UINT8 *Target = NULL; - UINT8 *PreviousTarget; - char *Name; - UINT8 Count; - - - /* First table entry must contain the table length (# of table entries) */ - - Count = Table->Offset; - - while (Count) - { - PreviousTarget = Target; - Target = ACPI_ADD_PTR (UINT8, Resource, Table->Offset); - Name = Table->Name; - - switch (Table->Opcode) - { - case ACPI_RSD_TITLE: - /* - * Optional resource title - */ - if (Table->Name) - { - AcpiOsPrintf ("%s Resource\n", Name); - } - break; - - /* Strings */ - - case ACPI_RSD_LITERAL: - AcpiRsOutString (Name, ACPI_CAST_PTR (char, Table->Pointer)); - break; - - case ACPI_RSD_STRING: - AcpiRsOutString (Name, ACPI_CAST_PTR (char, Target)); - break; - - /* Data items, 8/16/32/64 bit */ - - case ACPI_RSD_UINT8: - AcpiRsOutInteger8 (Name, ACPI_GET8 (Target)); - break; - - case ACPI_RSD_UINT16: - AcpiRsOutInteger16 (Name, ACPI_GET16 (Target)); - break; - - case ACPI_RSD_UINT32: - AcpiRsOutInteger32 (Name, ACPI_GET32 (Target)); - break; - - case ACPI_RSD_UINT64: - AcpiRsOutInteger64 (Name, ACPI_GET64 (Target)); - break; - - /* Flags: 1-bit and 2-bit flags supported */ - - case ACPI_RSD_1BITFLAG: - AcpiRsOutString (Name, ACPI_CAST_PTR (char, - Table->Pointer [*Target & 0x01])); - break; - - case ACPI_RSD_2BITFLAG: - AcpiRsOutString (Name, ACPI_CAST_PTR (char, - Table->Pointer [*Target & 0x03])); - break; - - case ACPI_RSD_SHORTLIST: - /* - * Short byte list (single line output) for DMA and IRQ resources - * Note: The list length is obtained from the previous table entry - */ - if (PreviousTarget) - { - AcpiRsOutTitle (Name); - AcpiRsDumpShortByteList (*PreviousTarget, Target); - } - break; - - case ACPI_RSD_LONGLIST: - /* - * Long byte list for Vendor resource data - * Note: The list length is obtained from the previous table entry - */ - if (PreviousTarget) - { - AcpiRsDumpByteList (ACPI_GET16 (PreviousTarget), Target); - } - break; - - case ACPI_RSD_DWORDLIST: - /* - * Dword list for Extended Interrupt resources - * Note: The list length is obtained from the previous table entry - */ - if (PreviousTarget) - { - AcpiRsDumpDwordList (*PreviousTarget, - ACPI_CAST_PTR (UINT32, Target)); - } - break; - - case ACPI_RSD_ADDRESS: - /* - * Common flags for all Address resources - */ - AcpiRsDumpAddressCommon (ACPI_CAST_PTR (ACPI_RESOURCE_DATA, Target)); - break; - - case ACPI_RSD_SOURCE: - /* - * Optional ResourceSource for Address resources - */ - AcpiRsDumpResourceSource (ACPI_CAST_PTR (ACPI_RESOURCE_SOURCE, Target)); - break; - - default: - AcpiOsPrintf ("**** Invalid table opcode [%X] ****\n", - Table->Opcode); - return; - } - - Table++; - Count--; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsDumpResourceSource - * - * PARAMETERS: ResourceSource - Pointer to a Resource Source struct - * - * RETURN: None - * - * DESCRIPTION: Common routine for dumping the optional ResourceSource and the - * corresponding ResourceSourceIndex. - * - ******************************************************************************/ - -static void -AcpiRsDumpResourceSource ( - ACPI_RESOURCE_SOURCE *ResourceSource) -{ - ACPI_FUNCTION_ENTRY (); - - - if (ResourceSource->Index == 0xFF) - { - return; - } - - AcpiRsOutInteger8 ("Resource Source Index", - ResourceSource->Index); - - AcpiRsOutString ("Resource Source", - ResourceSource->StringPtr ? - ResourceSource->StringPtr : "[Not Specified]"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsDumpAddressCommon - * - * PARAMETERS: Resource - Pointer to an internal resource descriptor - * - * RETURN: None - * - * DESCRIPTION: Dump the fields that are common to all Address resource - * descriptors - * - ******************************************************************************/ - -static void -AcpiRsDumpAddressCommon ( - ACPI_RESOURCE_DATA *Resource) -{ - ACPI_FUNCTION_ENTRY (); - - - /* Decode the type-specific flags */ - - switch (Resource->Address.ResourceType) - { - case ACPI_MEMORY_RANGE: - - AcpiRsDumpDescriptor (Resource, AcpiRsDumpMemoryFlags); - break; - - case ACPI_IO_RANGE: - - AcpiRsDumpDescriptor (Resource, AcpiRsDumpIoFlags); - break; - - case ACPI_BUS_NUMBER_RANGE: - - AcpiRsOutString ("Resource Type", "Bus Number Range"); - break; - - default: - - AcpiRsOutInteger8 ("Resource Type", - (UINT8) Resource->Address.ResourceType); - break; - } - - /* Decode the general flags */ - - AcpiRsDumpDescriptor (Resource, AcpiRsDumpGeneralFlags); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsDumpResourceList - * - * PARAMETERS: ResourceList - Pointer to a resource descriptor list - * - * RETURN: None - * - * DESCRIPTION: Dispatches the structure to the correct dump routine. - * - ******************************************************************************/ - -void -AcpiRsDumpResourceList ( - ACPI_RESOURCE *ResourceList) -{ - UINT32 Count = 0; - UINT32 Type; - - - ACPI_FUNCTION_ENTRY (); - - - if (!(AcpiDbgLevel & ACPI_LV_RESOURCES) || !( _COMPONENT & AcpiDbgLayer)) - { - return; - } - - /* Walk list and dump all resource descriptors (END_TAG terminates) */ - - do - { - AcpiOsPrintf ("\n[%02X] ", Count); - Count++; - - /* Validate Type before dispatch */ - - Type = ResourceList->Type; - if (Type > ACPI_RESOURCE_TYPE_MAX) - { - AcpiOsPrintf ( - "Invalid descriptor type (%X) in resource list\n", - ResourceList->Type); - return; - } - - /* Dump the resource descriptor */ - - AcpiRsDumpDescriptor (&ResourceList->Data, - AcpiGbl_DumpResourceDispatch[Type]); - - /* Point to the next resource structure */ - - ResourceList = ACPI_ADD_PTR (ACPI_RESOURCE, ResourceList, - ResourceList->Length); - - /* Exit when END_TAG descriptor is reached */ - - } while (Type != ACPI_RESOURCE_TYPE_END_TAG); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsDumpIrqList - * - * PARAMETERS: RouteTable - Pointer to the routing table to dump. - * - * RETURN: None - * - * DESCRIPTION: Print IRQ routing table - * - ******************************************************************************/ - -void -AcpiRsDumpIrqList ( - UINT8 *RouteTable) -{ - ACPI_PCI_ROUTING_TABLE *PrtElement; - UINT8 Count; - - - ACPI_FUNCTION_ENTRY (); - - - if (!(AcpiDbgLevel & ACPI_LV_RESOURCES) || !( _COMPONENT & AcpiDbgLayer)) - { - return; - } - - PrtElement = ACPI_CAST_PTR (ACPI_PCI_ROUTING_TABLE, RouteTable); - - /* Dump all table elements, Exit on zero length element */ - - for (Count = 0; PrtElement->Length; Count++) - { - AcpiOsPrintf ("\n[%02X] PCI IRQ Routing Table Package\n", Count); - AcpiRsDumpDescriptor (PrtElement, AcpiRsDumpPrt); - - PrtElement = ACPI_ADD_PTR (ACPI_PCI_ROUTING_TABLE, - PrtElement, PrtElement->Length); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsOut* - * - * PARAMETERS: Title - Name of the resource field - * Value - Value of the resource field - * - * RETURN: None - * - * DESCRIPTION: Miscellaneous helper functions to consistently format the - * output of the resource dump routines - * - ******************************************************************************/ - -static void -AcpiRsOutString ( - char *Title, - char *Value) -{ - AcpiOsPrintf ("%27s : %s", Title, Value); - if (!*Value) - { - AcpiOsPrintf ("[NULL NAMESTRING]"); - } - AcpiOsPrintf ("\n"); -} - -static void -AcpiRsOutInteger8 ( - char *Title, - UINT8 Value) -{ - AcpiOsPrintf ("%27s : %2.2X\n", Title, Value); -} - -static void -AcpiRsOutInteger16 ( - char *Title, - UINT16 Value) -{ - AcpiOsPrintf ("%27s : %4.4X\n", Title, Value); -} - -static void -AcpiRsOutInteger32 ( - char *Title, - UINT32 Value) -{ - AcpiOsPrintf ("%27s : %8.8X\n", Title, Value); -} - -static void -AcpiRsOutInteger64 ( - char *Title, - UINT64 Value) -{ - AcpiOsPrintf ("%27s : %8.8X%8.8X\n", Title, - ACPI_FORMAT_UINT64 (Value)); -} - -static void -AcpiRsOutTitle ( - char *Title) -{ - AcpiOsPrintf ("%27s : ", Title); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsDump*List - * - * PARAMETERS: Length - Number of elements in the list - * Data - Start of the list - * - * RETURN: None - * - * DESCRIPTION: Miscellaneous functions to dump lists of raw data - * - ******************************************************************************/ - -static void -AcpiRsDumpByteList ( - UINT16 Length, - UINT8 *Data) -{ - UINT8 i; - - - for (i = 0; i < Length; i++) - { - AcpiOsPrintf ("%25s%2.2X : %2.2X\n", - "Byte", i, Data[i]); - } -} - -static void -AcpiRsDumpShortByteList ( - UINT8 Length, - UINT8 *Data) -{ - UINT8 i; - - - for (i = 0; i < Length; i++) - { - AcpiOsPrintf ("%X ", Data[i]); - } - AcpiOsPrintf ("\n"); -} - -static void -AcpiRsDumpDwordList ( - UINT8 Length, - UINT32 *Data) -{ - UINT8 i; - - - for (i = 0; i < Length; i++) - { - AcpiOsPrintf ("%25s%2.2X : %8.8X\n", - "Dword", i, Data[i]); - } -} - -#endif - diff --git a/sys/contrib/dev/acpica-unix-20061109/resources/rsinfo.c b/sys/contrib/dev/acpica-unix-20061109/resources/rsinfo.c deleted file mode 100644 index e731c5413c..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/resources/rsinfo.c +++ /dev/null @@ -1,290 +0,0 @@ -/******************************************************************************* - * - * Module Name: rsinfo - Dispatch and Info tables - * $Revision: 1.7 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __RSINFO_C__ - -#include "acpi.h" -#include "acresrc.h" - -#define _COMPONENT ACPI_RESOURCES - ACPI_MODULE_NAME ("rsinfo") - -/* - * Resource dispatch and information tables. Any new resource types (either - * Large or Small) must be reflected in each of these tables, so they are here - * in one place. - * - * The tables for Large descriptors are indexed by bits 6:0 of the AML - * descriptor type byte. The tables for Small descriptors are indexed by - * bits 6:3 of the descriptor byte. The tables for internal resource - * descriptors are indexed by the ACPI_RESOURCE_TYPE field. - */ - - -/* Dispatch table for resource-to-AML (Set Resource) conversion functions */ - -ACPI_RSCONVERT_INFO *AcpiGbl_SetResourceDispatch[] = -{ - AcpiRsSetIrq, /* 0x00, ACPI_RESOURCE_TYPE_IRQ */ - AcpiRsConvertDma, /* 0x01, ACPI_RESOURCE_TYPE_DMA */ - AcpiRsSetStartDpf, /* 0x02, ACPI_RESOURCE_TYPE_START_DEPENDENT */ - AcpiRsConvertEndDpf, /* 0x03, ACPI_RESOURCE_TYPE_END_DEPENDENT */ - AcpiRsConvertIo, /* 0x04, ACPI_RESOURCE_TYPE_IO */ - AcpiRsConvertFixedIo, /* 0x05, ACPI_RESOURCE_TYPE_FIXED_IO */ - AcpiRsSetVendor, /* 0x06, ACPI_RESOURCE_TYPE_VENDOR */ - AcpiRsConvertEndTag, /* 0x07, ACPI_RESOURCE_TYPE_END_TAG */ - AcpiRsConvertMemory24, /* 0x08, ACPI_RESOURCE_TYPE_MEMORY24 */ - AcpiRsConvertMemory32, /* 0x09, ACPI_RESOURCE_TYPE_MEMORY32 */ - AcpiRsConvertFixedMemory32, /* 0x0A, ACPI_RESOURCE_TYPE_FIXED_MEMORY32 */ - AcpiRsConvertAddress16, /* 0x0B, ACPI_RESOURCE_TYPE_ADDRESS16 */ - AcpiRsConvertAddress32, /* 0x0C, ACPI_RESOURCE_TYPE_ADDRESS32 */ - AcpiRsConvertAddress64, /* 0x0D, ACPI_RESOURCE_TYPE_ADDRESS64 */ - AcpiRsConvertExtAddress64, /* 0x0E, ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 */ - AcpiRsConvertExtIrq, /* 0x0F, ACPI_RESOURCE_TYPE_EXTENDED_IRQ */ - AcpiRsConvertGenericReg /* 0x10, ACPI_RESOURCE_TYPE_GENERIC_REGISTER */ -}; - -/* Dispatch tables for AML-to-resource (Get Resource) conversion functions */ - -ACPI_RSCONVERT_INFO *AcpiGbl_GetResourceDispatch[] = -{ - /* Small descriptors */ - - NULL, /* 0x00, Reserved */ - NULL, /* 0x01, Reserved */ - NULL, /* 0x02, Reserved */ - NULL, /* 0x03, Reserved */ - AcpiRsGetIrq, /* 0x04, ACPI_RESOURCE_NAME_IRQ */ - AcpiRsConvertDma, /* 0x05, ACPI_RESOURCE_NAME_DMA */ - AcpiRsGetStartDpf, /* 0x06, ACPI_RESOURCE_NAME_START_DEPENDENT */ - AcpiRsConvertEndDpf, /* 0x07, ACPI_RESOURCE_NAME_END_DEPENDENT */ - AcpiRsConvertIo, /* 0x08, ACPI_RESOURCE_NAME_IO */ - AcpiRsConvertFixedIo, /* 0x09, ACPI_RESOURCE_NAME_FIXED_IO */ - NULL, /* 0x0A, Reserved */ - NULL, /* 0x0B, Reserved */ - NULL, /* 0x0C, Reserved */ - NULL, /* 0x0D, Reserved */ - AcpiRsGetVendorSmall, /* 0x0E, ACPI_RESOURCE_NAME_VENDOR_SMALL */ - AcpiRsConvertEndTag, /* 0x0F, ACPI_RESOURCE_NAME_END_TAG */ - - /* Large descriptors */ - - NULL, /* 0x00, Reserved */ - AcpiRsConvertMemory24, /* 0x01, ACPI_RESOURCE_NAME_MEMORY24 */ - AcpiRsConvertGenericReg, /* 0x02, ACPI_RESOURCE_NAME_GENERIC_REGISTER */ - NULL, /* 0x03, Reserved */ - AcpiRsGetVendorLarge, /* 0x04, ACPI_RESOURCE_NAME_VENDOR_LARGE */ - AcpiRsConvertMemory32, /* 0x05, ACPI_RESOURCE_NAME_MEMORY32 */ - AcpiRsConvertFixedMemory32, /* 0x06, ACPI_RESOURCE_NAME_FIXED_MEMORY32 */ - AcpiRsConvertAddress32, /* 0x07, ACPI_RESOURCE_NAME_ADDRESS32 */ - AcpiRsConvertAddress16, /* 0x08, ACPI_RESOURCE_NAME_ADDRESS16 */ - AcpiRsConvertExtIrq, /* 0x09, ACPI_RESOURCE_NAME_EXTENDED_IRQ */ - AcpiRsConvertAddress64, /* 0x0A, ACPI_RESOURCE_NAME_ADDRESS64 */ - AcpiRsConvertExtAddress64 /* 0x0B, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64 */ -}; - - -#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) - -/* Dispatch table for resource dump functions */ - -ACPI_RSDUMP_INFO *AcpiGbl_DumpResourceDispatch[] = -{ - AcpiRsDumpIrq, /* ACPI_RESOURCE_TYPE_IRQ */ - AcpiRsDumpDma, /* ACPI_RESOURCE_TYPE_DMA */ - AcpiRsDumpStartDpf, /* ACPI_RESOURCE_TYPE_START_DEPENDENT */ - AcpiRsDumpEndDpf, /* ACPI_RESOURCE_TYPE_END_DEPENDENT */ - AcpiRsDumpIo, /* ACPI_RESOURCE_TYPE_IO */ - AcpiRsDumpFixedIo, /* ACPI_RESOURCE_TYPE_FIXED_IO */ - AcpiRsDumpVendor, /* ACPI_RESOURCE_TYPE_VENDOR */ - AcpiRsDumpEndTag, /* ACPI_RESOURCE_TYPE_END_TAG */ - AcpiRsDumpMemory24, /* ACPI_RESOURCE_TYPE_MEMORY24 */ - AcpiRsDumpMemory32, /* ACPI_RESOURCE_TYPE_MEMORY32 */ - AcpiRsDumpFixedMemory32, /* ACPI_RESOURCE_TYPE_FIXED_MEMORY32 */ - AcpiRsDumpAddress16, /* ACPI_RESOURCE_TYPE_ADDRESS16 */ - AcpiRsDumpAddress32, /* ACPI_RESOURCE_TYPE_ADDRESS32 */ - AcpiRsDumpAddress64, /* ACPI_RESOURCE_TYPE_ADDRESS64 */ - AcpiRsDumpExtAddress64, /* ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 */ - AcpiRsDumpExtIrq, /* ACPI_RESOURCE_TYPE_EXTENDED_IRQ */ - AcpiRsDumpGenericReg, /* ACPI_RESOURCE_TYPE_GENERIC_REGISTER */ -}; -#endif - - -/* - * Base sizes for external AML resource descriptors, indexed by internal type. - * Includes size of the descriptor header (1 byte for small descriptors, - * 3 bytes for large descriptors) - */ -const UINT8 AcpiGbl_AmlResourceSizes[] = -{ - sizeof (AML_RESOURCE_IRQ), /* ACPI_RESOURCE_TYPE_IRQ (optional Byte 3 always created) */ - sizeof (AML_RESOURCE_DMA), /* ACPI_RESOURCE_TYPE_DMA */ - sizeof (AML_RESOURCE_START_DEPENDENT), /* ACPI_RESOURCE_TYPE_START_DEPENDENT (optional Byte 1 always created) */ - sizeof (AML_RESOURCE_END_DEPENDENT), /* ACPI_RESOURCE_TYPE_END_DEPENDENT */ - sizeof (AML_RESOURCE_IO), /* ACPI_RESOURCE_TYPE_IO */ - sizeof (AML_RESOURCE_FIXED_IO), /* ACPI_RESOURCE_TYPE_FIXED_IO */ - sizeof (AML_RESOURCE_VENDOR_SMALL), /* ACPI_RESOURCE_TYPE_VENDOR */ - sizeof (AML_RESOURCE_END_TAG), /* ACPI_RESOURCE_TYPE_END_TAG */ - sizeof (AML_RESOURCE_MEMORY24), /* ACPI_RESOURCE_TYPE_MEMORY24 */ - sizeof (AML_RESOURCE_MEMORY32), /* ACPI_RESOURCE_TYPE_MEMORY32 */ - sizeof (AML_RESOURCE_FIXED_MEMORY32), /* ACPI_RESOURCE_TYPE_FIXED_MEMORY32 */ - sizeof (AML_RESOURCE_ADDRESS16), /* ACPI_RESOURCE_TYPE_ADDRESS16 */ - sizeof (AML_RESOURCE_ADDRESS32), /* ACPI_RESOURCE_TYPE_ADDRESS32 */ - sizeof (AML_RESOURCE_ADDRESS64), /* ACPI_RESOURCE_TYPE_ADDRESS64 */ - sizeof (AML_RESOURCE_EXTENDED_ADDRESS64),/*ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 */ - sizeof (AML_RESOURCE_EXTENDED_IRQ), /* ACPI_RESOURCE_TYPE_EXTENDED_IRQ */ - sizeof (AML_RESOURCE_GENERIC_REGISTER) /* ACPI_RESOURCE_TYPE_GENERIC_REGISTER */ -}; - - -const UINT8 AcpiGbl_ResourceStructSizes[] = -{ - /* Small descriptors */ - - 0, - 0, - 0, - 0, - ACPI_RS_SIZE (ACPI_RESOURCE_IRQ), - ACPI_RS_SIZE (ACPI_RESOURCE_DMA), - ACPI_RS_SIZE (ACPI_RESOURCE_START_DEPENDENT), - ACPI_RS_SIZE_MIN, - ACPI_RS_SIZE (ACPI_RESOURCE_IO), - ACPI_RS_SIZE (ACPI_RESOURCE_FIXED_IO), - 0, - 0, - 0, - 0, - ACPI_RS_SIZE (ACPI_RESOURCE_VENDOR), - ACPI_RS_SIZE_MIN, - - /* Large descriptors */ - - 0, - ACPI_RS_SIZE (ACPI_RESOURCE_MEMORY24), - ACPI_RS_SIZE (ACPI_RESOURCE_GENERIC_REGISTER), - 0, - ACPI_RS_SIZE (ACPI_RESOURCE_VENDOR), - ACPI_RS_SIZE (ACPI_RESOURCE_MEMORY32), - ACPI_RS_SIZE (ACPI_RESOURCE_FIXED_MEMORY32), - ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS32), - ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS16), - ACPI_RS_SIZE (ACPI_RESOURCE_EXTENDED_IRQ), - ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS64), - ACPI_RS_SIZE (ACPI_RESOURCE_EXTENDED_ADDRESS64) -}; - diff --git a/sys/contrib/dev/acpica-unix-20061109/resources/rsio.c b/sys/contrib/dev/acpica-unix-20061109/resources/rsio.c deleted file mode 100644 index 8cbc3c06c1..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/resources/rsio.c +++ /dev/null @@ -1,341 +0,0 @@ -/******************************************************************************* - * - * Module Name: rsio - IO and DMA resource descriptors - * $Revision: 1.34 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __RSIO_C__ - -#include "acpi.h" -#include "acresrc.h" - -#define _COMPONENT ACPI_RESOURCES - ACPI_MODULE_NAME ("rsio") - - -/******************************************************************************* - * - * AcpiRsConvertIo - * - ******************************************************************************/ - -ACPI_RSCONVERT_INFO AcpiRsConvertIo[5] = -{ - {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_IO, - ACPI_RS_SIZE (ACPI_RESOURCE_IO), - ACPI_RSC_TABLE_SIZE (AcpiRsConvertIo)}, - - {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_IO, - sizeof (AML_RESOURCE_IO), - 0}, - - /* Decode flag */ - - {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Io.IoDecode), - AML_OFFSET (Io.Flags), - 0}, - /* - * These fields are contiguous in both the source and destination: - * Address Alignment - * Length - * Minimum Base Address - * Maximum Base Address - */ - {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Io.Alignment), - AML_OFFSET (Io.Alignment), - 2}, - - {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.Io.Minimum), - AML_OFFSET (Io.Minimum), - 2} -}; - - -/******************************************************************************* - * - * AcpiRsConvertFixedIo - * - ******************************************************************************/ - -ACPI_RSCONVERT_INFO AcpiRsConvertFixedIo[4] = -{ - {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_FIXED_IO, - ACPI_RS_SIZE (ACPI_RESOURCE_FIXED_IO), - ACPI_RSC_TABLE_SIZE (AcpiRsConvertFixedIo)}, - - {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_FIXED_IO, - sizeof (AML_RESOURCE_FIXED_IO), - 0}, - /* - * These fields are contiguous in both the source and destination: - * Base Address - * Length - */ - {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.FixedIo.AddressLength), - AML_OFFSET (FixedIo.AddressLength), - 1}, - - {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.FixedIo.Address), - AML_OFFSET (FixedIo.Address), - 1} -}; - - -/******************************************************************************* - * - * AcpiRsConvertGenericReg - * - ******************************************************************************/ - -ACPI_RSCONVERT_INFO AcpiRsConvertGenericReg[4] = -{ - {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_GENERIC_REGISTER, - ACPI_RS_SIZE (ACPI_RESOURCE_GENERIC_REGISTER), - ACPI_RSC_TABLE_SIZE (AcpiRsConvertGenericReg)}, - - {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_GENERIC_REGISTER, - sizeof (AML_RESOURCE_GENERIC_REGISTER), - 0}, - /* - * These fields are contiguous in both the source and destination: - * Address Space ID - * Register Bit Width - * Register Bit Offset - * Access Size - */ - {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.GenericReg.SpaceId), - AML_OFFSET (GenericReg.AddressSpaceId), - 4}, - - /* Get the Register Address */ - - {ACPI_RSC_MOVE64, ACPI_RS_OFFSET (Data.GenericReg.Address), - AML_OFFSET (GenericReg.Address), - 1} -}; - - -/******************************************************************************* - * - * AcpiRsConvertEndDpf - * - ******************************************************************************/ - -ACPI_RSCONVERT_INFO AcpiRsConvertEndDpf[2] = -{ - {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_END_DEPENDENT, - ACPI_RS_SIZE_MIN, - ACPI_RSC_TABLE_SIZE (AcpiRsConvertEndDpf)}, - - {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_END_DEPENDENT, - sizeof (AML_RESOURCE_END_DEPENDENT), - 0} -}; - - -/******************************************************************************* - * - * AcpiRsConvertEndTag - * - ******************************************************************************/ - -ACPI_RSCONVERT_INFO AcpiRsConvertEndTag[2] = -{ - {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_END_TAG, - ACPI_RS_SIZE_MIN, - ACPI_RSC_TABLE_SIZE (AcpiRsConvertEndTag)}, - - /* - * Note: The checksum field is set to zero, meaning that the resource - * data is treated as if the checksum operation succeeded. - * (ACPI Spec 1.0b Section 6.4.2.8) - */ - {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_END_TAG, - sizeof (AML_RESOURCE_END_TAG), - 0} -}; - - -/******************************************************************************* - * - * AcpiRsGetStartDpf - * - ******************************************************************************/ - -ACPI_RSCONVERT_INFO AcpiRsGetStartDpf[5] = -{ - {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_START_DEPENDENT, - ACPI_RS_SIZE (ACPI_RESOURCE_START_DEPENDENT), - ACPI_RSC_TABLE_SIZE (AcpiRsGetStartDpf)}, - - /* Defaults for Compatibility and Performance priorities */ - - {ACPI_RSC_SET8, ACPI_RS_OFFSET (Data.StartDpf.CompatibilityPriority), - ACPI_ACCEPTABLE_CONFIGURATION, - 2}, - - /* All done if there is no flag byte present in the descriptor */ - - {ACPI_RSC_EXIT_NE, ACPI_RSC_COMPARE_AML_LENGTH, 0, 1}, - - /* Flag byte is present, get the flags */ - - {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.StartDpf.CompatibilityPriority), - AML_OFFSET (StartDpf.Flags), - 0}, - - {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.StartDpf.PerformanceRobustness), - AML_OFFSET (StartDpf.Flags), - 2} -}; - - -/******************************************************************************* - * - * AcpiRsSetStartDpf - * - ******************************************************************************/ - -ACPI_RSCONVERT_INFO AcpiRsSetStartDpf[6] = -{ - {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_START_DEPENDENT, - sizeof (AML_RESOURCE_START_DEPENDENT), - ACPI_RSC_TABLE_SIZE (AcpiRsSetStartDpf)}, - - /* Set the default flag values */ - - {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.StartDpf.CompatibilityPriority), - AML_OFFSET (StartDpf.Flags), - 0}, - - {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.StartDpf.PerformanceRobustness), - AML_OFFSET (StartDpf.Flags), - 2}, - /* - * All done if flags byte is necessary -- if either priority value - * is not ACPI_ACCEPTABLE_CONFIGURATION - */ - {ACPI_RSC_EXIT_NE, ACPI_RSC_COMPARE_VALUE, - ACPI_RS_OFFSET (Data.StartDpf.CompatibilityPriority), - ACPI_ACCEPTABLE_CONFIGURATION}, - - {ACPI_RSC_EXIT_NE, ACPI_RSC_COMPARE_VALUE, - ACPI_RS_OFFSET (Data.StartDpf.PerformanceRobustness), - ACPI_ACCEPTABLE_CONFIGURATION}, - - /* Flag byte is not necessary */ - - {ACPI_RSC_LENGTH, 0, 0, sizeof (AML_RESOURCE_START_DEPENDENT_NOPRIO)} -}; - - diff --git a/sys/contrib/dev/acpica-unix-20061109/resources/rsirq.c b/sys/contrib/dev/acpica-unix-20061109/resources/rsirq.c deleted file mode 100644 index bfd15936bd..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/resources/rsirq.c +++ /dev/null @@ -1,313 +0,0 @@ -/******************************************************************************* - * - * Module Name: rsirq - IRQ resource descriptors - * $Revision: 1.49 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __RSIRQ_C__ - -#include "acpi.h" -#include "acresrc.h" - -#define _COMPONENT ACPI_RESOURCES - ACPI_MODULE_NAME ("rsirq") - - -/******************************************************************************* - * - * AcpiRsGetIrq - * - ******************************************************************************/ - -ACPI_RSCONVERT_INFO AcpiRsGetIrq[7] = -{ - {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_IRQ, - ACPI_RS_SIZE (ACPI_RESOURCE_IRQ), - ACPI_RSC_TABLE_SIZE (AcpiRsGetIrq)}, - - /* Get the IRQ mask (bytes 1:2) */ - - {ACPI_RSC_BITMASK16,ACPI_RS_OFFSET (Data.Irq.Interrupts[0]), - AML_OFFSET (Irq.IrqMask), - ACPI_RS_OFFSET (Data.Irq.InterruptCount)}, - - /* Set default flags (others are zero) */ - - {ACPI_RSC_SET8, ACPI_RS_OFFSET (Data.Irq.Triggering), - ACPI_EDGE_SENSITIVE, - 1}, - - /* All done if no flag byte present in descriptor */ - - {ACPI_RSC_EXIT_NE, ACPI_RSC_COMPARE_AML_LENGTH, 0, 3}, - - /* Get flags: Triggering[0], Polarity[3], Sharing[4] */ - - {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Triggering), - AML_OFFSET (Irq.Flags), - 0}, - - {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Polarity), - AML_OFFSET (Irq.Flags), - 3}, - - {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Sharable), - AML_OFFSET (Irq.Flags), - 4} -}; - - -/******************************************************************************* - * - * AcpiRsSetIrq - * - ******************************************************************************/ - -ACPI_RSCONVERT_INFO AcpiRsSetIrq[9] = -{ - {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_IRQ, - sizeof (AML_RESOURCE_IRQ), - ACPI_RSC_TABLE_SIZE (AcpiRsSetIrq)}, - - /* Convert interrupt list to 16-bit IRQ bitmask */ - - {ACPI_RSC_BITMASK16,ACPI_RS_OFFSET (Data.Irq.Interrupts[0]), - AML_OFFSET (Irq.IrqMask), - ACPI_RS_OFFSET (Data.Irq.InterruptCount)}, - - /* Set the flags byte by default */ - - {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Triggering), - AML_OFFSET (Irq.Flags), - 0}, - - {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Polarity), - AML_OFFSET (Irq.Flags), - 3}, - - {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Sharable), - AML_OFFSET (Irq.Flags), - 4}, - /* - * Check if the flags byte is necessary. Not needed if the flags are: - * ACPI_EDGE_SENSITIVE, ACPI_ACTIVE_HIGH, ACPI_EXCLUSIVE - */ - {ACPI_RSC_EXIT_NE, ACPI_RSC_COMPARE_VALUE, - ACPI_RS_OFFSET (Data.Irq.Triggering), - ACPI_EDGE_SENSITIVE}, - - {ACPI_RSC_EXIT_NE, ACPI_RSC_COMPARE_VALUE, - ACPI_RS_OFFSET (Data.Irq.Polarity), - ACPI_ACTIVE_HIGH}, - - {ACPI_RSC_EXIT_NE, ACPI_RSC_COMPARE_VALUE, - ACPI_RS_OFFSET (Data.Irq.Sharable), - ACPI_EXCLUSIVE}, - - /* IrqNoFlags() descriptor can be used */ - - {ACPI_RSC_LENGTH, 0, 0, sizeof (AML_RESOURCE_IRQ_NOFLAGS)} -}; - - -/******************************************************************************* - * - * AcpiRsConvertExtIrq - * - ******************************************************************************/ - -ACPI_RSCONVERT_INFO AcpiRsConvertExtIrq[9] = -{ - {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_EXTENDED_IRQ, - ACPI_RS_SIZE (ACPI_RESOURCE_EXTENDED_IRQ), - ACPI_RSC_TABLE_SIZE (AcpiRsConvertExtIrq)}, - - {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_EXTENDED_IRQ, - sizeof (AML_RESOURCE_EXTENDED_IRQ), - 0}, - - /* Flag bits */ - - {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.ExtendedIrq.ProducerConsumer), - AML_OFFSET (ExtendedIrq.Flags), - 0}, - - {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.ExtendedIrq.Triggering), - AML_OFFSET (ExtendedIrq.Flags), - 1}, - - {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.ExtendedIrq.Polarity), - AML_OFFSET (ExtendedIrq.Flags), - 2}, - - {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.ExtendedIrq.Sharable), - AML_OFFSET (ExtendedIrq.Flags), - 3}, - - /* IRQ Table length (Byte4) */ - - {ACPI_RSC_COUNT, ACPI_RS_OFFSET (Data.ExtendedIrq.InterruptCount), - AML_OFFSET (ExtendedIrq.InterruptCount), - sizeof (UINT32)}, - - /* Copy every IRQ in the table, each is 32 bits */ - - {ACPI_RSC_MOVE32, ACPI_RS_OFFSET (Data.ExtendedIrq.Interrupts[0]), - AML_OFFSET (ExtendedIrq.Interrupts[0]), - 0}, - - /* Optional ResourceSource (Index and String) */ - - {ACPI_RSC_SOURCEX, ACPI_RS_OFFSET (Data.ExtendedIrq.ResourceSource), - ACPI_RS_OFFSET (Data.ExtendedIrq.Interrupts[0]), - sizeof (AML_RESOURCE_EXTENDED_IRQ)} -}; - - -/******************************************************************************* - * - * AcpiRsConvertDma - * - ******************************************************************************/ - -ACPI_RSCONVERT_INFO AcpiRsConvertDma[6] = -{ - {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_DMA, - ACPI_RS_SIZE (ACPI_RESOURCE_DMA), - ACPI_RSC_TABLE_SIZE (AcpiRsConvertDma)}, - - {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_DMA, - sizeof (AML_RESOURCE_DMA), - 0}, - - /* Flags: transfer preference, bus mastering, channel speed */ - - {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Dma.Transfer), - AML_OFFSET (Dma.Flags), - 0}, - - {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Dma.BusMaster), - AML_OFFSET (Dma.Flags), - 2}, - - {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Dma.Type), - AML_OFFSET (Dma.Flags), - 5}, - - /* DMA channel mask bits */ - - {ACPI_RSC_BITMASK, ACPI_RS_OFFSET (Data.Dma.Channels[0]), - AML_OFFSET (Dma.DmaChannelMask), - ACPI_RS_OFFSET (Data.Dma.ChannelCount)} -}; - diff --git a/sys/contrib/dev/acpica-unix-20061109/resources/rslist.c b/sys/contrib/dev/acpica-unix-20061109/resources/rslist.c deleted file mode 100644 index d1d60e4630..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/resources/rslist.c +++ /dev/null @@ -1,286 +0,0 @@ -/******************************************************************************* - * - * Module Name: rslist - Linked list utilities - * $Revision: 1.61 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __RSLIST_C__ - -#include "acpi.h" -#include "acresrc.h" - -#define _COMPONENT ACPI_RESOURCES - ACPI_MODULE_NAME ("rslist") - - -/******************************************************************************* - * - * FUNCTION: AcpiRsConvertAmlToResources - * - * PARAMETERS: ACPI_WALK_AML_CALLBACK - * ResourcePtr - Pointer to the buffer that will - * contain the output structures - * - * RETURN: Status - * - * DESCRIPTION: Convert an AML resource to an internal representation of the - * resource that is aligned and easier to access. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsConvertAmlToResources ( - UINT8 *Aml, - UINT32 Length, - UINT32 Offset, - UINT8 ResourceIndex, - void *Context) -{ - ACPI_RESOURCE **ResourcePtr = ACPI_CAST_INDIRECT_PTR ( - ACPI_RESOURCE, Context); - ACPI_RESOURCE *Resource; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (RsConvertAmlToResources); - - - /* - * Check that the input buffer and all subsequent pointers into it - * are aligned on a native word boundary. Most important on IA64 - */ - Resource = *ResourcePtr; - if (ACPI_IS_MISALIGNED (Resource)) - { - ACPI_WARNING ((AE_INFO, - "Misaligned resource pointer %p", Resource)); - } - - /* Convert the AML byte stream resource to a local resource struct */ - - Status = AcpiRsConvertAmlToResource ( - Resource, ACPI_CAST_PTR (AML_RESOURCE, Aml), - AcpiGbl_GetResourceDispatch[ResourceIndex]); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Could not convert AML resource (Type %X)", *Aml)); - return_ACPI_STATUS (Status); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_RESOURCES, - "Type %.2X, AmlLength %.2X InternalLength %.2X\n", - AcpiUtGetResourceType (Aml), Length, - Resource->Length)); - - /* Point to the next structure in the output buffer */ - - *ResourcePtr = ACPI_ADD_PTR (void, Resource, Resource->Length); - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsConvertResourcesToAml - * - * PARAMETERS: Resource - Pointer to the resource linked list - * AmlSizeNeeded - Calculated size of the byte stream - * needed from calling AcpiRsGetAmlLength() - * The size of the OutputBuffer is - * guaranteed to be >= AmlSizeNeeded - * OutputBuffer - Pointer to the buffer that will - * contain the byte stream - * - * RETURN: Status - * - * DESCRIPTION: Takes the resource linked list and parses it, creating a - * byte stream of resources in the caller's output buffer - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsConvertResourcesToAml ( - ACPI_RESOURCE *Resource, - ACPI_SIZE AmlSizeNeeded, - UINT8 *OutputBuffer) -{ - UINT8 *Aml = OutputBuffer; - UINT8 *EndAml = OutputBuffer + AmlSizeNeeded; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (RsConvertResourcesToAml); - - - /* Walk the resource descriptor list, convert each descriptor */ - - while (Aml < EndAml) - { - /* Validate the (internal) Resource Type */ - - if (Resource->Type > ACPI_RESOURCE_TYPE_MAX) - { - ACPI_ERROR ((AE_INFO, - "Invalid descriptor type (%X) in resource list", - Resource->Type)); - return_ACPI_STATUS (AE_BAD_DATA); - } - - /* Perform the conversion */ - - Status = AcpiRsConvertResourceToAml (Resource, - ACPI_CAST_PTR (AML_RESOURCE, Aml), - AcpiGbl_SetResourceDispatch[Resource->Type]); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Could not convert resource (type %X) to AML", - Resource->Type)); - return_ACPI_STATUS (Status); - } - - /* Perform final sanity check on the new AML resource descriptor */ - - Status = AcpiUtValidateResource ( - ACPI_CAST_PTR (AML_RESOURCE, Aml), NULL); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Check for end-of-list, normal exit */ - - if (Resource->Type == ACPI_RESOURCE_TYPE_END_TAG) - { - /* An End Tag indicates the end of the input Resource Template */ - - return_ACPI_STATUS (AE_OK); - } - - /* - * Extract the total length of the new descriptor and set the - * Aml to point to the next (output) resource descriptor - */ - Aml += AcpiUtGetDescriptorLength (Aml); - - /* Point to the next input resource descriptor */ - - Resource = ACPI_ADD_PTR (ACPI_RESOURCE, Resource, Resource->Length); - } - - /* Completed buffer, but did not find an EndTag resource descriptor */ - - return_ACPI_STATUS (AE_AML_NO_RESOURCE_END_TAG); -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/resources/rsmemory.c b/sys/contrib/dev/acpica-unix-20061109/resources/rsmemory.c deleted file mode 100644 index 0e0e3a8dae..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/resources/rsmemory.c +++ /dev/null @@ -1,323 +0,0 @@ -/******************************************************************************* - * - * Module Name: rsmem24 - Memory resource descriptors - * $Revision: 1.33 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __RSMEMORY_C__ - -#include "acpi.h" -#include "acresrc.h" - -#define _COMPONENT ACPI_RESOURCES - ACPI_MODULE_NAME ("rsmemory") - - -/******************************************************************************* - * - * AcpiRsConvertMemory24 - * - ******************************************************************************/ - -ACPI_RSCONVERT_INFO AcpiRsConvertMemory24[4] = -{ - {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_MEMORY24, - ACPI_RS_SIZE (ACPI_RESOURCE_MEMORY24), - ACPI_RSC_TABLE_SIZE (AcpiRsConvertMemory24)}, - - {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_MEMORY24, - sizeof (AML_RESOURCE_MEMORY24), - 0}, - - /* Read/Write bit */ - - {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Memory24.WriteProtect), - AML_OFFSET (Memory24.Flags), - 0}, - /* - * These fields are contiguous in both the source and destination: - * Minimum Base Address - * Maximum Base Address - * Address Base Alignment - * Range Length - */ - {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.Memory24.Minimum), - AML_OFFSET (Memory24.Minimum), - 4} -}; - - -/******************************************************************************* - * - * AcpiRsConvertMemory32 - * - ******************************************************************************/ - -ACPI_RSCONVERT_INFO AcpiRsConvertMemory32[4] = -{ - {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_MEMORY32, - ACPI_RS_SIZE (ACPI_RESOURCE_MEMORY32), - ACPI_RSC_TABLE_SIZE (AcpiRsConvertMemory32)}, - - {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_MEMORY32, - sizeof (AML_RESOURCE_MEMORY32), - 0}, - - /* Read/Write bit */ - - {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Memory32.WriteProtect), - AML_OFFSET (Memory32.Flags), - 0}, - /* - * These fields are contiguous in both the source and destination: - * Minimum Base Address - * Maximum Base Address - * Address Base Alignment - * Range Length - */ - {ACPI_RSC_MOVE32, ACPI_RS_OFFSET (Data.Memory32.Minimum), - AML_OFFSET (Memory32.Minimum), - 4} -}; - - -/******************************************************************************* - * - * AcpiRsConvertFixedMemory32 - * - ******************************************************************************/ - -ACPI_RSCONVERT_INFO AcpiRsConvertFixedMemory32[4] = -{ - {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_FIXED_MEMORY32, - ACPI_RS_SIZE (ACPI_RESOURCE_FIXED_MEMORY32), - ACPI_RSC_TABLE_SIZE (AcpiRsConvertFixedMemory32)}, - - {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_FIXED_MEMORY32, - sizeof (AML_RESOURCE_FIXED_MEMORY32), - 0}, - - /* Read/Write bit */ - - {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.FixedMemory32.WriteProtect), - AML_OFFSET (FixedMemory32.Flags), - 0}, - /* - * These fields are contiguous in both the source and destination: - * Base Address - * Range Length - */ - {ACPI_RSC_MOVE32, ACPI_RS_OFFSET (Data.FixedMemory32.Address), - AML_OFFSET (FixedMemory32.Address), - 2} -}; - - -/******************************************************************************* - * - * AcpiRsGetVendorSmall - * - ******************************************************************************/ - -ACPI_RSCONVERT_INFO AcpiRsGetVendorSmall[3] = -{ - {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_VENDOR, - ACPI_RS_SIZE (ACPI_RESOURCE_VENDOR), - ACPI_RSC_TABLE_SIZE (AcpiRsGetVendorSmall)}, - - /* Length of the vendor data (byte count) */ - - {ACPI_RSC_COUNT16, ACPI_RS_OFFSET (Data.Vendor.ByteLength), - 0, - sizeof (UINT8)}, - - /* Vendor data */ - - {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Vendor.ByteData[0]), - sizeof (AML_RESOURCE_SMALL_HEADER), - 0} -}; - - -/******************************************************************************* - * - * AcpiRsGetVendorLarge - * - ******************************************************************************/ - -ACPI_RSCONVERT_INFO AcpiRsGetVendorLarge[3] = -{ - {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_VENDOR, - ACPI_RS_SIZE (ACPI_RESOURCE_VENDOR), - ACPI_RSC_TABLE_SIZE (AcpiRsGetVendorLarge)}, - - /* Length of the vendor data (byte count) */ - - {ACPI_RSC_COUNT16, ACPI_RS_OFFSET (Data.Vendor.ByteLength), - 0, - sizeof (UINT8)}, - - /* Vendor data */ - - {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Vendor.ByteData[0]), - sizeof (AML_RESOURCE_LARGE_HEADER), - 0} -}; - - -/******************************************************************************* - * - * AcpiRsSetVendor - * - ******************************************************************************/ - -ACPI_RSCONVERT_INFO AcpiRsSetVendor[7] = -{ - /* Default is a small vendor descriptor */ - - {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_VENDOR_SMALL, - sizeof (AML_RESOURCE_SMALL_HEADER), - ACPI_RSC_TABLE_SIZE (AcpiRsSetVendor)}, - - /* Get the length and copy the data */ - - {ACPI_RSC_COUNT16, ACPI_RS_OFFSET (Data.Vendor.ByteLength), - 0, - 0}, - - {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Vendor.ByteData[0]), - sizeof (AML_RESOURCE_SMALL_HEADER), - 0}, - - /* - * All done if the Vendor byte length is 7 or less, meaning that it will - * fit within a small descriptor - */ - {ACPI_RSC_EXIT_LE, 0, 0, 7}, - - /* Must create a large vendor descriptor */ - - {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_VENDOR_LARGE, - sizeof (AML_RESOURCE_LARGE_HEADER), - 0}, - - {ACPI_RSC_COUNT16, ACPI_RS_OFFSET (Data.Vendor.ByteLength), - 0, - 0}, - - {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Vendor.ByteData[0]), - sizeof (AML_RESOURCE_LARGE_HEADER), - 0} -}; - - diff --git a/sys/contrib/dev/acpica-unix-20061109/resources/rsmisc.c b/sys/contrib/dev/acpica-unix-20061109/resources/rsmisc.c deleted file mode 100644 index e7da574321..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/resources/rsmisc.c +++ /dev/null @@ -1,671 +0,0 @@ -/******************************************************************************* - * - * Module Name: rsmisc - Miscellaneous resource descriptors - * $Revision: 1.45 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __RSMISC_C__ - -#include "acpi.h" -#include "acresrc.h" - -#define _COMPONENT ACPI_RESOURCES - ACPI_MODULE_NAME ("rsmisc") - - -#define INIT_RESOURCE_TYPE(i) i->ResourceOffset -#define INIT_RESOURCE_LENGTH(i) i->AmlOffset -#define INIT_TABLE_LENGTH(i) i->Value - -#define COMPARE_OPCODE(i) i->ResourceOffset -#define COMPARE_TARGET(i) i->AmlOffset -#define COMPARE_VALUE(i) i->Value - - -/******************************************************************************* - * - * FUNCTION: AcpiRsConvertAmlToResource - * - * PARAMETERS: Resource - Pointer to the resource descriptor - * Aml - Where the AML descriptor is returned - * Info - Pointer to appropriate conversion table - * - * RETURN: Status - * - * DESCRIPTION: Convert an external AML resource descriptor to the corresponding - * internal resource descriptor - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsConvertAmlToResource ( - ACPI_RESOURCE *Resource, - AML_RESOURCE *Aml, - ACPI_RSCONVERT_INFO *Info) -{ - ACPI_RS_LENGTH AmlResourceLength; - void *Source; - void *Destination; - char *Target; - UINT8 Count; - UINT8 FlagsMode = FALSE; - UINT16 ItemCount = 0; - UINT16 Temp16 = 0; - - - ACPI_FUNCTION_TRACE (RsConvertAmlToResource); - - - if (((ACPI_NATIVE_UINT) Resource) & 0x3) - { - /* Each internal resource struct is expected to be 32-bit aligned */ - - ACPI_WARNING ((AE_INFO, - "Misaligned resource pointer (get): %p Type %2.2X Len %X", - Resource, Resource->Type, Resource->Length)); - } - - /* Extract the resource Length field (does not include header length) */ - - AmlResourceLength = AcpiUtGetResourceLength (Aml); - - /* - * First table entry must be ACPI_RSC_INITxxx and must contain the - * table length (# of table entries) - */ - Count = INIT_TABLE_LENGTH (Info); - - while (Count) - { - /* - * Source is the external AML byte stream buffer, - * destination is the internal resource descriptor - */ - Source = ACPI_ADD_PTR (void, Aml, Info->AmlOffset); - Destination = ACPI_ADD_PTR (void, Resource, Info->ResourceOffset); - - switch (Info->Opcode) - { - case ACPI_RSC_INITGET: - /* - * Get the resource type and the initial (minimum) length - */ - ACPI_MEMSET (Resource, 0, INIT_RESOURCE_LENGTH (Info)); - Resource->Type = INIT_RESOURCE_TYPE (Info); - Resource->Length = INIT_RESOURCE_LENGTH (Info); - break; - - - case ACPI_RSC_INITSET: - break; - - - case ACPI_RSC_FLAGINIT: - - FlagsMode = TRUE; - break; - - - case ACPI_RSC_1BITFLAG: - /* - * Mask and shift the flag bit - */ - ACPI_SET8 (Destination) = (UINT8) - ((ACPI_GET8 (Source) >> Info->Value) & 0x01); - break; - - - case ACPI_RSC_2BITFLAG: - /* - * Mask and shift the flag bits - */ - ACPI_SET8 (Destination) = (UINT8) - ((ACPI_GET8 (Source) >> Info->Value) & 0x03); - break; - - - case ACPI_RSC_COUNT: - - ItemCount = ACPI_GET8 (Source); - ACPI_SET8 (Destination) = (UINT8) ItemCount; - - Resource->Length = Resource->Length + - (Info->Value * (ItemCount - 1)); - break; - - - case ACPI_RSC_COUNT16: - - ItemCount = AmlResourceLength; - ACPI_SET16 (Destination) = ItemCount; - - Resource->Length = Resource->Length + - (Info->Value * (ItemCount - 1)); - break; - - - case ACPI_RSC_LENGTH: - - Resource->Length = Resource->Length + Info->Value; - break; - - - case ACPI_RSC_MOVE8: - case ACPI_RSC_MOVE16: - case ACPI_RSC_MOVE32: - case ACPI_RSC_MOVE64: - /* - * Raw data move. Use the Info value field unless ItemCount has - * been previously initialized via a COUNT opcode - */ - if (Info->Value) - { - ItemCount = Info->Value; - } - AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode); - break; - - - case ACPI_RSC_SET8: - - ACPI_MEMSET (Destination, Info->AmlOffset, Info->Value); - break; - - - case ACPI_RSC_DATA8: - - Target = ACPI_ADD_PTR (char, Resource, Info->Value); - ACPI_MEMCPY (Destination, Source, ACPI_GET16 (Target)); - break; - - - case ACPI_RSC_ADDRESS: - /* - * Common handler for address descriptor flags - */ - if (!AcpiRsGetAddressCommon (Resource, Aml)) - { - return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE); - } - break; - - - case ACPI_RSC_SOURCE: - /* - * Optional ResourceSource (Index and String) - */ - Resource->Length += - AcpiRsGetResourceSource (AmlResourceLength, Info->Value, - Destination, Aml, NULL); - break; - - - case ACPI_RSC_SOURCEX: - /* - * Optional ResourceSource (Index and String). This is the more - * complicated case used by the Interrupt() macro - */ - Target = ACPI_ADD_PTR (char, Resource, Info->AmlOffset + (ItemCount * 4)); - - Resource->Length += - AcpiRsGetResourceSource (AmlResourceLength, - (ACPI_RS_LENGTH) (((ItemCount - 1) * sizeof (UINT32)) + Info->Value), - Destination, Aml, Target); - break; - - - case ACPI_RSC_BITMASK: - /* - * 8-bit encoded bitmask (DMA macro) - */ - ItemCount = AcpiRsDecodeBitmask (ACPI_GET8 (Source), Destination); - if (ItemCount) - { - Resource->Length += (ItemCount - 1); - } - - Target = ACPI_ADD_PTR (char, Resource, Info->Value); - ACPI_SET8 (Target) = (UINT8) ItemCount; - break; - - - case ACPI_RSC_BITMASK16: - /* - * 16-bit encoded bitmask (IRQ macro) - */ - ACPI_MOVE_16_TO_16 (&Temp16, Source); - - ItemCount = AcpiRsDecodeBitmask (Temp16, Destination); - if (ItemCount) - { - Resource->Length += (ItemCount - 1); - } - - Target = ACPI_ADD_PTR (char, Resource, Info->Value); - ACPI_SET8 (Target) = (UINT8) ItemCount; - break; - - - case ACPI_RSC_EXIT_NE: - /* - * Control - Exit conversion if not equal - */ - switch (Info->ResourceOffset) - { - case ACPI_RSC_COMPARE_AML_LENGTH: - if (AmlResourceLength != Info->Value) - { - goto Exit; - } - break; - - case ACPI_RSC_COMPARE_VALUE: - if (ACPI_GET8 (Source) != Info->Value) - { - goto Exit; - } - break; - - default: - - ACPI_ERROR ((AE_INFO, "Invalid conversion sub-opcode")); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - break; - - - default: - - ACPI_ERROR ((AE_INFO, "Invalid conversion opcode")); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - Count--; - Info++; - } - -Exit: - if (!FlagsMode) - { - /* Round the resource struct length up to the next boundary (32 or 64) */ - - Resource->Length = (UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (Resource->Length); - } - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsConvertResourceToAml - * - * PARAMETERS: Resource - Pointer to the resource descriptor - * Aml - Where the AML descriptor is returned - * Info - Pointer to appropriate conversion table - * - * RETURN: Status - * - * DESCRIPTION: Convert an internal resource descriptor to the corresponding - * external AML resource descriptor. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsConvertResourceToAml ( - ACPI_RESOURCE *Resource, - AML_RESOURCE *Aml, - ACPI_RSCONVERT_INFO *Info) -{ - void *Source = NULL; - void *Destination; - ACPI_RSDESC_SIZE AmlLength = 0; - UINT8 Count; - UINT16 Temp16 = 0; - UINT16 ItemCount = 0; - - - ACPI_FUNCTION_TRACE (RsConvertResourceToAml); - - - /* - * First table entry must be ACPI_RSC_INITxxx and must contain the - * table length (# of table entries) - */ - Count = INIT_TABLE_LENGTH (Info); - - while (Count) - { - /* - * Source is the internal resource descriptor, - * destination is the external AML byte stream buffer - */ - Source = ACPI_ADD_PTR (void, Resource, Info->ResourceOffset); - Destination = ACPI_ADD_PTR (void, Aml, Info->AmlOffset); - - switch (Info->Opcode) - { - case ACPI_RSC_INITSET: - - ACPI_MEMSET (Aml, 0, INIT_RESOURCE_LENGTH (Info)); - AmlLength = INIT_RESOURCE_LENGTH (Info); - AcpiRsSetResourceHeader (INIT_RESOURCE_TYPE (Info), AmlLength, Aml); - break; - - - case ACPI_RSC_INITGET: - break; - - - case ACPI_RSC_FLAGINIT: - /* - * Clear the flag byte - */ - ACPI_SET8 (Destination) = 0; - break; - - - case ACPI_RSC_1BITFLAG: - /* - * Mask and shift the flag bit - */ - ACPI_SET8 (Destination) |= (UINT8) - ((ACPI_GET8 (Source) & 0x01) << Info->Value); - break; - - - case ACPI_RSC_2BITFLAG: - /* - * Mask and shift the flag bits - */ - ACPI_SET8 (Destination) |= (UINT8) - ((ACPI_GET8 (Source) & 0x03) << Info->Value); - break; - - - case ACPI_RSC_COUNT: - - ItemCount = ACPI_GET8 (Source); - ACPI_SET8 (Destination) = (UINT8) ItemCount; - - AmlLength = (UINT16) (AmlLength + (Info->Value * (ItemCount - 1))); - break; - - - case ACPI_RSC_COUNT16: - - ItemCount = ACPI_GET16 (Source); - AmlLength = (UINT16) (AmlLength + ItemCount); - AcpiRsSetResourceLength (AmlLength, Aml); - break; - - - case ACPI_RSC_LENGTH: - - AcpiRsSetResourceLength (Info->Value, Aml); - break; - - - case ACPI_RSC_MOVE8: - case ACPI_RSC_MOVE16: - case ACPI_RSC_MOVE32: - case ACPI_RSC_MOVE64: - - if (Info->Value) - { - ItemCount = Info->Value; - } - AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode); - break; - - - case ACPI_RSC_ADDRESS: - - /* Set the Resource Type, General Flags, and Type-Specific Flags */ - - AcpiRsSetAddressCommon (Aml, Resource); - break; - - - case ACPI_RSC_SOURCEX: - /* - * Optional ResourceSource (Index and String) - */ - AmlLength = AcpiRsSetResourceSource ( - Aml, (ACPI_RS_LENGTH) AmlLength, Source); - AcpiRsSetResourceLength (AmlLength, Aml); - break; - - - case ACPI_RSC_SOURCE: - /* - * Optional ResourceSource (Index and String). This is the more - * complicated case used by the Interrupt() macro - */ - AmlLength = AcpiRsSetResourceSource (Aml, Info->Value, Source); - AcpiRsSetResourceLength (AmlLength, Aml); - break; - - - case ACPI_RSC_BITMASK: - /* - * 8-bit encoded bitmask (DMA macro) - */ - ACPI_SET8 (Destination) = (UINT8) - AcpiRsEncodeBitmask (Source, - *ACPI_ADD_PTR (UINT8, Resource, Info->Value)); - break; - - - case ACPI_RSC_BITMASK16: - /* - * 16-bit encoded bitmask (IRQ macro) - */ - Temp16 = AcpiRsEncodeBitmask (Source, - *ACPI_ADD_PTR (UINT8, Resource, Info->Value)); - ACPI_MOVE_16_TO_16 (Destination, &Temp16); - break; - - - case ACPI_RSC_EXIT_LE: - /* - * Control - Exit conversion if less than or equal - */ - if (ItemCount <= Info->Value) - { - goto Exit; - } - break; - - - case ACPI_RSC_EXIT_NE: - /* - * Control - Exit conversion if not equal - */ - switch (COMPARE_OPCODE (Info)) - { - case ACPI_RSC_COMPARE_VALUE: - - if (*ACPI_ADD_PTR (UINT8, Resource, - COMPARE_TARGET (Info)) != COMPARE_VALUE (Info)) - { - goto Exit; - } - break; - - default: - - ACPI_ERROR ((AE_INFO, "Invalid conversion sub-opcode")); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - break; - - - default: - - ACPI_ERROR ((AE_INFO, "Invalid conversion opcode")); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - Count--; - Info++; - } - -Exit: - return_ACPI_STATUS (AE_OK); -} - - -#if 0 -/* Previous resource validations */ - - if (Aml->ExtAddress64.RevisionID != AML_RESOURCE_EXTENDED_ADDRESS_REVISION) - { - return_ACPI_STATUS (AE_SUPPORT); - } - - if (Resource->Data.StartDpf.PerformanceRobustness >= 3) - { - return_ACPI_STATUS (AE_AML_BAD_RESOURCE_VALUE); - } - - if (((Aml->Irq.Flags & 0x09) == 0x00) || - ((Aml->Irq.Flags & 0x09) == 0x09)) - { - /* - * Only [ActiveHigh, EdgeSensitive] or [ActiveLow, LevelSensitive] - * polarity/trigger interrupts are allowed (ACPI spec, section - * "IRQ Format"), so 0x00 and 0x09 are illegal. - */ - ACPI_ERROR ((AE_INFO, - "Invalid interrupt polarity/trigger in resource list, %X", - Aml->Irq.Flags)); - return_ACPI_STATUS (AE_BAD_DATA); - } - - Resource->Data.ExtendedIrq.InterruptCount = Temp8; - if (Temp8 < 1) - { - /* Must have at least one IRQ */ - - return_ACPI_STATUS (AE_AML_BAD_RESOURCE_LENGTH); - } - - if (Resource->Data.Dma.Transfer == 0x03) - { - ACPI_ERROR ((AE_INFO, - "Invalid DMA.Transfer preference (3)")); - return_ACPI_STATUS (AE_BAD_DATA); - } -#endif - - diff --git a/sys/contrib/dev/acpica-unix-20061109/resources/rsutils.c b/sys/contrib/dev/acpica-unix-20061109/resources/rsutils.c deleted file mode 100644 index f17c68b64f..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/resources/rsutils.c +++ /dev/null @@ -1,875 +0,0 @@ -/******************************************************************************* - * - * Module Name: rsutils - Utilities for the resource manager - * $Revision: 1.66 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __RSUTILS_C__ - -#include "acpi.h" -#include "acnamesp.h" -#include "acresrc.h" - - -#define _COMPONENT ACPI_RESOURCES - ACPI_MODULE_NAME ("rsutils") - - -/******************************************************************************* - * - * FUNCTION: AcpiRsDecodeBitmask - * - * PARAMETERS: Mask - Bitmask to decode - * List - Where the converted list is returned - * - * RETURN: Count of bits set (length of list) - * - * DESCRIPTION: Convert a bit mask into a list of values - * - ******************************************************************************/ - -UINT8 -AcpiRsDecodeBitmask ( - UINT16 Mask, - UINT8 *List) -{ - ACPI_NATIVE_UINT i; - UINT8 BitCount; - - - ACPI_FUNCTION_ENTRY (); - - - /* Decode the mask bits */ - - for (i = 0, BitCount = 0; Mask; i++) - { - if (Mask & 0x0001) - { - List[BitCount] = (UINT8) i; - BitCount++; - } - - Mask >>= 1; - } - - return (BitCount); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsEncodeBitmask - * - * PARAMETERS: List - List of values to encode - * Count - Length of list - * - * RETURN: Encoded bitmask - * - * DESCRIPTION: Convert a list of values to an encoded bitmask - * - ******************************************************************************/ - -UINT16 -AcpiRsEncodeBitmask ( - UINT8 *List, - UINT8 Count) -{ - ACPI_NATIVE_UINT i; - UINT16 Mask; - - - ACPI_FUNCTION_ENTRY (); - - - /* Encode the list into a single bitmask */ - - for (i = 0, Mask = 0; i < Count; i++) - { - Mask |= (0x0001 << List[i]); - } - - return (Mask); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsMoveData - * - * PARAMETERS: Destination - Pointer to the destination descriptor - * Source - Pointer to the source descriptor - * ItemCount - How many items to move - * MoveType - Byte width - * - * RETURN: None - * - * DESCRIPTION: Move multiple data items from one descriptor to another. Handles - * alignment issues and endian issues if necessary, as configured - * via the ACPI_MOVE_* macros. (This is why a memcpy is not used) - * - ******************************************************************************/ - -void -AcpiRsMoveData ( - void *Destination, - void *Source, - UINT16 ItemCount, - UINT8 MoveType) -{ - ACPI_NATIVE_UINT i; - - - ACPI_FUNCTION_ENTRY (); - - - /* One move per item */ - - for (i = 0; i < ItemCount; i++) - { - switch (MoveType) - { - /* - * For the 8-bit case, we can perform the move all at once - * since there are no alignment or endian issues - */ - case ACPI_RSC_MOVE8: - ACPI_MEMCPY (Destination, Source, ItemCount); - return; - - /* - * 16-, 32-, and 64-bit cases must use the move macros that perform - * endian conversion and/or accomodate hardware that cannot perform - * misaligned memory transfers - */ - case ACPI_RSC_MOVE16: - ACPI_MOVE_16_TO_16 (&ACPI_CAST_PTR (UINT16, Destination)[i], - &ACPI_CAST_PTR (UINT16, Source)[i]); - break; - - case ACPI_RSC_MOVE32: - ACPI_MOVE_32_TO_32 (&ACPI_CAST_PTR (UINT32, Destination)[i], - &ACPI_CAST_PTR (UINT32, Source)[i]); - break; - - case ACPI_RSC_MOVE64: - ACPI_MOVE_64_TO_64 (&ACPI_CAST_PTR (UINT64, Destination)[i], - &ACPI_CAST_PTR (UINT64, Source)[i]); - break; - - default: - return; - } - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsSetResourceLength - * - * PARAMETERS: TotalLength - Length of the AML descriptor, including - * the header and length fields. - * Aml - Pointer to the raw AML descriptor - * - * RETURN: None - * - * DESCRIPTION: Set the ResourceLength field of an AML - * resource descriptor, both Large and Small descriptors are - * supported automatically. Note: Descriptor Type field must - * be valid. - * - ******************************************************************************/ - -void -AcpiRsSetResourceLength ( - ACPI_RSDESC_SIZE TotalLength, - AML_RESOURCE *Aml) -{ - ACPI_RS_LENGTH ResourceLength; - - - ACPI_FUNCTION_ENTRY (); - - - /* Length is the total descriptor length minus the header length */ - - ResourceLength = (ACPI_RS_LENGTH) - (TotalLength - AcpiUtGetResourceHeaderLength (Aml)); - - /* Length is stored differently for large and small descriptors */ - - if (Aml->SmallHeader.DescriptorType & ACPI_RESOURCE_NAME_LARGE) - { - /* Large descriptor -- bytes 1-2 contain the 16-bit length */ - - ACPI_MOVE_16_TO_16 (&Aml->LargeHeader.ResourceLength, &ResourceLength); - } - else - { - /* Small descriptor -- bits 2:0 of byte 0 contain the length */ - - Aml->SmallHeader.DescriptorType = (UINT8) - - /* Clear any existing length, preserving descriptor type bits */ - - ((Aml->SmallHeader.DescriptorType & ~ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK) - - | ResourceLength); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsSetResourceHeader - * - * PARAMETERS: DescriptorType - Byte to be inserted as the type - * TotalLength - Length of the AML descriptor, including - * the header and length fields. - * Aml - Pointer to the raw AML descriptor - * - * RETURN: None - * - * DESCRIPTION: Set the DescriptorType and ResourceLength fields of an AML - * resource descriptor, both Large and Small descriptors are - * supported automatically - * - ******************************************************************************/ - -void -AcpiRsSetResourceHeader ( - UINT8 DescriptorType, - ACPI_RSDESC_SIZE TotalLength, - AML_RESOURCE *Aml) -{ - ACPI_FUNCTION_ENTRY (); - - - /* Set the Resource Type */ - - Aml->SmallHeader.DescriptorType = DescriptorType; - - /* Set the Resource Length */ - - AcpiRsSetResourceLength (TotalLength, Aml); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsStrcpy - * - * PARAMETERS: Destination - Pointer to the destination string - * Source - Pointer to the source string - * - * RETURN: String length, including NULL terminator - * - * DESCRIPTION: Local string copy that returns the string length, saving a - * strcpy followed by a strlen. - * - ******************************************************************************/ - -static UINT16 -AcpiRsStrcpy ( - char *Destination, - char *Source) -{ - UINT16 i; - - - ACPI_FUNCTION_ENTRY (); - - - for (i = 0; Source[i]; i++) - { - Destination[i] = Source[i]; - } - - Destination[i] = 0; - - /* Return string length including the NULL terminator */ - - return ((UINT16) (i + 1)); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsGetResourceSource - * - * PARAMETERS: ResourceLength - Length field of the descriptor - * MinimumLength - Minimum length of the descriptor (minus - * any optional fields) - * ResourceSource - Where the ResourceSource is returned - * Aml - Pointer to the raw AML descriptor - * StringPtr - (optional) where to store the actual - * ResourceSource string - * - * RETURN: Length of the string plus NULL terminator, rounded up to native - * word boundary - * - * DESCRIPTION: Copy the optional ResourceSource data from a raw AML descriptor - * to an internal resource descriptor - * - ******************************************************************************/ - -ACPI_RS_LENGTH -AcpiRsGetResourceSource ( - ACPI_RS_LENGTH ResourceLength, - ACPI_RS_LENGTH MinimumLength, - ACPI_RESOURCE_SOURCE *ResourceSource, - AML_RESOURCE *Aml, - char *StringPtr) -{ - ACPI_RSDESC_SIZE TotalLength; - UINT8 *AmlResourceSource; - - - ACPI_FUNCTION_ENTRY (); - - - TotalLength = ResourceLength + sizeof (AML_RESOURCE_LARGE_HEADER); - AmlResourceSource = ACPI_ADD_PTR (UINT8, Aml, MinimumLength); - - /* - * ResourceSource is present if the length of the descriptor is longer than - * the minimum length. - * - * Note: Some resource descriptors will have an additional null, so - * we add 1 to the minimum length. - */ - if (TotalLength > (ACPI_RSDESC_SIZE) (MinimumLength + 1)) - { - /* Get the ResourceSourceIndex */ - - ResourceSource->Index = AmlResourceSource[0]; - - ResourceSource->StringPtr = StringPtr; - if (!StringPtr) - { - /* - * String destination pointer is not specified; Set the String - * pointer to the end of the current ResourceSource structure. - */ - ResourceSource->StringPtr = ACPI_ADD_PTR (char, ResourceSource, - sizeof (ACPI_RESOURCE_SOURCE)); - } - - /* - * In order for the Resource length to be a multiple of the native - * word, calculate the length of the string (+1 for NULL terminator) - * and expand to the next word multiple. - * - * Zero the entire area of the buffer. - */ - TotalLength = (UINT32) ACPI_STRLEN ( - ACPI_CAST_PTR (char, &AmlResourceSource[1])) + 1; - TotalLength = (UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (TotalLength); - - ACPI_MEMSET (ResourceSource->StringPtr, 0, TotalLength); - - /* Copy the ResourceSource string to the destination */ - - ResourceSource->StringLength = AcpiRsStrcpy (ResourceSource->StringPtr, - ACPI_CAST_PTR (char, &AmlResourceSource[1])); - - return ((ACPI_RS_LENGTH) TotalLength); - } - - /* ResourceSource is not present */ - - ResourceSource->Index = 0; - ResourceSource->StringLength = 0; - ResourceSource->StringPtr = NULL; - return (0); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsSetResourceSource - * - * PARAMETERS: Aml - Pointer to the raw AML descriptor - * MinimumLength - Minimum length of the descriptor (minus - * any optional fields) - * ResourceSource - Internal ResourceSource - - * - * RETURN: Total length of the AML descriptor - * - * DESCRIPTION: Convert an optional ResourceSource from internal format to a - * raw AML resource descriptor - * - ******************************************************************************/ - -ACPI_RSDESC_SIZE -AcpiRsSetResourceSource ( - AML_RESOURCE *Aml, - ACPI_RS_LENGTH MinimumLength, - ACPI_RESOURCE_SOURCE *ResourceSource) -{ - UINT8 *AmlResourceSource; - ACPI_RSDESC_SIZE DescriptorLength; - - - ACPI_FUNCTION_ENTRY (); - - - DescriptorLength = MinimumLength; - - /* Non-zero string length indicates presence of a ResourceSource */ - - if (ResourceSource->StringLength) - { - /* Point to the end of the AML descriptor */ - - AmlResourceSource = ACPI_ADD_PTR (UINT8, Aml, MinimumLength); - - /* Copy the ResourceSourceIndex */ - - AmlResourceSource[0] = (UINT8) ResourceSource->Index; - - /* Copy the ResourceSource string */ - - ACPI_STRCPY (ACPI_CAST_PTR (char, &AmlResourceSource[1]), - ResourceSource->StringPtr); - - /* - * Add the length of the string (+ 1 for null terminator) to the - * final descriptor length - */ - DescriptorLength += ((ACPI_RSDESC_SIZE) ResourceSource->StringLength + 1); - } - - /* Return the new total length of the AML descriptor */ - - return (DescriptorLength); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsGetPrtMethodData - * - * PARAMETERS: Node - Device node - * RetBuffer - Pointer to a buffer structure for the - * results - * - * RETURN: Status - * - * DESCRIPTION: This function is called to get the _PRT value of an object - * contained in an object specified by the handle passed in - * - * If the function fails an appropriate status will be returned - * and the contents of the callers buffer is undefined. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsGetPrtMethodData ( - ACPI_NAMESPACE_NODE *Node, - ACPI_BUFFER *RetBuffer) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (RsGetPrtMethodData); - - - /* Parameters guaranteed valid by caller */ - - /* Execute the method, no parameters */ - - Status = AcpiUtEvaluateObject (Node, METHOD_NAME__PRT, - ACPI_BTYPE_PACKAGE, &ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Create a resource linked list from the byte stream buffer that comes - * back from the _CRS method execution. - */ - Status = AcpiRsCreatePciRoutingTable (ObjDesc, RetBuffer); - - /* On exit, we must delete the object returned by EvaluateObject */ - - AcpiUtRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsGetCrsMethodData - * - * PARAMETERS: Node - Device node - * RetBuffer - Pointer to a buffer structure for the - * results - * - * RETURN: Status - * - * DESCRIPTION: This function is called to get the _CRS value of an object - * contained in an object specified by the handle passed in - * - * If the function fails an appropriate status will be returned - * and the contents of the callers buffer is undefined. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsGetCrsMethodData ( - ACPI_NAMESPACE_NODE *Node, - ACPI_BUFFER *RetBuffer) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (RsGetCrsMethodData); - - - /* Parameters guaranteed valid by caller */ - - /* Execute the method, no parameters */ - - Status = AcpiUtEvaluateObject (Node, METHOD_NAME__CRS, - ACPI_BTYPE_BUFFER, &ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Make the call to create a resource linked list from the - * byte stream buffer that comes back from the _CRS method - * execution. - */ - Status = AcpiRsCreateResourceList (ObjDesc, RetBuffer); - - /* On exit, we must delete the object returned by evaluateObject */ - - AcpiUtRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsGetPrsMethodData - * - * PARAMETERS: Node - Device node - * RetBuffer - Pointer to a buffer structure for the - * results - * - * RETURN: Status - * - * DESCRIPTION: This function is called to get the _PRS value of an object - * contained in an object specified by the handle passed in - * - * If the function fails an appropriate status will be returned - * and the contents of the callers buffer is undefined. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsGetPrsMethodData ( - ACPI_NAMESPACE_NODE *Node, - ACPI_BUFFER *RetBuffer) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (RsGetPrsMethodData); - - - /* Parameters guaranteed valid by caller */ - - /* Execute the method, no parameters */ - - Status = AcpiUtEvaluateObject (Node, METHOD_NAME__PRS, - ACPI_BTYPE_BUFFER, &ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Make the call to create a resource linked list from the - * byte stream buffer that comes back from the _CRS method - * execution. - */ - Status = AcpiRsCreateResourceList (ObjDesc, RetBuffer); - - /* On exit, we must delete the object returned by evaluateObject */ - - AcpiUtRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsGetMethodData - * - * PARAMETERS: Handle - Handle to the containing object - * Path - Path to method, relative to Handle - * RetBuffer - Pointer to a buffer structure for the - * results - * - * RETURN: Status - * - * DESCRIPTION: This function is called to get the _CRS or _PRS value of an - * object contained in an object specified by the handle passed in - * - * If the function fails an appropriate status will be returned - * and the contents of the callers buffer is undefined. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsGetMethodData ( - ACPI_HANDLE Handle, - char *Path, - ACPI_BUFFER *RetBuffer) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (RsGetMethodData); - - - /* Parameters guaranteed valid by caller */ - - /* Execute the method, no parameters */ - - Status = AcpiUtEvaluateObject (Handle, Path, ACPI_BTYPE_BUFFER, &ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Make the call to create a resource linked list from the - * byte stream buffer that comes back from the method - * execution. - */ - Status = AcpiRsCreateResourceList (ObjDesc, RetBuffer); - - /* On exit, we must delete the object returned by EvaluateObject */ - - AcpiUtRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiRsSetSrsMethodData - * - * PARAMETERS: Node - Device node - * InBuffer - Pointer to a buffer structure of the - * parameter - * - * RETURN: Status - * - * DESCRIPTION: This function is called to set the _SRS of an object contained - * in an object specified by the handle passed in - * - * If the function fails an appropriate status will be returned - * and the contents of the callers buffer is undefined. - * - * Note: Parameters guaranteed valid by caller - * - ******************************************************************************/ - -ACPI_STATUS -AcpiRsSetSrsMethodData ( - ACPI_NAMESPACE_NODE *Node, - ACPI_BUFFER *InBuffer) -{ - ACPI_EVALUATE_INFO *Info; - ACPI_OPERAND_OBJECT *Args[2]; - ACPI_STATUS Status; - ACPI_BUFFER Buffer; - - - ACPI_FUNCTION_TRACE (RsSetSrsMethodData); - - - /* Allocate and initialize the evaluation information block */ - - Info = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EVALUATE_INFO)); - if (!Info) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - Info->PrefixNode = Node; - Info->Pathname = METHOD_NAME__SRS; - Info->Parameters = Args; - Info->ParameterType = ACPI_PARAM_ARGS; - Info->Flags = ACPI_IGNORE_RETURN_VALUE; - - /* - * The InBuffer parameter will point to a linked list of - * resource parameters. It needs to be formatted into a - * byte stream to be sent in as an input parameter to _SRS - * - * Convert the linked list into a byte stream - */ - Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - Status = AcpiRsCreateAmlResources (InBuffer->Pointer, &Buffer); - if (ACPI_FAILURE (Status)) - { - goto Cleanup; - } - - /* Create and initialize the method parameter object */ - - Args[0] = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER); - if (!Args[0]) - { - /* - * Must free the buffer allocated above (otherwise it is freed - * later) - */ - ACPI_FREE (Buffer.Pointer); - Status = AE_NO_MEMORY; - goto Cleanup; - } - - Args[0]->Buffer.Length = (UINT32) Buffer.Length; - Args[0]->Buffer.Pointer = Buffer.Pointer; - Args[0]->Common.Flags = AOPOBJ_DATA_VALID; - Args[1] = NULL; - - /* Execute the method, no return value is expected */ - - Status = AcpiNsEvaluate (Info); - - /* Clean up and return the status from AcpiNsEvaluate */ - - AcpiUtRemoveReference (Args[0]); - -Cleanup: - ACPI_FREE (Info); - return_ACPI_STATUS (Status); -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/resources/rsxface.c b/sys/contrib/dev/acpica-unix-20061109/resources/rsxface.c deleted file mode 100644 index 1ff12f34b2..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/resources/rsxface.c +++ /dev/null @@ -1,713 +0,0 @@ -/******************************************************************************* - * - * Module Name: rsxface - Public interfaces to the resource manager - * $Revision: 1.47 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __RSXFACE_C__ - -#include "acpi.h" -#include "acresrc.h" -#include "acnamesp.h" - -#define _COMPONENT ACPI_RESOURCES - ACPI_MODULE_NAME ("rsxface") - -/* Local macros for 16,32-bit to 64-bit conversion */ - -#define ACPI_COPY_FIELD(Out, In, Field) ((Out)->Field = (In)->Field) -#define ACPI_COPY_ADDRESS(Out, In) \ - ACPI_COPY_FIELD(Out, In, ResourceType); \ - ACPI_COPY_FIELD(Out, In, ProducerConsumer); \ - ACPI_COPY_FIELD(Out, In, Decode); \ - ACPI_COPY_FIELD(Out, In, MinAddressFixed); \ - ACPI_COPY_FIELD(Out, In, MaxAddressFixed); \ - ACPI_COPY_FIELD(Out, In, Info); \ - ACPI_COPY_FIELD(Out, In, Granularity); \ - ACPI_COPY_FIELD(Out, In, Minimum); \ - ACPI_COPY_FIELD(Out, In, Maximum); \ - ACPI_COPY_FIELD(Out, In, TranslationOffset); \ - ACPI_COPY_FIELD(Out, In, AddressLength); \ - ACPI_COPY_FIELD(Out, In, ResourceSource); - - -/* Local prototypes */ - -static ACPI_STATUS -AcpiRsMatchVendorResource ( - ACPI_RESOURCE *Resource, - void *Context); - -static ACPI_STATUS -AcpiRsValidateParameters ( - ACPI_HANDLE DeviceHandle, - ACPI_BUFFER *Buffer, - ACPI_NAMESPACE_NODE **ReturnNode); - - -/******************************************************************************* - * - * FUNCTION: AcpiRsValidateParameters - * - * PARAMETERS: DeviceHandle - Handle to a device - * Buffer - Pointer to a data buffer - * ReturnNode - Pointer to where the device node is returned - * - * RETURN: Status - * - * DESCRIPTION: Common parameter validation for resource interfaces - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiRsValidateParameters ( - ACPI_HANDLE DeviceHandle, - ACPI_BUFFER *Buffer, - ACPI_NAMESPACE_NODE **ReturnNode) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - - - ACPI_FUNCTION_TRACE (RsValidateParameters); - - - /* - * Must have a valid handle to an ACPI device - */ - if (!DeviceHandle) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - Node = AcpiNsMapHandleToNode (DeviceHandle); - if (!Node) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - if (Node->Type != ACPI_TYPE_DEVICE) - { - return_ACPI_STATUS (AE_TYPE); - } - - /* - * Validate the user buffer object - * - * if there is a non-zero buffer length we also need a valid pointer in - * the buffer. If it's a zero buffer length, we'll be returning the - * needed buffer size (later), so keep going. - */ - Status = AcpiUtValidateBuffer (Buffer); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - *ReturnNode = Node; - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiGetIrqRoutingTable - * - * PARAMETERS: DeviceHandle - Handle to the Bus device we are querying - * RetBuffer - Pointer to a buffer to receive the - * current resources for the device - * - * RETURN: Status - * - * DESCRIPTION: This function is called to get the IRQ routing table for a - * specific bus. The caller must first acquire a handle for the - * desired bus. The routine table is placed in the buffer pointed - * to by the RetBuffer variable parameter. - * - * If the function fails an appropriate status will be returned - * and the value of RetBuffer is undefined. - * - * This function attempts to execute the _PRT method contained in - * the object indicated by the passed DeviceHandle. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetIrqRoutingTable ( - ACPI_HANDLE DeviceHandle, - ACPI_BUFFER *RetBuffer) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - - - ACPI_FUNCTION_TRACE (AcpiGetIrqRoutingTable); - - - /* Validate parameters then dispatch to internal routine */ - - Status = AcpiRsValidateParameters (DeviceHandle, RetBuffer, &Node); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - Status = AcpiRsGetPrtMethodData (Node, RetBuffer); - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiGetIrqRoutingTable) - - -/******************************************************************************* - * - * FUNCTION: AcpiGetCurrentResources - * - * PARAMETERS: DeviceHandle - Handle to the device object for the - * device we are querying - * RetBuffer - Pointer to a buffer to receive the - * current resources for the device - * - * RETURN: Status - * - * DESCRIPTION: This function is called to get the current resources for a - * specific device. The caller must first acquire a handle for - * the desired device. The resource data is placed in the buffer - * pointed to by the RetBuffer variable parameter. - * - * If the function fails an appropriate status will be returned - * and the value of RetBuffer is undefined. - * - * This function attempts to execute the _CRS method contained in - * the object indicated by the passed DeviceHandle. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetCurrentResources ( - ACPI_HANDLE DeviceHandle, - ACPI_BUFFER *RetBuffer) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - - - ACPI_FUNCTION_TRACE (AcpiGetCurrentResources); - - - /* Validate parameters then dispatch to internal routine */ - - Status = AcpiRsValidateParameters (DeviceHandle, RetBuffer, &Node); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - Status = AcpiRsGetCrsMethodData (Node, RetBuffer); - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiGetCurrentResources) - - -/******************************************************************************* - * - * FUNCTION: AcpiGetPossibleResources - * - * PARAMETERS: DeviceHandle - Handle to the device object for the - * device we are querying - * RetBuffer - Pointer to a buffer to receive the - * resources for the device - * - * RETURN: Status - * - * DESCRIPTION: This function is called to get a list of the possible resources - * for a specific device. The caller must first acquire a handle - * for the desired device. The resource data is placed in the - * buffer pointed to by the RetBuffer variable. - * - * If the function fails an appropriate status will be returned - * and the value of RetBuffer is undefined. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetPossibleResources ( - ACPI_HANDLE DeviceHandle, - ACPI_BUFFER *RetBuffer) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - - - ACPI_FUNCTION_TRACE (AcpiGetPossibleResources); - - - /* Validate parameters then dispatch to internal routine */ - - Status = AcpiRsValidateParameters (DeviceHandle, RetBuffer, &Node); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - Status = AcpiRsGetPrsMethodData (Node, RetBuffer); - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiGetPossibleResources) - - -/******************************************************************************* - * - * FUNCTION: AcpiSetCurrentResources - * - * PARAMETERS: DeviceHandle - Handle to the device object for the - * device we are setting resources - * InBuffer - Pointer to a buffer containing the - * resources to be set for the device - * - * RETURN: Status - * - * DESCRIPTION: This function is called to set the current resources for a - * specific device. The caller must first acquire a handle for - * the desired device. The resource data is passed to the routine - * the buffer pointed to by the InBuffer variable. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiSetCurrentResources ( - ACPI_HANDLE DeviceHandle, - ACPI_BUFFER *InBuffer) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - - - ACPI_FUNCTION_TRACE (AcpiSetCurrentResources); - - - /* Validate the buffer, don't allow zero length */ - - if ((!InBuffer) || - (!InBuffer->Pointer) || - (!InBuffer->Length)) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Validate parameters then dispatch to internal routine */ - - Status = AcpiRsValidateParameters (DeviceHandle, InBuffer, &Node); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - Status = AcpiRsSetSrsMethodData (Node, InBuffer); - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiSetCurrentResources) - - -/****************************************************************************** - * - * FUNCTION: AcpiResourceToAddress64 - * - * PARAMETERS: Resource - Pointer to a resource - * Out - Pointer to the users's return buffer - * (a struct acpi_resource_address64) - * - * RETURN: Status - * - * DESCRIPTION: If the resource is an address16, address32, or address64, - * copy it to the address64 return buffer. This saves the - * caller from having to duplicate code for different-sized - * addresses. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiResourceToAddress64 ( - ACPI_RESOURCE *Resource, - ACPI_RESOURCE_ADDRESS64 *Out) -{ - ACPI_RESOURCE_ADDRESS16 *Address16; - ACPI_RESOURCE_ADDRESS32 *Address32; - - - if (!Resource || !Out) - { - return (AE_BAD_PARAMETER); - } - - /* Convert 16 or 32 address descriptor to 64 */ - - switch (Resource->Type) - { - case ACPI_RESOURCE_TYPE_ADDRESS16: - - Address16 = (ACPI_RESOURCE_ADDRESS16 *) &Resource->Data; - ACPI_COPY_ADDRESS (Out, Address16); - break; - - case ACPI_RESOURCE_TYPE_ADDRESS32: - - Address32 = (ACPI_RESOURCE_ADDRESS32 *) &Resource->Data; - ACPI_COPY_ADDRESS (Out, Address32); - break; - - case ACPI_RESOURCE_TYPE_ADDRESS64: - - /* Simple copy for 64 bit source */ - - ACPI_MEMCPY (Out, &Resource->Data, sizeof (ACPI_RESOURCE_ADDRESS64)); - break; - - default: - return (AE_BAD_PARAMETER); - } - - return (AE_OK); -} - -ACPI_EXPORT_SYMBOL (AcpiResourceToAddress64) - - -/******************************************************************************* - * - * FUNCTION: AcpiGetVendorResource - * - * PARAMETERS: DeviceHandle - Handle for the parent device object - * Name - Method name for the parent resource - * (METHOD_NAME__CRS or METHOD_NAME__PRS) - * Uuid - Pointer to the UUID to be matched. - * includes both subtype and 16-byte UUID - * RetBuffer - Where the vendor resource is returned - * - * RETURN: Status - * - * DESCRIPTION: Walk a resource template for the specified evice to find a - * vendor-defined resource that matches the supplied UUID and - * UUID subtype. Returns a ACPI_RESOURCE of type Vendor. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetVendorResource ( - ACPI_HANDLE DeviceHandle, - char *Name, - ACPI_VENDOR_UUID *Uuid, - ACPI_BUFFER *RetBuffer) -{ - ACPI_VENDOR_WALK_INFO Info; - ACPI_STATUS Status; - - - /* Other parameters are validated by AcpiWalkResources */ - - if (!Uuid || !RetBuffer) - { - return (AE_BAD_PARAMETER); - } - - Info.Uuid = Uuid; - Info.Buffer = RetBuffer; - Info.Status = AE_NOT_EXIST; - - /* Walk the _CRS or _PRS resource list for this device */ - - Status = AcpiWalkResources (DeviceHandle, Name, AcpiRsMatchVendorResource, - &Info); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - return (Info.Status); -} - -ACPI_EXPORT_SYMBOL (AcpiGetVendorResource) - - -/******************************************************************************* - * - * FUNCTION: AcpiRsMatchVendorResource - * - * PARAMETERS: ACPI_WALK_RESOURCE_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Match a vendor resource via the ACPI 3.0 UUID - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiRsMatchVendorResource ( - ACPI_RESOURCE *Resource, - void *Context) -{ - ACPI_VENDOR_WALK_INFO *Info = Context; - ACPI_RESOURCE_VENDOR_TYPED *Vendor; - ACPI_BUFFER *Buffer; - ACPI_STATUS Status; - - - /* Ignore all descriptors except Vendor */ - - if (Resource->Type != ACPI_RESOURCE_TYPE_VENDOR) - { - return (AE_OK); - } - - Vendor = &Resource->Data.VendorTyped; - - /* - * For a valid match, these conditions must hold: - * - * 1) Length of descriptor data must be at least as long as a UUID struct - * 2) The UUID subtypes must match - * 3) The UUID data must match - */ - if ((Vendor->ByteLength < (ACPI_UUID_LENGTH + 1)) || - (Vendor->UuidSubtype != Info->Uuid->Subtype) || - (ACPI_MEMCMP (Vendor->Uuid, Info->Uuid->Data, ACPI_UUID_LENGTH))) - { - return (AE_OK); - } - - /* Validate/Allocate/Clear caller buffer */ - - Buffer = Info->Buffer; - Status = AcpiUtInitializeBuffer (Buffer, Resource->Length); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* Found the correct resource, copy and return it */ - - ACPI_MEMCPY (Buffer->Pointer, Resource, Resource->Length); - Buffer->Length = Resource->Length; - - /* Found the desired descriptor, terminate resource walk */ - - Info->Status = AE_OK; - return (AE_CTRL_TERMINATE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiWalkResources - * - * PARAMETERS: DeviceHandle - Handle to the device object for the - * device we are querying - * Name - Method name of the resources we want - * (METHOD_NAME__CRS or METHOD_NAME__PRS) - * UserFunction - Called for each resource - * Context - Passed to UserFunction - * - * RETURN: Status - * - * DESCRIPTION: Retrieves the current or possible resource list for the - * specified device. The UserFunction is called once for - * each resource in the list. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiWalkResources ( - ACPI_HANDLE DeviceHandle, - char *Name, - ACPI_WALK_RESOURCE_CALLBACK UserFunction, - void *Context) -{ - ACPI_STATUS Status; - ACPI_BUFFER Buffer; - ACPI_RESOURCE *Resource; - ACPI_RESOURCE *ResourceEnd; - - - ACPI_FUNCTION_TRACE (AcpiWalkResources); - - - /* Parameter validation */ - - if (!DeviceHandle || !UserFunction || !Name || - (!ACPI_COMPARE_NAME (Name, METHOD_NAME__CRS) && - !ACPI_COMPARE_NAME (Name, METHOD_NAME__PRS))) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - /* Get the _CRS or _PRS resource list */ - - Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - Status = AcpiRsGetMethodData (DeviceHandle, Name, &Buffer); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Buffer now contains the resource list */ - - Resource = ACPI_CAST_PTR (ACPI_RESOURCE, Buffer.Pointer); - ResourceEnd = ACPI_ADD_PTR (ACPI_RESOURCE, Buffer.Pointer, Buffer.Length); - - /* Walk the resource list until the EndTag is found (or buffer end) */ - - while (Resource < ResourceEnd) - { - /* Sanity check the resource */ - - if (Resource->Type > ACPI_RESOURCE_TYPE_MAX) - { - Status = AE_AML_INVALID_RESOURCE_TYPE; - break; - } - - /* Invoke the user function, abort on any error returned */ - - Status = UserFunction (Resource, Context); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_CTRL_TERMINATE) - { - /* This is an OK termination by the user function */ - - Status = AE_OK; - } - break; - } - - /* EndTag indicates end-of-list */ - - if (Resource->Type == ACPI_RESOURCE_TYPE_END_TAG) - { - break; - } - - /* Get the next resource descriptor */ - - Resource = ACPI_ADD_PTR (ACPI_RESOURCE, Resource, Resource->Length); - } - - ACPI_FREE (Buffer.Pointer); - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiWalkResources) diff --git a/sys/contrib/dev/acpica-unix-20061109/tables/tbfadt.c b/sys/contrib/dev/acpica-unix-20061109/tables/tbfadt.c deleted file mode 100644 index a1afd6db20..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/tables/tbfadt.c +++ /dev/null @@ -1,520 +0,0 @@ -/****************************************************************************** - * - * Module Name: tbfadt - FADT table utilities - * $Revision: 1.4 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __TBFADT_C__ - -#include "acpi.h" -#include "actables.h" - -#define _COMPONENT ACPI_TABLES - ACPI_MODULE_NAME ("tbfadt") - -/* Local prototypes */ - -static void inline -AcpiTbInitGenericAddress ( - ACPI_GENERIC_ADDRESS *GenericAddress, - UINT8 BitWidth, - UINT64 Address); - -static void -AcpiTbConvertFadt ( - void); - -static void -AcpiTbValidateFadt ( - void); - - -/* Table for conversion of FADT to common internal format and FADT validation */ - -typedef struct acpi_fadt_info -{ - char *Name; - UINT8 Target; - UINT8 Source; - UINT8 Length; - UINT8 Type; - -} ACPI_FADT_INFO; - -#define ACPI_FADT_REQUIRED 1 -#define ACPI_FADT_SEPARATE_LENGTH 2 - -static ACPI_FADT_INFO FadtInfoTable[] = -{ - {"Pm1aEventBlock", ACPI_FADT_OFFSET (XPm1aEventBlock), - ACPI_FADT_OFFSET (Pm1aEventBlock), - ACPI_FADT_OFFSET (Pm1EventLength), ACPI_FADT_REQUIRED}, - - {"Pm1bEventBlock", ACPI_FADT_OFFSET (XPm1bEventBlock), - ACPI_FADT_OFFSET (Pm1bEventBlock), - ACPI_FADT_OFFSET (Pm1EventLength), 0}, - - {"Pm1aControlBlock", ACPI_FADT_OFFSET (XPm1aControlBlock), - ACPI_FADT_OFFSET (Pm1aControlBlock), - ACPI_FADT_OFFSET (Pm1ControlLength), ACPI_FADT_REQUIRED}, - - {"Pm1bControlBlock", ACPI_FADT_OFFSET (XPm1bControlBlock), - ACPI_FADT_OFFSET (Pm1bControlBlock), - ACPI_FADT_OFFSET (Pm1ControlLength), 0}, - - {"Pm2ControlBlock", ACPI_FADT_OFFSET (XPm2ControlBlock), - ACPI_FADT_OFFSET (Pm2ControlBlock), - ACPI_FADT_OFFSET (Pm2ControlLength), ACPI_FADT_SEPARATE_LENGTH}, - - {"PmTimerBlock", ACPI_FADT_OFFSET (XPmTimerBlock), - ACPI_FADT_OFFSET (PmTimerBlock), - ACPI_FADT_OFFSET (PmTimerLength), ACPI_FADT_REQUIRED}, - - {"Gpe0Block", ACPI_FADT_OFFSET (XGpe0Block), - ACPI_FADT_OFFSET (Gpe0Block), - ACPI_FADT_OFFSET (Gpe0BlockLength), ACPI_FADT_SEPARATE_LENGTH}, - - {"Gpe1Block", ACPI_FADT_OFFSET (XGpe1Block), - ACPI_FADT_OFFSET (Gpe1Block), - ACPI_FADT_OFFSET (Gpe1BlockLength), ACPI_FADT_SEPARATE_LENGTH} -}; - -#define ACPI_FADT_INFO_ENTRIES (sizeof (FadtInfoTable) / sizeof (ACPI_FADT_INFO)) - - -/******************************************************************************* - * - * FUNCTION: AcpiTbInitGenericAddress - * - * PARAMETERS: GenericAddress - GAS struct to be initialized - * BitWidth - Width of this register - * Address - Address of the register - * - * RETURN: None - * - * DESCRIPTION: Initialize a Generic Address Structure (GAS) - * See the ACPI specification for a full description and - * definition of this structure. - * - ******************************************************************************/ - -static void inline -AcpiTbInitGenericAddress ( - ACPI_GENERIC_ADDRESS *GenericAddress, - UINT8 BitWidth, - UINT64 Address) -{ - - /* - * The 64-bit Address field is non-aligned in the byte packed - * GAS struct. - */ - ACPI_MOVE_64_TO_64 (&GenericAddress->Address, &Address); - - /* All other fields are byte-wide */ - - GenericAddress->SpaceId = ACPI_ADR_SPACE_SYSTEM_IO; - GenericAddress->BitWidth = BitWidth; - GenericAddress->BitOffset = 0; - GenericAddress->AccessWidth = 0; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbParseFadt - * - * PARAMETERS: TableIndex - Index for the FADT - * Flags - Flags - * - * RETURN: None - * - * DESCRIPTION: Initialize the FADT, DSDT and FACS tables - * (FADT contains the addresses of the DSDT and FACS) - * - ******************************************************************************/ - -void -AcpiTbParseFadt ( - ACPI_NATIVE_UINT TableIndex, - UINT8 Flags) -{ - UINT32 Length; - ACPI_TABLE_HEADER *Table; - - - /* - * The FADT has multiple versions with different lengths, - * and it contains pointers to both the DSDT and FACS tables. - * - * Get a local copy of the FADT and convert it to a common format - * Map entire FADT, assumed to be smaller than one page. - */ - Length = AcpiGbl_RootTableList.Tables[TableIndex].Length; - - Table = AcpiOsMapMemory ( - AcpiGbl_RootTableList.Tables[TableIndex].Address, Length); - if (!Table) - { - return; - } - - /* - * Validate the FADT checksum before we copy the table. Ignore - * checksum error as we want to try to get the DSDT and FACS. - */ - (void) AcpiTbVerifyChecksum (Table, Length); - - /* Obtain a local copy of the FADT in common ACPI 2.0+ format */ - - AcpiTbCreateLocalFadt (Table, Length); - - /* All done with the real FADT, unmap it */ - - AcpiOsUnmapMemory (Table, Length); - - /* Obtain the DSDT and FACS tables via their addresses within the FADT */ - - AcpiTbInstallTable ((ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.XDsdt, - Flags, ACPI_SIG_DSDT, ACPI_TABLE_INDEX_DSDT); - - AcpiTbInstallTable ((ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.XFacs, - Flags, ACPI_SIG_FACS, ACPI_TABLE_INDEX_FACS); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbCreateLocalFadt - * - * PARAMETERS: Table - Pointer to BIOS FADT - * Length - Length of the table - * - * RETURN: None - * - * DESCRIPTION: Get a local copy of the FADT and convert it to a common format. - * Performs validation on some important FADT fields. - * - ******************************************************************************/ - -void -AcpiTbCreateLocalFadt ( - ACPI_TABLE_HEADER *Table, - UINT32 Length) -{ - - /* - * Check if the FADT is larger than what we know about (ACPI 2.0 version). - * Truncate the table, but make some noise. - */ - if (Length > sizeof (ACPI_TABLE_FADT)) - { - ACPI_WARNING ((AE_INFO, - "FADT (revision %u) is longer than ACPI 2.0 version, truncating length 0x%X to 0x%X", - Table->Revision, Length, sizeof (ACPI_TABLE_FADT))); - } - - /* Copy the entire FADT locally. Zero first for TbConvertFadt */ - - ACPI_MEMSET (&AcpiGbl_FADT, 0, sizeof (ACPI_TABLE_FADT)); - - ACPI_MEMCPY (&AcpiGbl_FADT, Table, - ACPI_MIN (Length, sizeof (ACPI_TABLE_FADT))); - - /* - * 1) Convert the local copy of the FADT to the common internal format - * 2) Validate some of the important values within the FADT - */ - AcpiTbConvertFadt (); - AcpiTbValidateFadt (); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbConvertFadt - * - * PARAMETERS: None, uses AcpiGbl_FADT - * - * RETURN: None - * - * DESCRIPTION: Converts all versions of the FADT to a common internal format. - * -> Expand all 32-bit addresses to 64-bit. - * - * NOTE: AcpiGbl_FADT must be of size (ACPI_TABLE_FADT), - * and must contain a copy of the actual FADT. - * - * ACPICA will use the "X" fields of the FADT for all addresses. - * - * "X" fields are optional extensions to the original V1.0 fields. Even if - * they are present in the structure, they can be optionally not used by - * setting them to zero. Therefore, we must selectively expand V1.0 fields - * if the corresponding X field is zero. - * - * For ACPI 1.0 FADTs, all address fields are expanded to the corresponding - * "X" fields. - * - * For ACPI 2.0 FADTs, any "X" fields that are NULL are filled in by - * expanding the corresponding ACPI 1.0 field. - * - ******************************************************************************/ - -static void -AcpiTbConvertFadt ( - void) -{ - UINT8 Pm1RegisterLength; - ACPI_GENERIC_ADDRESS *Target; - ACPI_NATIVE_UINT i; - - - /* Update the local FADT table header length */ - - AcpiGbl_FADT.Header.Length = sizeof (ACPI_TABLE_FADT); - - /* Expand the 32-bit FACS and DSDT addresses to 64-bit as necessary */ - - if (!AcpiGbl_FADT.XFacs) - { - AcpiGbl_FADT.XFacs = (UINT64) AcpiGbl_FADT.Facs; - } - - if (!AcpiGbl_FADT.XDsdt) - { - AcpiGbl_FADT.XDsdt = (UINT64) AcpiGbl_FADT.Dsdt; - } - - /* - * Expand the 32-bit V1.0 addresses to the 64-bit "X" generic address - * structures as necessary. - */ - for (i = 0; i < ACPI_FADT_INFO_ENTRIES; i++) - { - Target = ACPI_ADD_PTR ( - ACPI_GENERIC_ADDRESS, &AcpiGbl_FADT, FadtInfoTable[i].Target); - - /* Expand only if the X target is null */ - - if (!Target->Address) - { - AcpiTbInitGenericAddress (Target, - *ACPI_ADD_PTR (UINT8, &AcpiGbl_FADT, FadtInfoTable[i].Length), - (UINT64) *ACPI_ADD_PTR (UINT32, &AcpiGbl_FADT, FadtInfoTable[i].Source)); - } - } - - /* - * Calculate separate GAS structs for the PM1 Enable registers. - * These addresses do not appear (directly) in the FADT, so it is - * useful to calculate them once, here. - * - * The PM event blocks are split into two register blocks, first is the - * PM Status Register block, followed immediately by the PM Enable Register - * block. Each is of length (Pm1EventLength/2) - */ - Pm1RegisterLength = (UINT8) ACPI_DIV_2 (AcpiGbl_FADT.Pm1EventLength); - - /* The PM1A register block is required */ - - AcpiTbInitGenericAddress (&AcpiGbl_XPm1aEnable, Pm1RegisterLength, - (AcpiGbl_FADT.XPm1aEventBlock.Address + Pm1RegisterLength)); - - /* The PM1B register block is optional, ignore if not present */ - - if (AcpiGbl_FADT.XPm1bEventBlock.Address) - { - AcpiTbInitGenericAddress (&AcpiGbl_XPm1bEnable, Pm1RegisterLength, - (AcpiGbl_FADT.XPm1bEventBlock.Address + Pm1RegisterLength)); - } -} - - -/****************************************************************************** - * - * FUNCTION: AcpiTbValidateFadt - * - * PARAMETERS: Table - Pointer to the FADT to be validated - * - * RETURN: None - * - * DESCRIPTION: Validate various important fields within the FADT. If a problem - * is found, issue a message, but no status is returned. - * Used by both the table manager and the disassembler. - * - * Possible additional checks: - * (AcpiGbl_FADT.Pm1EventLength >= 4) - * (AcpiGbl_FADT.Pm1ControlLength >= 2) - * (AcpiGbl_FADT.PmTimerLength >= 4) - * Gpe block lengths must be multiple of 2 - * - ******************************************************************************/ - -static void -AcpiTbValidateFadt ( - void) -{ - UINT32 *Address32; - ACPI_GENERIC_ADDRESS *Address64; - UINT8 Length; - ACPI_NATIVE_UINT i; - - - /* Examine all of the 64-bit extended address fields (X fields) */ - - for (i = 0; i < ACPI_FADT_INFO_ENTRIES; i++) - { - /* Generate pointers to the 32-bit and 64-bit addresses and get the length */ - - Address64 = ACPI_ADD_PTR (ACPI_GENERIC_ADDRESS, &AcpiGbl_FADT, FadtInfoTable[i].Target); - Address32 = ACPI_ADD_PTR (UINT32, &AcpiGbl_FADT, FadtInfoTable[i].Source); - Length = *ACPI_ADD_PTR (UINT8, &AcpiGbl_FADT, FadtInfoTable[i].Length); - - if (FadtInfoTable[i].Type & ACPI_FADT_REQUIRED) - { - /* - * Field is required (PM1aEvent, PM1aControl, PmTimer). - * Both the address and length must be non-zero. - */ - if (!Address64->Address || !Length) - { - ACPI_ERROR ((AE_INFO, - "Required field \"%s\" has zero address and/or length: %8.8X%8.8X/%X", - FadtInfoTable[i].Name, ACPI_FORMAT_UINT64 (Address64->Address), Length)); - } - } - else if (FadtInfoTable[i].Type & ACPI_FADT_SEPARATE_LENGTH) - { - /* - * Field is optional (PM2Control, GPE0, GPE1) AND has its own - * length field. If present, both the address and length must be valid. - */ - if ((Address64->Address && !Length) || (!Address64->Address && Length)) - { - ACPI_WARNING ((AE_INFO, - "Optional field \"%s\" has zero address or length: %8.8X%8.8X/%X", - FadtInfoTable[i].Name, ACPI_FORMAT_UINT64 (Address64->Address), Length)); - } - } - - /* If both 32- and 64-bit addresses are valid (non-zero), they must match */ - - if (Address64->Address && *Address32 && - (Address64->Address != (UINT64) *Address32)) - { - ACPI_ERROR ((AE_INFO, - "32/64X address mismatch in \"%s\": [%8.8X] [%8.8X%8.8X], using 64X", - FadtInfoTable[i].Name, *Address32, ACPI_FORMAT_UINT64 (Address64->Address))); - } - } -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/tables/tbfind.c b/sys/contrib/dev/acpica-unix-20061109/tables/tbfind.c deleted file mode 100644 index 412eea9073..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/tables/tbfind.c +++ /dev/null @@ -1,205 +0,0 @@ -/****************************************************************************** - * - * Module Name: tbfind - find table - * $Revision: 1.2 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __TBFIND_C__ - -#include "acpi.h" -#include "actables.h" - -#define _COMPONENT ACPI_TABLES - ACPI_MODULE_NAME ("tbfind") - - -/******************************************************************************* - * - * FUNCTION: AcpiTbFindTable - * - * PARAMETERS: Signature - String with ACPI table signature - * OemId - String with the table OEM ID - * OemTableId - String with the OEM Table ID - * TableIndex - Where the table index is returned - * - * RETURN: Status and table index - * - * DESCRIPTION: Find an ACPI table (in the RSDT/XSDT) that matches the - * Signature, OEM ID and OEM Table ID. Returns an index that can - * be used to get the table header or entire table. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbFindTable ( - char *Signature, - char *OemId, - char *OemTableId, - ACPI_NATIVE_UINT *TableIndex) -{ - ACPI_NATIVE_UINT i; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (TbFindTable); - - - for (i = 0; i < AcpiGbl_RootTableList.Count; ++i) - { - if (ACPI_MEMCMP (&(AcpiGbl_RootTableList.Tables[i].Signature), - Signature, ACPI_NAME_SIZE)) - { - /* Not the requested table */ - - continue; - } - - /* Table with matching signature has been found */ - - if (!AcpiGbl_RootTableList.Tables[i].Pointer) - { - /* Table is not currently mapped, map it */ - - Status = AcpiTbVerifyTable (&AcpiGbl_RootTableList.Tables[i]); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - if (!AcpiGbl_RootTableList.Tables[i].Pointer) - { - continue; - } - } - - /* Check for table match on all IDs */ - - if (!ACPI_MEMCMP (AcpiGbl_RootTableList.Tables[i].Pointer->Signature, - Signature, ACPI_NAME_SIZE) && - (!OemId[0] || - !ACPI_MEMCMP (AcpiGbl_RootTableList.Tables[i].Pointer->OemId, - OemId, ACPI_OEM_ID_SIZE)) && - (!OemTableId[0] || - !ACPI_MEMCMP (AcpiGbl_RootTableList.Tables[i].Pointer->OemTableId, - OemTableId, ACPI_OEM_TABLE_ID_SIZE))) - { - *TableIndex = i; - - ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "Found table [%4.4s]\n", - Signature)); - return_ACPI_STATUS (AE_OK); - } - } - - return_ACPI_STATUS (AE_NOT_FOUND); -} diff --git a/sys/contrib/dev/acpica-unix-20061109/tables/tbinstal.c b/sys/contrib/dev/acpica-unix-20061109/tables/tbinstal.c deleted file mode 100644 index d663e8d11d..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/tables/tbinstal.c +++ /dev/null @@ -1,684 +0,0 @@ -/****************************************************************************** - * - * Module Name: tbinstal - ACPI table installation and removal - * $Revision: 1.90 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __TBINSTAL_C__ - -#include "acpi.h" -#include "acnamesp.h" -#include "actables.h" - - -#define _COMPONENT ACPI_TABLES - ACPI_MODULE_NAME ("tbinstal") - - -/****************************************************************************** - * - * FUNCTION: AcpiTbVerifyTable - * - * PARAMETERS: TableDesc - table - * - * RETURN: Status - * - * DESCRIPTION: this function is called to verify and map table - * - *****************************************************************************/ - -ACPI_STATUS -AcpiTbVerifyTable ( - ACPI_TABLE_DESC *TableDesc) -{ - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE (TbVerifyTable); - - - /* Map the table if necessary */ - - if (!TableDesc->Pointer) - { - if ((TableDesc->Flags & ACPI_TABLE_ORIGIN_MASK) == - ACPI_TABLE_ORIGIN_MAPPED) - { - TableDesc->Pointer = AcpiOsMapMemory (TableDesc->Address, TableDesc->Length); - } - - if (!TableDesc->Pointer) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - } - - /* FACS is the odd table, has no standard ACPI header and no checksum */ - - if (!ACPI_COMPARE_NAME (&TableDesc->Signature, ACPI_SIG_FACS)) - { - /* Always calculate checksum, ignore bad checksum if requested */ - - Status = AcpiTbVerifyChecksum (TableDesc->Pointer, TableDesc->Length); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbAddTable - * - * PARAMETERS: TableDesc - Table descriptor - * TableIndex - Where the table index is returned - * - * RETURN: Status - * - * DESCRIPTION: This function is called to add the ACPI table - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbAddTable ( - ACPI_TABLE_DESC *TableDesc, - ACPI_NATIVE_UINT *TableIndex) -{ - ACPI_NATIVE_UINT i; - ACPI_NATIVE_UINT Length; - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE (TbAddTable); - - - if (!TableDesc->Pointer) - { - Status = AcpiTbVerifyTable (TableDesc); - if (ACPI_FAILURE (Status) || !TableDesc->Pointer) - { - return_ACPI_STATUS (Status); - } - } - - /* The table must be either an SSDT or a PSDT */ - - if ((!ACPI_COMPARE_NAME (TableDesc->Pointer->Signature, ACPI_SIG_PSDT)) && - (!ACPI_COMPARE_NAME (TableDesc->Pointer->Signature, ACPI_SIG_SSDT))) - { - ACPI_ERROR ((AE_INFO, - "Table has invalid signature [%4.4s], must be SSDT or PSDT", - TableDesc->Pointer->Signature)); - return_ACPI_STATUS (AE_BAD_SIGNATURE); - } - - (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); - - /* Check if table is already registered */ - - for (i = 0; i < AcpiGbl_RootTableList.Count; ++i) - { - if (!AcpiGbl_RootTableList.Tables[i].Pointer) - { - Status = AcpiTbVerifyTable (&AcpiGbl_RootTableList.Tables[i]); - if (ACPI_FAILURE (Status) || !AcpiGbl_RootTableList.Tables[i].Pointer) - { - continue; - } - } - - Length = ACPI_MIN (TableDesc->Length, - AcpiGbl_RootTableList.Tables[i].Length); - if (ACPI_MEMCMP (TableDesc->Pointer, - AcpiGbl_RootTableList.Tables[i].Pointer, Length)) - { - continue; - } - - /* Table is already registered */ - - AcpiTbDeleteTable (TableDesc); - *TableIndex = i; - goto Release; - } - - /* - * Add the table to the global table list - */ - Status = AcpiTbStoreTable (TableDesc->Address, TableDesc->Pointer, - TableDesc->Length, TableDesc->Flags, TableIndex); - if (ACPI_FAILURE (Status)) - { - goto Release; - } - - AcpiTbPrintTableHeader (TableDesc->Address, TableDesc->Pointer); - -Release: - (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbResizeRootTableList - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Expand the size of global table array - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbResizeRootTableList ( - void) -{ - ACPI_TABLE_DESC *Tables; - - - ACPI_FUNCTION_TRACE (TbResizeRootTableList); - - - /* AllowResize flag is a parameter to AcpiInitializeTables */ - - if (!(AcpiGbl_RootTableList.Flags & ACPI_ROOT_ALLOW_RESIZE)) - { - ACPI_ERROR ((AE_INFO, "Resize of Root Table Array is not allowed")); - return_ACPI_STATUS (AE_SUPPORT); - } - - /* Increase the Table Array size */ - - Tables = ACPI_ALLOCATE_ZEROED ( - (AcpiGbl_RootTableList.Size + ACPI_ROOT_TABLE_SIZE_INCREMENT) - * sizeof (ACPI_TABLE_DESC)); - if (!Tables) - { - ACPI_ERROR ((AE_INFO, "Could not allocate new root table array")); - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Copy and free the previous table array */ - - if (AcpiGbl_RootTableList.Tables) - { - ACPI_MEMCPY (Tables, AcpiGbl_RootTableList.Tables, - AcpiGbl_RootTableList.Size * sizeof (ACPI_TABLE_DESC)); - - if (AcpiGbl_RootTableList.Flags & ACPI_ROOT_ORIGIN_ALLOCATED) - { - ACPI_FREE (AcpiGbl_RootTableList.Tables); - } - } - - AcpiGbl_RootTableList.Tables = Tables; - AcpiGbl_RootTableList.Size += ACPI_ROOT_TABLE_SIZE_INCREMENT; - AcpiGbl_RootTableList.Flags |= (UINT8) ACPI_ROOT_ORIGIN_ALLOCATED; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbStoreTable - * - * PARAMETERS: Address - Table address - * Table - Table header - * Length - Table length - * Flags - flags - * - * RETURN: Status and table index. - * - * DESCRIPTION: Add an ACPI table to the global table list - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbStoreTable ( - ACPI_PHYSICAL_ADDRESS Address, - ACPI_TABLE_HEADER *Table, - UINT32 Length, - UINT8 Flags, - ACPI_NATIVE_UINT *TableIndex) -{ - ACPI_STATUS Status = AE_OK; - - - /* Ensure that there is room for the table in the Root Table List */ - - if (AcpiGbl_RootTableList.Count >= AcpiGbl_RootTableList.Size) - { - Status = AcpiTbResizeRootTableList(); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - } - - /* Initialize added table */ - - AcpiGbl_RootTableList.Tables[AcpiGbl_RootTableList.Count].Address = Address; - AcpiGbl_RootTableList.Tables[AcpiGbl_RootTableList.Count].Pointer = Table; - AcpiGbl_RootTableList.Tables[AcpiGbl_RootTableList.Count].Length = Length; - AcpiGbl_RootTableList.Tables[AcpiGbl_RootTableList.Count].OwnerId = 0; - AcpiGbl_RootTableList.Tables[AcpiGbl_RootTableList.Count].Flags = Flags; - - ACPI_MOVE_32_TO_32 ( - &(AcpiGbl_RootTableList.Tables[AcpiGbl_RootTableList.Count].Signature), - Table->Signature); - - *TableIndex = AcpiGbl_RootTableList.Count; - AcpiGbl_RootTableList.Count++; - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbDeleteTable - * - * PARAMETERS: TableIndex - Table index - * - * RETURN: None - * - * DESCRIPTION: Delete one internal ACPI table - * - ******************************************************************************/ - -void -AcpiTbDeleteTable ( - ACPI_TABLE_DESC *TableDesc) -{ - - /* Table must be mapped or allocated */ - - if (!TableDesc->Pointer) - { - return; - } - - switch (TableDesc->Flags & ACPI_TABLE_ORIGIN_MASK) - { - case ACPI_TABLE_ORIGIN_MAPPED: - AcpiOsUnmapMemory (TableDesc->Pointer, TableDesc->Length); - break; - - case ACPI_TABLE_ORIGIN_ALLOCATED: - ACPI_FREE (TableDesc->Pointer); - break; - - default: - break; - } - - TableDesc->Pointer = NULL; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbTerminate - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Delete all internal ACPI tables - * - ******************************************************************************/ - -void -AcpiTbTerminate ( - void) -{ - ACPI_NATIVE_UINT i; - - - ACPI_FUNCTION_TRACE (TbTerminate); - - - (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); - - /* Delete the individual tables */ - - for (i = 0; i < AcpiGbl_RootTableList.Count; i++) - { - AcpiTbDeleteTable (&AcpiGbl_RootTableList.Tables[i]); - } - - /* - * Delete the root table array if allocated locally. Array cannot be - * mapped, so we don't need to check for that flag. - */ - if (AcpiGbl_RootTableList.Flags & ACPI_ROOT_ORIGIN_ALLOCATED) - { - ACPI_FREE (AcpiGbl_RootTableList.Tables); - } - - AcpiGbl_RootTableList.Tables = NULL; - AcpiGbl_RootTableList.Flags = 0; - AcpiGbl_RootTableList.Count = 0; - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "ACPI Tables freed\n")); - (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbDeleteNamespaceByOwner - * - * PARAMETERS: TableIndex - Table index - * - * RETURN: None - * - * DESCRIPTION: Delete all namespace objects created when this table was loaded. - * - ******************************************************************************/ - -void -AcpiTbDeleteNamespaceByOwner ( - ACPI_NATIVE_UINT TableIndex) -{ - ACPI_OWNER_ID OwnerId; - - - (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); - if (TableIndex < AcpiGbl_RootTableList.Count) - { - OwnerId = AcpiGbl_RootTableList.Tables[TableIndex].OwnerId; - } - else - { - (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); - return; - } - - (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); - AcpiNsDeleteNamespaceByOwner (OwnerId); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbAllocateOwnerId - * - * PARAMETERS: TableIndex - Table index - * - * RETURN: Status - * - * DESCRIPTION: Allocates OwnerId in TableDesc - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbAllocateOwnerId ( - ACPI_NATIVE_UINT TableIndex) -{ - ACPI_STATUS Status = AE_BAD_PARAMETER; - - - ACPI_FUNCTION_TRACE (TbAllocateOwnerId); - - - (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); - if (TableIndex < AcpiGbl_RootTableList.Count) - { - Status = AcpiUtAllocateOwnerId - (&(AcpiGbl_RootTableList.Tables[TableIndex].OwnerId)); - } - - (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbReleaseOwnerId - * - * PARAMETERS: TableIndex - Table index - * - * RETURN: Status - * - * DESCRIPTION: Releases OwnerId in TableDesc - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbReleaseOwnerId ( - ACPI_NATIVE_UINT TableIndex) -{ - ACPI_STATUS Status = AE_BAD_PARAMETER; - - - ACPI_FUNCTION_TRACE (TbReleaseOwnerId); - - - (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); - if (TableIndex < AcpiGbl_RootTableList.Count) - { - AcpiUtReleaseOwnerId (&(AcpiGbl_RootTableList.Tables[TableIndex].OwnerId)); - Status = AE_OK; - } - - (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbGetOwnerId - * - * PARAMETERS: TableIndex - Table index - * OwnerId - Where the table OwnerId is returned - * - * RETURN: Status - * - * DESCRIPTION: returns OwnerId for the ACPI table - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbGetOwnerId ( - ACPI_NATIVE_UINT TableIndex, - ACPI_OWNER_ID *OwnerId) -{ - ACPI_STATUS Status = AE_BAD_PARAMETER; - - - ACPI_FUNCTION_TRACE (TbGetOwnerId); - - - (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); - if (TableIndex < AcpiGbl_RootTableList.Count) - { - *OwnerId = AcpiGbl_RootTableList.Tables[TableIndex].OwnerId; - Status = AE_OK; - } - - (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbIsTableLoaded - * - * PARAMETERS: TableIndex - Table index - * - * RETURN: Table Loaded Flag - * - ******************************************************************************/ - -BOOLEAN -AcpiTbIsTableLoaded ( - ACPI_NATIVE_UINT TableIndex) -{ - BOOLEAN IsLoaded = FALSE; - - - (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); - if (TableIndex < AcpiGbl_RootTableList.Count) - { - IsLoaded = (BOOLEAN) - (AcpiGbl_RootTableList.Tables[TableIndex].Flags & ACPI_TABLE_IS_LOADED); - } - - (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); - return (IsLoaded); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbSetTableLoadedFlag - * - * PARAMETERS: TableIndex - Table index - * IsLoaded - TRUE if table is loaded, FALSE otherwise - * - * RETURN: None - * - * DESCRIPTION: Sets the table loaded flag to either TRUE or FALSE. - * - ******************************************************************************/ - -void -AcpiTbSetTableLoadedFlag ( - ACPI_NATIVE_UINT TableIndex, - BOOLEAN IsLoaded) -{ - - (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); - if (TableIndex < AcpiGbl_RootTableList.Count) - { - if (IsLoaded) - { - AcpiGbl_RootTableList.Tables[TableIndex].Flags |= ACPI_TABLE_IS_LOADED; - } - else - { - AcpiGbl_RootTableList.Tables[TableIndex].Flags &= ~ACPI_TABLE_IS_LOADED; - } - } - - (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/tables/tbutils.c b/sys/contrib/dev/acpica-unix-20061109/tables/tbutils.c deleted file mode 100644 index 45dc323256..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/tables/tbutils.c +++ /dev/null @@ -1,594 +0,0 @@ -/****************************************************************************** - * - * Module Name: tbutils - table utilities - * $Revision: 1.87 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __TBUTILS_C__ - -#include "acpi.h" -#include "actables.h" - -#define _COMPONENT ACPI_TABLES - ACPI_MODULE_NAME ("tbutils") - -/* Local prototypes */ - -static ACPI_PHYSICAL_ADDRESS -AcpiTbGetRootTableEntry ( - UINT8 *TableEntry, - ACPI_NATIVE_UINT TableEntrySize); - - -/******************************************************************************* - * - * FUNCTION: AcpiTbTablesLoaded - * - * PARAMETERS: None - * - * RETURN: TRUE if required ACPI tables are loaded - * - * DESCRIPTION: Determine if the minimum required ACPI tables are present - * (FADT, FACS, DSDT) - * - ******************************************************************************/ - -BOOLEAN -AcpiTbTablesLoaded ( - void) -{ - - if (AcpiGbl_RootTableList.Count >= 3) - { - return (TRUE); - } - - return (FALSE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbPrintTableHeader - * - * PARAMETERS: Address - Table physical address - * Header - Table header - * - * RETURN: None - * - * DESCRIPTION: Print an ACPI table header. Special cases for FACS and RSDP. - * - ******************************************************************************/ - -void -AcpiTbPrintTableHeader ( - ACPI_PHYSICAL_ADDRESS Address, - ACPI_TABLE_HEADER *Header) -{ - - if (ACPI_COMPARE_NAME (Header->Signature, ACPI_SIG_FACS)) - { - /* FACS only has signature and length fields of common table header */ - - ACPI_INFO ((AE_INFO, "%4.4s @ 0x%p/0x%04X", - Header->Signature, ACPI_CAST_PTR (void, Address), Header->Length)); - } - else if (ACPI_COMPARE_NAME (Header->Signature, ACPI_SIG_RSDP)) - { - /* RSDP has no common fields */ - - ACPI_INFO ((AE_INFO, "RSDP @ 0x%p/0x%04X (v%3.3d %6.6s)", - ACPI_CAST_PTR (void, Address), - (ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->Revision > 0) ? - ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->Length : 20, - ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->Revision, - ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->OemId)); - } - else - { - /* Standard ACPI table with full common header */ - - ACPI_INFO ((AE_INFO, - "%4.4s @ 0x%p/0x%04X (v%3.3d %6.6s %8.8s 0x%08X %4.4s 0x%08X)", - Header->Signature, ACPI_CAST_PTR (void, Address), - Header->Length, Header->Revision, Header->OemId, - Header->OemTableId, Header->OemRevision, Header->AslCompilerId, - Header->AslCompilerRevision)); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbValidateChecksum - * - * PARAMETERS: Table - ACPI table to verify - * Length - Length of entire table - * - * RETURN: Status - * - * DESCRIPTION: Verifies that the table checksums to zero. Optionally returns - * exception on bad checksum. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbVerifyChecksum ( - ACPI_TABLE_HEADER *Table, - UINT32 Length) -{ - UINT8 Checksum; - - - /* Compute the checksum on the table */ - - Checksum = AcpiTbChecksum (ACPI_CAST_PTR (UINT8, Table), Length); - - /* Checksum ok? (should be zero) */ - - if (Checksum) - { - ACPI_WARNING ((AE_INFO, - "Incorrect checksum in table [%4.4s] - %2.2X, should be %2.2X", - Table->Signature, Table->Checksum, (UINT8) (Table->Checksum - Checksum))); - -#if (ACPI_CHECKSUM_ABORT) - return (AE_BAD_CHECKSUM); -#endif - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbChecksum - * - * PARAMETERS: Buffer - Pointer to memory region to be checked - * Length - Length of this memory region - * - * RETURN: Checksum (UINT8) - * - * DESCRIPTION: Calculates circular checksum of memory region. - * - ******************************************************************************/ - -UINT8 -AcpiTbChecksum ( - UINT8 *Buffer, - ACPI_NATIVE_UINT Length) -{ - UINT8 Sum = 0; - UINT8 *End = Buffer + Length; - - - while (Buffer < End) - { - Sum = (UINT8) (Sum + *(Buffer++)); - } - - return Sum; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbInstallTable - * - * PARAMETERS: Address - Physical address of DSDT or FACS - * Flags - Flags - * Signature - Table signature, NULL if no need to - * match - * TableIndex - Index into root table array - * - * RETURN: None - * - * DESCRIPTION: Install an ACPI table into the global data structure. - * - ******************************************************************************/ - -void -AcpiTbInstallTable ( - ACPI_PHYSICAL_ADDRESS Address, - UINT8 Flags, - char *Signature, - ACPI_NATIVE_UINT TableIndex) -{ - ACPI_TABLE_HEADER *Table; - - - if (!Address) - { - ACPI_ERROR ((AE_INFO, "Null physical address for ACPI table [%s]", - Signature)); - return; - } - - /* Map just the table header */ - - Table = AcpiOsMapMemory (Address, sizeof (ACPI_TABLE_HEADER)); - if (!Table) - { - return; - } - - /* If a particular signature is expected, signature must match */ - - if (Signature && - !ACPI_COMPARE_NAME (Table->Signature, Signature)) - { - ACPI_ERROR ((AE_INFO, "Invalid signature 0x%X for ACPI table [%s]", - *ACPI_CAST_PTR (UINT32, Table->Signature), Signature)); - goto UnmapAndExit; - } - - /* Initialize the table entry */ - - AcpiGbl_RootTableList.Tables[TableIndex].Address = Address; - AcpiGbl_RootTableList.Tables[TableIndex].Length = Table->Length; - AcpiGbl_RootTableList.Tables[TableIndex].Flags = Flags; - - ACPI_MOVE_32_TO_32 ( - &(AcpiGbl_RootTableList.Tables[TableIndex].Signature), - Table->Signature); - - AcpiTbPrintTableHeader (Address, Table); - - if (TableIndex == ACPI_TABLE_INDEX_DSDT) - { - /* Global integer width is based upon revision of the DSDT */ - - AcpiUtSetIntegerWidth (Table->Revision); - } - -UnmapAndExit: - AcpiOsUnmapMemory (Table, sizeof (ACPI_TABLE_HEADER)); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbGetRootTableEntry - * - * PARAMETERS: TableEntry - Pointer to the RSDT/XSDT table entry - * TableEntrySize - sizeof 32 or 64 (RSDT or XSDT) - * - * RETURN: Physical address extracted from the root table - * - * DESCRIPTION: Get one root table entry. Handles 32-bit and 64-bit cases on - * both 32-bit and 64-bit platforms - * - * NOTE: ACPI_PHYSICAL_ADDRESS is 32-bit on 32-bit platforms, 64-bit on - * 64-bit platforms. - * - ******************************************************************************/ - -static ACPI_PHYSICAL_ADDRESS -AcpiTbGetRootTableEntry ( - UINT8 *TableEntry, - ACPI_NATIVE_UINT TableEntrySize) -{ - UINT64 Address64; - - - /* - * Get the table physical address (32-bit for RSDT, 64-bit for XSDT): - * Note: Addresses are 32-bit aligned (not 64) in both RSDT and XSDT - */ - if (TableEntrySize == sizeof (UINT32)) - { - /* - * 32-bit platform, RSDT: Return 32-bit table entry - * 64-bit platform, RSDT: Expand 32-bit to 64-bit and return - */ - return ((ACPI_PHYSICAL_ADDRESS) (*ACPI_CAST_PTR (UINT32, TableEntry))); - } - else - { - /* - * 32-bit platform, XSDT: Truncate 64-bit to 32-bit and return - * 64-bit platform, XSDT: Move (unaligned) 64-bit to local, return 64-bit - */ - ACPI_MOVE_64_TO_64 (&Address64, TableEntry); - -#if ACPI_MACHINE_WIDTH == 32 - if (Address64 > ACPI_UINT32_MAX) - { - /* Will truncate 64-bit address to 32 bits, issue warning */ - - ACPI_WARNING ((AE_INFO, - "64-bit Physical Address in XSDT is too large (%8.8X%8.8X), truncating", - ACPI_FORMAT_UINT64 (Address64))); - } -#endif - return ((ACPI_PHYSICAL_ADDRESS) (Address64)); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiTbParseRootTable - * - * PARAMETERS: Rsdp - Pointer to the RSDP - * Flags - Flags - * - * RETURN: Status - * - * DESCRIPTION: This function is called to parse the Root System Description - * Table (RSDT or XSDT) - * - * NOTE: Tables are mapped (not copied) for efficiency. The FACS must - * be mapped and cannot be copied because it contains the actual - * memory location of the ACPI Global Lock. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTbParseRootTable ( - ACPI_PHYSICAL_ADDRESS RsdpAddress, - UINT8 Flags) -{ - ACPI_TABLE_RSDP *Rsdp; - ACPI_NATIVE_UINT TableEntrySize; - ACPI_NATIVE_UINT i; - UINT32 TableCount; - ACPI_TABLE_HEADER *Table; - ACPI_PHYSICAL_ADDRESS Address; - UINT32 Length; - UINT8 *TableEntry; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (TbParseRootTable); - - - /* - * Map the entire RSDP and extract the address of the RSDT or XSDT - */ - Rsdp = AcpiOsMapMemory (RsdpAddress, sizeof (ACPI_TABLE_RSDP)); - if (!Rsdp) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - AcpiTbPrintTableHeader (RsdpAddress, ACPI_CAST_PTR (ACPI_TABLE_HEADER, Rsdp)); - - /* Differentiate between RSDT and XSDT root tables */ - - if (Rsdp->Revision > 1 && Rsdp->XsdtPhysicalAddress) - { - /* - * Root table is an XSDT (64-bit physical addresses). We must use the - * XSDT if the revision is > 1 and the XSDT pointer is present, as per - * the ACPI specification. - */ - Address = (ACPI_PHYSICAL_ADDRESS) Rsdp->XsdtPhysicalAddress; - TableEntrySize = sizeof (UINT64); - } - else - { - /* Root table is an RSDT (32-bit physical addresses) */ - - Address = (ACPI_PHYSICAL_ADDRESS) Rsdp->RsdtPhysicalAddress; - TableEntrySize = sizeof (UINT32); - } - - /* - * It is not possible to map more than one entry in some environments, - * so unmap the RSDP here before mapping other tables - */ - AcpiOsUnmapMemory (Rsdp, sizeof (ACPI_TABLE_RSDP)); - - - /* Map the RSDT/XSDT table header to get the full table length */ - - Table = AcpiOsMapMemory (Address, sizeof (ACPI_TABLE_HEADER)); - if (!Table) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - AcpiTbPrintTableHeader (Address, Table); - - /* Get the length of the full table, verify length and map entire table */ - - Length = Table->Length; - AcpiOsUnmapMemory (Table, sizeof (ACPI_TABLE_HEADER)); - - if (Length < sizeof (ACPI_TABLE_HEADER)) - { - ACPI_ERROR ((AE_INFO, "Invalid length 0x%X in RSDT/XSDT", Length)); - return_ACPI_STATUS (AE_INVALID_TABLE_LENGTH); - } - - Table = AcpiOsMapMemory (Address, Length); - if (!Table) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Validate the root table checksum */ - - Status = AcpiTbVerifyChecksum (Table, Length); - if (ACPI_FAILURE (Status)) - { - AcpiOsUnmapMemory (Table, Length); - return_ACPI_STATUS (Status); - } - - /* Calculate the number of tables described in the root table */ - - TableCount = (UINT32) ((Table->Length - sizeof (ACPI_TABLE_HEADER)) / TableEntrySize); - - /* - * First two entries in the table array are reserved for the DSDT and FACS, - * which are not actually present in the RSDT/XSDT - they come from the FADT - */ - TableEntry = ACPI_CAST_PTR (UINT8, Table) + sizeof (ACPI_TABLE_HEADER); - AcpiGbl_RootTableList.Count = 2; - - /* - * Initialize the root table array from the RSDT/XSDT - */ - for (i = 0; i < TableCount; i++) - { - if (AcpiGbl_RootTableList.Count >= AcpiGbl_RootTableList.Size) - { - /* There is no more room in the root table array, attempt resize */ - - Status = AcpiTbResizeRootTableList (); - if (ACPI_FAILURE (Status)) - { - ACPI_WARNING ((AE_INFO, "Truncating %u table entries!", - (unsigned) (AcpiGbl_RootTableList.Size - AcpiGbl_RootTableList.Count))); - break; - } - } - - /* Get the table physical address (32-bit for RSDT, 64-bit for XSDT) */ - - AcpiGbl_RootTableList.Tables[AcpiGbl_RootTableList.Count].Address = - AcpiTbGetRootTableEntry (TableEntry, TableEntrySize); - - TableEntry += TableEntrySize; - AcpiGbl_RootTableList.Count++; - } - - /* - * It is not possible to map more than one entry in some environments, - * so unmap the root table here before mapping other tables - */ - AcpiOsUnmapMemory (Table, Length); - - /* - * Complete the initialization of the root table array by examining - * the header of each table - */ - for (i = 2; i < AcpiGbl_RootTableList.Count; i++) - { - AcpiTbInstallTable (AcpiGbl_RootTableList.Tables[i].Address, - Flags, NULL, i); - - /* Special case for FADT - get the DSDT and FACS */ - - if (ACPI_COMPARE_NAME ( - &AcpiGbl_RootTableList.Tables[i].Signature, ACPI_SIG_FADT)) - { - AcpiTbParseFadt (i, Flags); - } - } - - return_ACPI_STATUS (AE_OK); -} diff --git a/sys/contrib/dev/acpica-unix-20061109/tables/tbxface.c b/sys/contrib/dev/acpica-unix-20061109/tables/tbxface.c deleted file mode 100644 index 4694529e43..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/tables/tbxface.c +++ /dev/null @@ -1,662 +0,0 @@ -/****************************************************************************** - * - * Module Name: tbxface - Public interfaces to the ACPI subsystem - * ACPI table oriented interfaces - * $Revision: 1.84 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __TBXFACE_C__ - -#include "acpi.h" -#include "acnamesp.h" -#include "actables.h" - -#define _COMPONENT ACPI_TABLES - ACPI_MODULE_NAME ("tbxface") - -/* Local prototypes */ - -static ACPI_STATUS -AcpiTbLoadNamespace ( - void); - - -/******************************************************************************* - * - * FUNCTION: AcpiAllocateRootTable - * - * PARAMETERS: InitialTableCount - Size of InitialTableArray, in number of - * ACPI_TABLE_DESC structures - * - * RETURN: Status - * - * DESCRIPTION: Allocate a root table array. Used by iASL compiler and - * AcpiInitializeTables. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiAllocateRootTable ( - UINT32 InitialTableCount) -{ - - AcpiGbl_RootTableList.Size = InitialTableCount; - AcpiGbl_RootTableList.Flags = ACPI_ROOT_ALLOW_RESIZE; - - return (AcpiTbResizeRootTableList ()); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiInitializeTables - * - * PARAMETERS: InitialTableArray - Pointer to an array of pre-allocated - * ACPI_TABLE_DESC structures. If NULL, the - * array is dynamically allocated. - * InitialTableCount - Size of InitialTableArray, in number of - * ACPI_TABLE_DESC structures - * AllowRealloc - Flag to tell Table Manager if resize of - * pre-allocated array is allowed. Ignored - * if InitialTableArray is NULL. - * - * RETURN: Status - * - * DESCRIPTION: Initialize the table manager, get the RSDP and RSDT/XSDT. - * - * NOTE: Allows static allocation of the initial table array in order - * to avoid the use of dynamic memory in confined environments - * such as the kernel boot sequence where it may not be available. - * - * If the host OS memory managers are initialized, use NULL for - * InitialTableArray, and the table will be dynamically allocated. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiInitializeTables ( - ACPI_TABLE_DESC *InitialTableArray, - UINT32 InitialTableCount, - BOOLEAN AllowResize) -{ - ACPI_PHYSICAL_ADDRESS RsdpAddress; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (AcpiInitializeTables); - - - /* - * Set up the Root Table Array - * Allocate the table array if requested - */ - if (!InitialTableArray) - { - Status = AcpiAllocateRootTable (InitialTableCount); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - else - { - /* Root Table Array has been statically allocated by the host */ - - ACPI_MEMSET (InitialTableArray, 0, - InitialTableCount * sizeof (ACPI_TABLE_DESC)); - - AcpiGbl_RootTableList.Tables = InitialTableArray; - AcpiGbl_RootTableList.Size = InitialTableCount; - AcpiGbl_RootTableList.Flags = ACPI_ROOT_ORIGIN_UNKNOWN; - if (AllowResize) - { - AcpiGbl_RootTableList.Flags |= ACPI_ROOT_ALLOW_RESIZE; - } - } - - /* Get the address of the RSDP */ - - RsdpAddress = AcpiOsGetRootPointer (); - if (!RsdpAddress) - { - return_ACPI_STATUS (AE_NOT_FOUND); - } - - /* - * Get the root table (RSDT or XSDT) and extract all entries to the local - * Root Table Array. This array contains the information of the RSDT/XSDT - * in a common, more useable format. - */ - Status = AcpiTbParseRootTable (RsdpAddress, ACPI_TABLE_ORIGIN_MAPPED); - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiInitializeTables) - - -/******************************************************************************* - * - * FUNCTION: AcpiReallocateRootTable - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Reallocate Root Table List into dynamic memory. Copies the - * root list from the previously provided scratch area. Should - * be called once dynamic memory allocation is available in the - * kernel - * - ******************************************************************************/ - -ACPI_STATUS -AcpiReallocateRootTable ( - void) -{ - ACPI_TABLE_DESC *Tables; - ACPI_SIZE NewSize; - - - ACPI_FUNCTION_TRACE (AcpiReallocateRootTable); - - - /* - * Only reallocate the root table if the host provided a static buffer - * for the table array in the call to AcpiInitializeTables. - */ - if (AcpiGbl_RootTableList.Flags & ACPI_ROOT_ORIGIN_ALLOCATED) - { - return_ACPI_STATUS (AE_SUPPORT); - } - - NewSize = (AcpiGbl_RootTableList.Count + ACPI_ROOT_TABLE_SIZE_INCREMENT) * - sizeof (ACPI_TABLE_DESC); - - /* Create new array and copy the old array */ - - Tables = ACPI_ALLOCATE_ZEROED (NewSize); - if (!Tables) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - ACPI_MEMCPY (Tables, AcpiGbl_RootTableList.Tables, NewSize); - - AcpiGbl_RootTableList.Size = AcpiGbl_RootTableList.Count; - AcpiGbl_RootTableList.Tables = Tables; - AcpiGbl_RootTableList.Flags = - ACPI_ROOT_ORIGIN_ALLOCATED | ACPI_ROOT_ALLOW_RESIZE; - - return_ACPI_STATUS (AE_OK); -} - -ACPI_EXPORT_SYMBOL (AcpiReallocateRootTable) - - -/****************************************************************************** - * - * FUNCTION: AcpiGetTableHeader - * - * PARAMETERS: Signature - ACPI signature of needed table - * Instance - Which instance (for SSDTs) - * OutTableHeader - The pointer to the table header to fill - * - * RETURN: Status and pointer to mapped table header - * - * DESCRIPTION: Finds an ACPI table header. - * - * NOTE: Caller is responsible in unmapping the header with - * AcpiOsUnmapMemory - * - *****************************************************************************/ - -ACPI_STATUS -AcpiGetTableHeader ( - char *Signature, - ACPI_NATIVE_UINT Instance, - ACPI_TABLE_HEADER *OutTableHeader) -{ - ACPI_NATIVE_UINT i; - ACPI_NATIVE_UINT j; - ACPI_TABLE_HEADER *Header; - - - /* Parameter validation */ - - if (!Signature || !OutTableHeader) - { - return (AE_BAD_PARAMETER); - } - - /* - * Walk the root table list - */ - for (i = 0, j = 0; i < AcpiGbl_RootTableList.Count; i++) - { - if (!ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature), - Signature)) - { - continue; - } - - if (++j < Instance) - { - continue; - } - - if (!AcpiGbl_RootTableList.Tables[i].Pointer) - { - if ((AcpiGbl_RootTableList.Tables[i].Flags & ACPI_TABLE_ORIGIN_MASK) == - ACPI_TABLE_ORIGIN_MAPPED) - { - Header = AcpiOsMapMemory (AcpiGbl_RootTableList.Tables[i].Address, - sizeof (ACPI_TABLE_HEADER)); - if (!Header) - { - return AE_NO_MEMORY; - } - - ACPI_MEMCPY (OutTableHeader, Header, sizeof(ACPI_TABLE_HEADER)); - AcpiOsUnmapMemory (Header, sizeof(ACPI_TABLE_HEADER)); - } - - else - { - return AE_NOT_FOUND; - } - } - - else - { - ACPI_MEMCPY (OutTableHeader, AcpiGbl_RootTableList.Tables[i].Pointer, - sizeof(ACPI_TABLE_HEADER)); - } - - return (AE_OK); - } - - return (AE_NOT_FOUND); -} - -ACPI_EXPORT_SYMBOL (AcpiGetTableHeader) - - -/****************************************************************************** - * - * FUNCTION: AcpiGetTable - * - * PARAMETERS: Signature - ACPI signature of needed table - * Instance - Which instance (for SSDTs) - * OutTable - Where the pointer to the table is returned - * - * RETURN: Status and pointer to table - * - * DESCRIPTION: Finds and verifies an ACPI table. - * - *****************************************************************************/ - -ACPI_STATUS -AcpiGetTable ( - char *Signature, - ACPI_NATIVE_UINT Instance, - ACPI_TABLE_HEADER **OutTable) -{ - ACPI_NATIVE_UINT i; - ACPI_NATIVE_UINT j; - ACPI_STATUS Status; - - - /* Parameter validation */ - - if (!Signature || !OutTable) - { - return (AE_BAD_PARAMETER); - } - - /* - * Walk the root table list - */ - for (i = 0, j = 0; i < AcpiGbl_RootTableList.Count; i++) - { - if (!ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature), - Signature)) - { - continue; - } - - if (++j < Instance) - { - continue; - } - - Status = AcpiTbVerifyTable (&AcpiGbl_RootTableList.Tables[i]); - if (ACPI_SUCCESS (Status)) - { - *OutTable = AcpiGbl_RootTableList.Tables[i].Pointer; - } - - return (Status); - } - - return (AE_NOT_FOUND); -} - -ACPI_EXPORT_SYMBOL (AcpiGetTable) - - -/******************************************************************************* - * - * FUNCTION: AcpiGetTableByIndex - * - * PARAMETERS: TableIndex - Table index - * Table - Where the pointer to the table is returned - * - * RETURN: Status and pointer to the table - * - * DESCRIPTION: Obtain a table by an index into the global table list. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetTableByIndex ( - ACPI_NATIVE_UINT TableIndex, - ACPI_TABLE_HEADER **Table) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (AcpiGetTableByIndex); - - - /* Parameter validation */ - - if (!Table) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); - - /* Validate index */ - - if (TableIndex >= AcpiGbl_RootTableList.Count) - { - (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - if (!AcpiGbl_RootTableList.Tables[TableIndex].Pointer) - { - /* Table is not mapped, map it */ - - Status = AcpiTbVerifyTable (&AcpiGbl_RootTableList.Tables[TableIndex]); - if (ACPI_FAILURE (Status)) - { - (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); - return_ACPI_STATUS (Status); - } - } - - *Table = AcpiGbl_RootTableList.Tables[TableIndex].Pointer; - (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); - return_ACPI_STATUS (AE_OK); -} - -ACPI_EXPORT_SYMBOL (AcpiGetTableByIndex) - - -/******************************************************************************* - * - * FUNCTION: AcpiTbLoadNamespace - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Load the namespace from the DSDT and all SSDTs/PSDTs found in - * the RSDT/XSDT. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiTbLoadNamespace ( - void) -{ - ACPI_STATUS Status; - ACPI_TABLE_HEADER *Table; - ACPI_NATIVE_UINT i; - - - ACPI_FUNCTION_TRACE (TbLoadNamespace); - - - (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); - - /* - * Load the namespace. The DSDT is required, but any SSDT and PSDT tables - * are optional. - */ - if (!AcpiGbl_RootTableList.Count || - !ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Signature), - ACPI_SIG_DSDT) || - ACPI_FAILURE (AcpiTbVerifyTable(&AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT]))) - { - Status = AE_NO_ACPI_TABLES; - goto UnlockAndExit; - } - - /* - * Find DSDT table - */ - Status = AcpiOsTableOverride ( - AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Pointer, &Table); - if (ACPI_SUCCESS (Status) && Table) - { - /* - * DSDT table has been found - */ - AcpiTbDeleteTable (ACPI_TABLE_INDEX_DSDT); - AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Pointer = Table; - AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Length = Table->Length; - AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Flags = ACPI_TABLE_ORIGIN_UNKNOWN; - - ACPI_INFO ((AE_INFO, "Table DSDT replaced by host OS")); - AcpiTbPrintTableHeader (0, Table); - } - - Status = AcpiTbVerifyTable (&AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT]); - if (ACPI_FAILURE (Status)) - { - /* A valid DSDT is required */ - - Status = AE_NO_ACPI_TABLES; - goto UnlockAndExit; - } - - (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); - - /* - * Load and parse tables. - */ - Status = AcpiNsLoadTable (ACPI_TABLE_INDEX_DSDT, AcpiGbl_RootNode); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Load any SSDT or PSDT tables. Note: Loop leaves tables locked - */ - (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); - for (i = 0; i < AcpiGbl_RootTableList.Count; ++i) - { - if ((!ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature), - ACPI_SIG_SSDT) && - !ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature), - ACPI_SIG_PSDT)) || - ACPI_FAILURE (AcpiTbVerifyTable (&AcpiGbl_RootTableList.Tables[i]))) - { - continue; - } - - /* Ignore errors while loading tables, get as many as possible */ - - (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); - (void) AcpiNsLoadTable (i, AcpiGbl_RootNode); - (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "ACPI Tables successfully acquired\n")); - -UnlockAndExit: - (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiLoadTables - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Load the ACPI tables from the RSDT/XSDT - * - ******************************************************************************/ - -ACPI_STATUS -AcpiLoadTables ( - void) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (AcpiLoadTables); - - - /* - * Load the namespace from the tables - */ - Status = AcpiTbLoadNamespace (); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, "While loading namespace from ACPI tables")); - } - - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiLoadTables) - diff --git a/sys/contrib/dev/acpica-unix-20061109/tables/tbxfroot.c b/sys/contrib/dev/acpica-unix-20061109/tables/tbxfroot.c deleted file mode 100644 index b656d3d7a3..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/tables/tbxfroot.c +++ /dev/null @@ -1,374 +0,0 @@ -/****************************************************************************** - * - * Module Name: tbxfroot - Find the root ACPI table (RSDT) - * $Revision: 1.103 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __TBXFROOT_C__ - -#include "acpi.h" -#include "actables.h" - - -#define _COMPONENT ACPI_TABLES - ACPI_MODULE_NAME ("tbxfroot") - -/* Local prototypes */ - -static UINT8 * -AcpiTbScanMemoryForRsdp ( - UINT8 *StartAddress, - UINT32 Length); - -static ACPI_STATUS -AcpiTbValidateRsdp ( - ACPI_TABLE_RSDP *Rsdp); - - -/******************************************************************************* - * - * FUNCTION: AcpiTbValidateRsdp - * - * PARAMETERS: Rsdp - Pointer to unvalidated RSDP - * - * RETURN: Status - * - * DESCRIPTION: Validate the RSDP (ptr) - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiTbValidateRsdp ( - ACPI_TABLE_RSDP *Rsdp) -{ - ACPI_FUNCTION_ENTRY (); - - - /* - * The signature and checksum must both be correct - * - * Note: Sometimes there exists more than one RSDP in memory; the valid - * RSDP has a valid checksum, all others have an invalid checksum. - */ - if (ACPI_STRNCMP ((char *) Rsdp, ACPI_SIG_RSDP, sizeof (ACPI_SIG_RSDP)-1) != 0) - { - /* Nope, BAD Signature */ - - return (AE_BAD_SIGNATURE); - } - - /* Check the standard checksum */ - - if (AcpiTbChecksum ((UINT8 *) Rsdp, ACPI_RSDP_CHECKSUM_LENGTH) != 0) - { - return (AE_BAD_CHECKSUM); - } - - /* Check extended checksum if table version >= 2 */ - - if ((Rsdp->Revision >= 2) && - (AcpiTbChecksum ((UINT8 *) Rsdp, ACPI_RSDP_XCHECKSUM_LENGTH) != 0)) - { - return (AE_BAD_CHECKSUM); - } - - return (AE_OK); -} - - -#if ACPI_MACHINE_WIDTH != 16 - -/******************************************************************************* - * - * FUNCTION: AcpiTbFindRsdp - * - * PARAMETERS: TableAddress - Where the table pointer is returned - * - * RETURN: Status, RSDP physical address - * - * DESCRIPTION: Search lower 1Mbyte of memory for the root system descriptor - * pointer structure. If it is found, set *RSDP to point to it. - * - * NOTE1: The RSDP must be either in the first 1K of the Extended - * BIOS Data Area or between E0000 and FFFFF (From ACPI Spec.) - * Only a 32-bit physical address is necessary. - * - * NOTE2: This function is always available, regardless of the - * initialization state of the rest of ACPI. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiFindRootPointer ( - ACPI_NATIVE_UINT *TableAddress) -{ - UINT8 *TablePtr; - UINT8 *MemRover; - UINT32 PhysicalAddress; - - - ACPI_FUNCTION_TRACE (AcpiFindRootPointer); - - - /* 1a) Get the location of the Extended BIOS Data Area (EBDA) */ - - TablePtr = AcpiOsMapMemory ( - (ACPI_PHYSICAL_ADDRESS) ACPI_EBDA_PTR_LOCATION, - ACPI_EBDA_PTR_LENGTH); - if (!TablePtr) - { - ACPI_ERROR ((AE_INFO, - "Could not map memory at %8.8X for length %X", - ACPI_EBDA_PTR_LOCATION, ACPI_EBDA_PTR_LENGTH)); - - return_ACPI_STATUS (AE_NO_MEMORY); - } - - ACPI_MOVE_16_TO_32 (&PhysicalAddress, TablePtr); - - /* Convert segment part to physical address */ - - PhysicalAddress <<= 4; - AcpiOsUnmapMemory (TablePtr, ACPI_EBDA_PTR_LENGTH); - - /* EBDA present? */ - - if (PhysicalAddress > 0x400) - { - /* - * 1b) Search EBDA paragraphs (EBDA is required to be a - * minimum of 1K length) - */ - TablePtr = AcpiOsMapMemory ( - (ACPI_NATIVE_UINT) PhysicalAddress, - ACPI_EBDA_WINDOW_SIZE); - if (!TablePtr) - { - ACPI_ERROR ((AE_INFO, - "Could not map memory at %8.8X for length %X", - PhysicalAddress, ACPI_EBDA_WINDOW_SIZE)); - - return_ACPI_STATUS (AE_NO_MEMORY); - } - - MemRover = AcpiTbScanMemoryForRsdp (TablePtr, ACPI_EBDA_WINDOW_SIZE); - AcpiOsUnmapMemory (TablePtr, ACPI_EBDA_WINDOW_SIZE); - - if (MemRover) - { - /* Return the physical address */ - - PhysicalAddress += (UINT32) ACPI_PTR_DIFF (MemRover, TablePtr); - - *TableAddress = PhysicalAddress; - return_ACPI_STATUS (AE_OK); - } - } - - /* - * 2) Search upper memory: 16-byte boundaries in E0000h-FFFFFh - */ - TablePtr = AcpiOsMapMemory ( - (ACPI_PHYSICAL_ADDRESS) ACPI_HI_RSDP_WINDOW_BASE, - ACPI_HI_RSDP_WINDOW_SIZE); - - if (!TablePtr) - { - ACPI_ERROR ((AE_INFO, - "Could not map memory at %8.8X for length %X", - ACPI_HI_RSDP_WINDOW_BASE, ACPI_HI_RSDP_WINDOW_SIZE)); - - return_ACPI_STATUS (AE_NO_MEMORY); - } - - MemRover = AcpiTbScanMemoryForRsdp (TablePtr, ACPI_HI_RSDP_WINDOW_SIZE); - AcpiOsUnmapMemory (TablePtr, ACPI_HI_RSDP_WINDOW_SIZE); - - if (MemRover) - { - /* Return the physical address */ - - PhysicalAddress = (UINT32) - (ACPI_HI_RSDP_WINDOW_BASE + ACPI_PTR_DIFF (MemRover, TablePtr)); - - *TableAddress = PhysicalAddress; - return_ACPI_STATUS (AE_OK); - } - - /* A valid RSDP was not found */ - - ACPI_ERROR ((AE_INFO, "A valid RSDP was not found")); - return_ACPI_STATUS (AE_NOT_FOUND); -} - -ACPI_EXPORT_SYMBOL (AcpiFindRootPointer) - - -/******************************************************************************* - * - * FUNCTION: AcpiTbScanMemoryForRsdp - * - * PARAMETERS: StartAddress - Starting pointer for search - * Length - Maximum length to search - * - * RETURN: Pointer to the RSDP if found, otherwise NULL. - * - * DESCRIPTION: Search a block of memory for the RSDP signature - * - ******************************************************************************/ - -static UINT8 * -AcpiTbScanMemoryForRsdp ( - UINT8 *StartAddress, - UINT32 Length) -{ - ACPI_STATUS Status; - UINT8 *MemRover; - UINT8 *EndAddress; - - - ACPI_FUNCTION_TRACE (TbScanMemoryForRsdp); - - - EndAddress = StartAddress + Length; - - /* Search from given start address for the requested length */ - - for (MemRover = StartAddress; MemRover < EndAddress; - MemRover += ACPI_RSDP_SCAN_STEP) - { - /* The RSDP signature and checksum must both be correct */ - - Status = AcpiTbValidateRsdp (ACPI_CAST_PTR (ACPI_TABLE_RSDP, MemRover)); - if (ACPI_SUCCESS (Status)) - { - /* Sig and checksum valid, we have found a real RSDP */ - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "RSDP located at physical address %p\n", MemRover)); - return_PTR (MemRover); - } - - /* No sig match or bad checksum, keep searching */ - } - - /* Searched entire block, no RSDP was found */ - - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Searched entire block from %p, valid RSDP was not found\n", - StartAddress)); - return_PTR (NULL); -} - -#endif - diff --git a/sys/contrib/dev/acpica-unix-20061109/tools/acpiexec/Makefile b/sys/contrib/dev/acpica-unix-20061109/tools/acpiexec/Makefile deleted file mode 100644 index 6641b7923c..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/tools/acpiexec/Makefile +++ /dev/null @@ -1,142 +0,0 @@ -PROG= acpiexec -SRCS= aeexec.c aemain.c \ - ../../common/getopt.c \ - ../../debugger/dbcmds.c \ - ../../debugger/dbdisply.c \ - ../../debugger/dbexec.c \ - ../../debugger/dbfileio.c \ - ../../debugger/dbhistry.c \ - ../../debugger/dbinput.c \ - ../../debugger/dbstats.c \ - ../../debugger/dbutils.c \ - ../../debugger/dbxface.c \ - ../../disassembler/dmbuffer.c \ - ../../disassembler/dmnames.c \ - ../../disassembler/dmobject.c \ - ../../disassembler/dmopcode.c \ - ../../disassembler/dmresrc.c \ - ../../disassembler/dmresrcl.c \ - ../../disassembler/dmresrcs.c \ - ../../disassembler/dmutils.c \ - ../../disassembler/dmwalk.c \ - ../../events/evevent.c \ - ../../events/evgpeblk.c \ - ../../events/evgpe.c \ - ../../events/evmisc.c \ - ../../events/evregion.c \ - ../../events/evrgnini.c \ - ../../events/evsci.c \ - ../../events/evxface.c \ - ../../events/evxfevnt.c \ - ../../events/evxfregn.c \ - ../../hardware/hwacpi.c \ - ../../hardware/hwgpe.c \ - ../../hardware/hwregs.c \ - ../../hardware/hwsleep.c \ - ../../interpreter/dispatcher/dsfield.c \ - ../../interpreter/dispatcher/dsinit.c \ - ../../interpreter/dispatcher/dsmethod.c \ - ../../interpreter/dispatcher/dsmthdat.c \ - ../../interpreter/dispatcher/dsobject.c \ - ../../interpreter/dispatcher/dsopcode.c \ - ../../interpreter/dispatcher/dsutils.c \ - ../../interpreter/dispatcher/dswexec.c \ - ../../interpreter/dispatcher/dswload.c \ - ../../interpreter/dispatcher/dswscope.c \ - ../../interpreter/dispatcher/dswstate.c \ - ../../interpreter/executer/exconfig.c \ - ../../interpreter/executer/exconvrt.c \ - ../../interpreter/executer/excreate.c \ - ../../interpreter/executer/exdump.c \ - ../../interpreter/executer/exfield.c \ - ../../interpreter/executer/exfldio.c \ - ../../interpreter/executer/exmisc.c \ - ../../interpreter/executer/exmutex.c \ - ../../interpreter/executer/exnames.c \ - ../../interpreter/executer/exoparg1.c \ - ../../interpreter/executer/exoparg2.c \ - ../../interpreter/executer/exoparg3.c \ - ../../interpreter/executer/exoparg6.c \ - ../../interpreter/executer/exprep.c \ - ../../interpreter/executer/exregion.c \ - ../../interpreter/executer/exresnte.c \ - ../../interpreter/executer/exresolv.c \ - ../../interpreter/executer/exresop.c \ - ../../interpreter/executer/exstore.c \ - ../../interpreter/executer/exstoren.c \ - ../../interpreter/executer/exstorob.c \ - ../../interpreter/executer/exsystem.c \ - ../../interpreter/executer/exutils.c \ - ../../interpreter/parser/psargs.c \ - ../../interpreter/parser/psloop.c \ - ../../interpreter/parser/psopcode.c \ - ../../interpreter/parser/psparse.c \ - ../../interpreter/parser/psscope.c \ - ../../interpreter/parser/pstree.c \ - ../../interpreter/parser/psutils.c \ - ../../interpreter/parser/pswalk.c \ - ../../interpreter/parser/psxface.c \ - ../../namespace/nsaccess.c \ - ../../namespace/nsalloc.c \ - ../../namespace/nsdump.c \ - ../../namespace/nsdumpdv.c \ - ../../namespace/nseval.c \ - ../../namespace/nsinit.c \ - ../../namespace/nsload.c \ - ../../namespace/nsnames.c \ - ../../namespace/nsobject.c \ - ../../namespace/nsparse.c \ - ../../namespace/nssearch.c \ - ../../namespace/nsutils.c \ - ../../namespace/nswalk.c \ - ../../namespace/nsxfeval.c \ - ../../namespace/nsxfname.c \ - ../../namespace/nsxfobj.c \ - ../../resources/rsaddr.c \ - ../../resources/rscalc.c \ - ../../resources/rscreate.c \ - ../../resources/rsdump.c \ - ../../resources/rsio.c \ - ../../resources/rsinfo.c \ - ../../resources/rsirq.c \ - ../../resources/rslist.c \ - ../../resources/rsmemory.c \ - ../../resources/rsmisc.c \ - ../../resources/rsutils.c \ - ../../resources/rsxface.c \ - ../../tables/tbfadt.c \ - ../../tables/tbfind.c \ - ../../tables/tbinstal.c \ - ../../tables/tbutils.c \ - ../../tables/tbxface.c \ - ../../tables/tbxfroot.c \ - ../../utilities/utalloc.c \ - ../../utilities/utcache.c \ - ../../utilities/utcopy.c \ - ../../utilities/utdebug.c \ - ../../utilities/utdelete.c \ - ../../utilities/uteval.c \ - ../../utilities/utglobal.c \ - ../../utilities/utinit.c \ - ../../utilities/utmath.c \ - ../../utilities/utmisc.c \ - ../../utilities/utmutex.c \ - ../../utilities/utobject.c \ - ../../utilities/utresrc.c \ - ../../utilities/utstate.c \ - ../../utilities/uttrack.c \ - ../../utilities/utxface.c \ - ../../osunixxf.c - - -CFLAGS+= -Wall -g -D_LINUX -DNDEBUG -D_CONSOLE -DACPI_EXEC_APP -D_MULTI_THREADED -Wstrict-prototypes -I../../include - - -acpiexec : $(patsubst %.c,%.o, $(SRCS)) - $(CC) $(LDFLAGS) $(patsubst %.c,%.o, $(SRCS)) -o $(PROG) - -CLEANFILES= $(PROG) - -clean : - rm -f $(CLEANFILES) $(patsubst %.c,%.o, $(SRCS)) - diff --git a/sys/contrib/dev/acpica-unix-20061109/tools/acpiexec/aecommon.h b/sys/contrib/dev/acpica-unix-20061109/tools/acpiexec/aecommon.h deleted file mode 100644 index ff7c5c45fc..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/tools/acpiexec/aecommon.h +++ /dev/null @@ -1,243 +0,0 @@ -/****************************************************************************** - * - * Module Name: aecommon - common include for the AcpiExec utility - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#ifndef _AECOMMON -#define _AECOMMON - -#ifdef _MSC_VER /* disable some level-4 warnings */ -#pragma warning(disable:4100) /* warning C4100: unreferenced formal parameter */ -#endif - -#include -#include -#include -#include - -#include "acpi.h" -#include "acparser.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acdebug.h" -#include "actables.h" -#include "acinterp.h" -#include "acapps.h" - -extern FILE *AcpiGbl_DebugFile; -extern BOOLEAN AcpiGbl_IgnoreErrors; - -/* - * Debug Regions - */ -typedef struct Region -{ - ACPI_PHYSICAL_ADDRESS Address; - UINT32 Length; - void *Buffer; - void *NextRegion; - UINT8 SpaceId; - -} REGION; - -typedef struct DebugRegions -{ - UINT32 NumberOfRegions; - REGION *RegionList; - -} DEBUG_REGIONS; - - -/* - * Pointer overlay for 16-bit code - */ -typedef union ptr_ovl -{ - void *ptr; - UINT32 dword; - struct - { - UINT16 offset; - UINT16 base; - } ovl; - -} PTR_OVL; - - -#define GET_SEGMENT(ptr) ((UINT16)(_segment)(ptr)) -#define GET_OFFSET(ptr) ((UINT16)(UINT32) (ptr)) -#define GET_PHYSICAL_ADDRESS(ptr) (((((UINT32)GET_SEGMENT(ptr)) << 4)) + GET_OFFSET(ptr)) -#define PTR_OVL_BUILD_PTR(p,b,o) {p.ovl.base=b;p.ovl.offset=o;} - - -#define TEST_OUTPUT_LEVEL(lvl) if ((lvl) & OutputLevel) - -#define OSD_PRINT(lvl,fp) TEST_OUTPUT_LEVEL(lvl) {\ - AcpiOsPrintf PARAM_LIST(fp);} - -void __cdecl -AeCtrlCHandler ( - int Sig); - -ACPI_STATUS -AeBuildLocalTables ( - ACPI_TABLE_HEADER *UserTable); - -ACPI_STATUS -AeInstallTables ( - void); - -void -AeDumpNamespace ( - void); - -void -AeDumpObject ( - char *MethodName, - ACPI_BUFFER *ReturnObj); - -void -AeDumpBuffer ( - UINT32 Address); - -void -AeExecute ( - char *Name); - -void -AeSetScope ( - char *Name); - -void -AeCloseDebugFile ( - void); - -void -AeOpenDebugFile ( - char *Name); - -ACPI_STATUS -AeDisplayAllMethods ( - UINT32 DisplayCount); - -ACPI_STATUS -AeInstallHandlers ( - void); - -void -AeMiscellaneousTests ( - void); - - -#endif /* _AECOMMON */ - diff --git a/sys/contrib/dev/acpica-unix-20061109/tools/acpiexec/aeexec.c b/sys/contrib/dev/acpica-unix-20061109/tools/acpiexec/aeexec.c deleted file mode 100644 index bb4ae0deaa..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/tools/acpiexec/aeexec.c +++ /dev/null @@ -1,1122 +0,0 @@ -/****************************************************************************** - * - * Module Name: aeexec - Support routines for AcpiExec utility - * $Revision: 1.113 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "aecommon.h" - -#define _COMPONENT ACPI_TOOLS - ACPI_MODULE_NAME ("aeexec") - - -ACPI_PARSE_OBJECT *root; -UINT8 *AmlStart; -UINT32 AmlLength; -UINT8 *DsdtPtr; -UINT32 AcpiDsdtLength; - -DEBUG_REGIONS AeRegions; -ACPI_TABLE_RSDP LocalRsdp; - -/* - * Misc ACPI tables to be installed - */ -unsigned char Ssdt1Code[] = -{ - 0x53,0x53,0x44,0x54,0x30,0x00,0x00,0x00, /* 00000000 "SSDT0..." */ - 0x01,0xB8,0x49,0x6E,0x74,0x65,0x6C,0x00, /* 00000008 "..Intel." */ - 0x4D,0x61,0x6E,0x79,0x00,0x00,0x00,0x00, /* 00000010 "Many...." */ - 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ - 0x24,0x04,0x03,0x20,0x14,0x0B,0x5F,0x54, /* 00000020 "$.. .._T" */ - 0x39,0x38,0x00,0x70,0x0A,0x04,0x60,0xA4, /* 00000028 "98.p..`." */ -}; - -unsigned char Ssdt2Code[] = -{ - 0x53,0x53,0x44,0x54,0x30,0x00,0x00,0x00, /* 00000000 "SSDT0..." */ - 0x01,0xB7,0x49,0x6E,0x74,0x65,0x6C,0x00, /* 00000008 "..Intel." */ - 0x4D,0x61,0x6E,0x79,0x00,0x00,0x00,0x00, /* 00000010 "Many...." */ - 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ - 0x24,0x04,0x03,0x20,0x14,0x0B,0x5F,0x54, /* 00000020 "$.. .._T" */ - 0x39,0x39,0x00,0x70,0x0A,0x04,0x60,0xA4, /* 00000028 "99.p..`." */ -}; - -unsigned char Oem1Code[] = -{ - 0x4F,0x45,0x4D,0x31,0x38,0x00,0x00,0x00, /* 00000000 "OEM18..." */ - 0x01,0x4B,0x49,0x6E,0x74,0x65,0x6C,0x00, /* 00000008 ".KIntel." */ - 0x4D,0x61,0x6E,0x79,0x00,0x00,0x00,0x00, /* 00000010 "Many...." */ - 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ - 0x18,0x09,0x03,0x20,0x08,0x5F,0x58,0x54, /* 00000020 "... ._XT" */ - 0x32,0x0A,0x04,0x14,0x0C,0x5F,0x58,0x54, /* 00000028 "2...._XT" */ - 0x31,0x00,0x70,0x01,0x5F,0x58,0x54,0x32, /* 00000030 "1.p._XT2" */ -}; - -/* - * We need a local FADT so that the hardware subcomponent will function, - * even though the underlying OSD HW access functions don't do - * anything. - */ -ACPI_TABLE_RSDP LocalRSDP; -ACPI_TABLE_FADT LocalFADT; -ACPI_TABLE_FACS LocalFACS; -ACPI_TABLE_HEADER LocalDSDT; -ACPI_TABLE_HEADER LocalTEST; -ACPI_TABLE_HEADER LocalBADTABLE; - -ACPI_TABLE_RSDT *LocalRSDT; - -#define RSDT_TABLES 7 -#define RSDT_SIZE (sizeof (ACPI_TABLE_RSDT) + ((RSDT_TABLES -1) * sizeof (UINT32))) - -#define ACPI_MAX_INIT_TABLES (16) -static ACPI_TABLE_DESC Tables[ACPI_MAX_INIT_TABLES]; - -UINT32 SigintCount = 0; - -/****************************************************************************** - * - * FUNCTION: AeCtrlCHandler - * - * PARAMETERS: Sig - * - * RETURN: none - * - * DESCRIPTION: Control-C handler. Abort running control method if any. - * - *****************************************************************************/ - -void __cdecl -AeCtrlCHandler ( - int Sig) -{ - - signal (SIGINT, SIG_IGN); - SigintCount++; - - AcpiOsPrintf ("Caught a ctrl-c (#%d)\n\n", SigintCount); - - if (AcpiGbl_MethodExecuting) - { - AcpiGbl_AbortMethod = TRUE; - signal (SIGINT, AeCtrlCHandler); - - if (SigintCount < 10) - { - return; - } - } - - exit (0); -} - - -/****************************************************************************** - * - * FUNCTION: AeBuildLocalTables - * - * PARAMETERS: - * - * RETURN: Status - * - * DESCRIPTION: - * - *****************************************************************************/ - -ACPI_STATUS -AeBuildLocalTables ( - ACPI_TABLE_HEADER *UserTable) -{ - - /* Build an RSDT */ - - LocalRSDT = AcpiOsAllocate (RSDT_SIZE); - if (!LocalRSDT) - { - return AE_NO_MEMORY; - } - - ACPI_MEMSET (LocalRSDT, 0, RSDT_SIZE); - ACPI_STRNCPY (LocalRSDT->Header.Signature, ACPI_SIG_RSDT, 4); - LocalRSDT->Header.Length = RSDT_SIZE; - - LocalRSDT->TableOffsetEntry[0] = ACPI_PTR_TO_PHYSADDR (&LocalTEST); - LocalRSDT->TableOffsetEntry[1] = ACPI_PTR_TO_PHYSADDR (&LocalBADTABLE); - LocalRSDT->TableOffsetEntry[2] = ACPI_PTR_TO_PHYSADDR (&LocalFADT); - LocalRSDT->TableOffsetEntry[3] = ACPI_PTR_TO_PHYSADDR (&LocalTEST); /* Just a placeholder for a user SSDT */ - - /* Install two SSDTs to test multiple table support */ - - LocalRSDT->TableOffsetEntry[4] = ACPI_PTR_TO_PHYSADDR (&Ssdt1Code); - LocalRSDT->TableOffsetEntry[5] = ACPI_PTR_TO_PHYSADDR (&Ssdt2Code); - - /* Install the OEM1 table to test LoadTable */ - - LocalRSDT->TableOffsetEntry[6] = ACPI_PTR_TO_PHYSADDR (&Oem1Code); - - /* Build an RSDP */ - - ACPI_MEMSET (&LocalRSDP, 0, sizeof (ACPI_TABLE_RSDP)); - ACPI_MEMCPY (LocalRSDP.Signature, ACPI_SIG_RSDP, 8); - LocalRSDP.Revision = 1; - LocalRSDP.RsdtPhysicalAddress = ACPI_PTR_TO_PHYSADDR (LocalRSDT); - LocalRSDP.Length = sizeof (ACPI_TABLE_RSDT); - ACPI_MEMCPY (LocalRSDP.OemId, "I_TEST", 6); - - /* - * Examine the incoming user table. At this point, it has been verified - * to be either a DSDT, SSDT, or a PSDT, but they must be handled differently - */ - if (!ACPI_COMPARE_NAME (UserTable->Signature, ACPI_SIG_DSDT)) - { - /* Build a local DSDT because incoming table is an SSDT or PSDT */ - - ACPI_MEMSET (&LocalDSDT, 0, sizeof (ACPI_TABLE_HEADER)); - ACPI_STRNCPY (LocalDSDT.Signature, ACPI_SIG_DSDT, 4); - LocalDSDT.Revision = 1; - LocalDSDT.Length = sizeof (ACPI_TABLE_HEADER); - LocalDSDT.Checksum = (UINT8) -AcpiTbChecksum ((void *) &LocalDSDT, LocalDSDT.Length); - - /* Install incoming table (SSDT or PSDT) directly into the RSDT */ - - LocalRSDT->TableOffsetEntry[3] = ACPI_PTR_TO_PHYSADDR (UserTable); - } - - /* Set checksums for both RSDT and RSDP */ - - LocalRSDT->Header.Checksum = (UINT8) -AcpiTbChecksum ((void *) LocalRSDT, LocalRSDT->Header.Length); - LocalRSDP.Checksum = (UINT8) -AcpiTbChecksum ((void *) &LocalRSDP, ACPI_RSDP_CHECKSUM_LENGTH); - - /* Build a FADT so we can test the hardware/event init */ - - ACPI_MEMSET (&LocalFADT, 0, sizeof (ACPI_TABLE_FADT)); - ACPI_STRNCPY (LocalFADT.Header.Signature, ACPI_SIG_FADT, 4); - - LocalFADT.Facs = ACPI_PTR_TO_PHYSADDR (&LocalFACS); - if (!ACPI_COMPARE_NAME (UserTable->Signature, ACPI_SIG_DSDT)) - { - LocalFADT.Dsdt = ACPI_PTR_TO_PHYSADDR (&LocalDSDT); - } - else - { - LocalFADT.Dsdt = ACPI_PTR_TO_PHYSADDR (UserTable); - } - - /* Short (V1) FADT */ - - LocalFADT.Header.Revision = 1; - LocalFADT.Header.Length = ACPI_FADT_OFFSET (Flags); - LocalFADT.Gpe0BlockLength = 16; - LocalFADT.Gpe1BlockLength = 6; - LocalFADT.Gpe1Base = 96; - - LocalFADT.Pm1EventLength = 4; - LocalFADT.Pm1ControlLength = 4; - LocalFADT.PmTimerLength = 8; - - LocalFADT.Gpe0Block = 0x12340000; - LocalFADT.Gpe1Block = 0x56780000; - - LocalFADT.Pm1aEventBlock = 0x1aaa0000; - LocalFADT.Pm1bEventBlock = 0; - LocalFADT.PmTimerBlock = 0xA0; - LocalFADT.Pm1aControlBlock = 0xB0; - - /* Complete the FADT with the checksum */ - - LocalFADT.Header.Checksum = 0; - LocalFADT.Header.Checksum = (UINT8) -AcpiTbChecksum ((void *) &LocalFADT, LocalFADT.Header.Length); - - /* Build a FACS */ - - ACPI_MEMSET (&LocalFACS, 0, sizeof (ACPI_TABLE_FACS)); - ACPI_STRNCPY (LocalFACS.Signature, ACPI_SIG_FACS, 4); - LocalFACS.Length = sizeof (ACPI_TABLE_FACS); - LocalFACS.GlobalLock = 0x11AA0011; - - /* Build a fake table [TEST] so that we make sure that the CA core ignores it */ - - ACPI_MEMSET (&LocalTEST, 0, sizeof (ACPI_TABLE_HEADER)); - ACPI_STRNCPY (LocalTEST.Signature, "TEST", 4); - - LocalTEST.Revision = 1; - LocalTEST.Length = sizeof (ACPI_TABLE_HEADER); - LocalTEST.Checksum = (UINT8) -AcpiTbChecksum ((void *) &LocalTEST, LocalTEST.Length); - - /* Build a fake table with a bad signature [BAD!] so that we make sure that the CA core ignores it */ - - ACPI_MEMSET (&LocalBADTABLE, 0, sizeof (ACPI_TABLE_HEADER)); - ACPI_STRNCPY (LocalBADTABLE.Signature, "BAD!", 4); - - LocalBADTABLE.Revision = 1; - LocalBADTABLE.Length = sizeof (ACPI_TABLE_HEADER); - LocalBADTABLE.Checksum = (UINT8) -AcpiTbChecksum ((void *) &LocalBADTABLE, LocalBADTABLE.Length); - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AeInstallTables - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Install the various ACPI tables - * - *****************************************************************************/ - -ACPI_STATUS -AeInstallTables ( - void) -{ - ACPI_STATUS Status; - - Status = AcpiInitializeTables (Tables, ACPI_MAX_INIT_TABLES, TRUE); - Status = AcpiReallocateRootTable (); - Status = AcpiLoadTables (); - return (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AeLocalGetRootPointer - * - * PARAMETERS: Flags - not used - * Address - Where the root pointer is returned - * - * RETURN: Status - * - * DESCRIPTION: Return a local RSDP, used to dynamically load tables via the - * standard ACPI mechanism. - * - *****************************************************************************/ - -ACPI_PHYSICAL_ADDRESS -AeLocalGetRootPointer ( - void) -{ - - return ((ACPI_PHYSICAL_ADDRESS) &LocalRSDP); -} - - -/****************************************************************************** - * - * FUNCTION: AeRegionHandler - * - * PARAMETERS: Standard region handler parameters - * - * RETURN: Status - * - * DESCRIPTION: Test handler - Handles some dummy regions via memory that can - * be manipulated in Ring 3. - * - *****************************************************************************/ - -ACPI_STATUS -AeRegionHandler ( - UINT32 Function, - ACPI_PHYSICAL_ADDRESS Address, - UINT32 BitWidth, - ACPI_INTEGER *Value, - void *HandlerContext, - void *RegionContext) -{ - - ACPI_OPERAND_OBJECT *RegionObject = (ACPI_OPERAND_OBJECT*) RegionContext; - ACPI_PHYSICAL_ADDRESS BaseAddress; - ACPI_SIZE Length; - BOOLEAN BufferExists; - REGION *RegionElement; - void *BufferValue; - UINT32 ByteWidth; - UINT32 i; - UINT8 SpaceId; - - - ACPI_FUNCTION_NAME (AeRegionHandler); - - /* - * If the object is not a region, simply return - */ - if (RegionObject->Region.Type != ACPI_TYPE_REGION) - { - return AE_OK; - } - - /* - * Find the region's address space and length before searching - * the linked list. - */ - BaseAddress = RegionObject->Region.Address; - Length = (ACPI_SIZE) RegionObject->Region.Length; - SpaceId = RegionObject->Region.SpaceId; - - ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, "Operation Region request on %s at 0x%X\n", - AcpiUtGetRegionName (RegionObject->Region.SpaceId), - (UINT32) Address)); - - if (SpaceId == ACPI_ADR_SPACE_SMBUS) - { - Length = 0; - - switch (Function & ACPI_IO_MASK) - { - case ACPI_READ: - switch (Function >> 16) - { - case AML_FIELD_ATTRIB_SMB_QUICK: - case AML_FIELD_ATTRIB_SMB_SEND_RCV: - case AML_FIELD_ATTRIB_SMB_BYTE: - Length = 1; - break; - - case AML_FIELD_ATTRIB_SMB_WORD: - case AML_FIELD_ATTRIB_SMB_WORD_CALL: - Length = 2; - break; - - case AML_FIELD_ATTRIB_SMB_BLOCK: - case AML_FIELD_ATTRIB_SMB_BLOCK_CALL: - Length = 32; - break; - - default: - break; - } - break; - - case ACPI_WRITE: - switch (Function >> 16) - { - case AML_FIELD_ATTRIB_SMB_QUICK: - case AML_FIELD_ATTRIB_SMB_SEND_RCV: - case AML_FIELD_ATTRIB_SMB_BYTE: - case AML_FIELD_ATTRIB_SMB_WORD: - case AML_FIELD_ATTRIB_SMB_BLOCK: - Length = 0; - break; - - case AML_FIELD_ATTRIB_SMB_WORD_CALL: - Length = 2; - break; - - case AML_FIELD_ATTRIB_SMB_BLOCK_CALL: - Length = 32; - break; - - default: - break; - } - break; - - default: - break; - } - - for (i = 0; i < Length; i++) - { - ((UINT8 *) Value)[i+2] = (UINT8) (0xA0 + i); - } - - ((UINT8 *) Value)[0] = 0x7A; - ((UINT8 *) Value)[1] = (UINT8) Length; - - return AE_OK; - } - - /* - * Search through the linked list for this region's buffer - */ - BufferExists = FALSE; - RegionElement = AeRegions.RegionList; - - if (AeRegions.NumberOfRegions) - { - while (!BufferExists && RegionElement) - { - if (RegionElement->Address == BaseAddress && - RegionElement->Length == Length && - RegionElement->SpaceId == SpaceId) - { - BufferExists = TRUE; - } - else - { - RegionElement = RegionElement->NextRegion; - } - } - } - - /* - * If the Region buffer does not exist, create it now - */ - if (!BufferExists) - { - /* - * Do the memory allocations first - */ - RegionElement = AcpiOsAllocate (sizeof (REGION)); - if (!RegionElement) - { - return AE_NO_MEMORY; - } - - RegionElement->Buffer = AcpiOsAllocate (Length); - if (!RegionElement->Buffer) - { - AcpiOsFree (RegionElement); - return AE_NO_MEMORY; - } - - ACPI_MEMSET (RegionElement->Buffer, 0, Length); - RegionElement->Address = BaseAddress; - RegionElement->Length = Length; - RegionElement->SpaceId = SpaceId; - RegionElement->NextRegion = NULL; - - /* - * Increment the number of regions and put this one - * at the head of the list as it will probably get accessed - * more often anyway. - */ - AeRegions.NumberOfRegions += 1; - - if (NULL != AeRegions.RegionList) - { - RegionElement->NextRegion = AeRegions.RegionList->NextRegion; - } - - AeRegions.RegionList = RegionElement; - } - - /* - * Calculate the size of the memory copy - */ - ByteWidth = (BitWidth / 8); - - if (BitWidth % 8) - { - ByteWidth += 1; - } - - /* - * The buffer exists and is pointed to by RegionElement. - * We now need to verify the request is valid and perform the operation. - * - * NOTE: RegionElement->Length is in bytes, therefore it we compare against - * ByteWidth (see above) - */ - if (((ACPI_INTEGER) Address + ByteWidth) > - ((ACPI_INTEGER)(RegionElement->Address) + RegionElement->Length)) - { - ACPI_WARNING ((AE_INFO, - "Request on [%4.4s] is beyond region limit Req-%X+%X, Base=%X, Len-%X", - (RegionObject->Region.Node)->Name.Ascii, (UINT32) Address, - ByteWidth, (UINT32)(RegionElement->Address), - RegionElement->Length)); - - return AE_AML_REGION_LIMIT; - } - - /* - * Get BufferValue to point to the "address" in the buffer - */ - BufferValue = ((UINT8 *) RegionElement->Buffer + - ((ACPI_INTEGER) Address - (ACPI_INTEGER) RegionElement->Address)); - - /* - * Perform a read or write to the buffer space - */ - switch (Function) - { - case ACPI_READ: - /* - * Set the pointer Value to whatever is in the buffer - */ - ACPI_MEMCPY (Value, BufferValue, ByteWidth); - break; - - case ACPI_WRITE: - /* - * Write the contents of Value to the buffer - */ - ACPI_MEMCPY (BufferValue, Value, ByteWidth); - break; - - default: - return AE_BAD_PARAMETER; - } - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AeRegionInit - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Opregion init function. - * - *****************************************************************************/ - -ACPI_STATUS -AeRegionInit ( - ACPI_HANDLE RegionHandle, - UINT32 Function, - void *HandlerContext, - void **RegionContext) -{ - /* - * Real simple, set the RegionContext to the RegionHandle - */ - *RegionContext = RegionHandle; - - return AE_OK; -} - - -/****************************************************************************** - * - * FUNCTION: AeNotifyHandler - * - * PARAMETERS: Standard notify handler parameters - * - * RETURN: Status - * - * DESCRIPTION: System notify handler for AcpiExec utility. Used by the ASL - * test suite(s) to communicate errors and other information to - * this utility via the Notify() operator. - * - *****************************************************************************/ - -void -AeNotifyHandler ( - ACPI_HANDLE Device, - UINT32 Value, - void *Context) -{ - - switch (Value) - { -#if 0 - case 0: - printf ("**** Method Error 0x%X: Results not equal\n", Value); - if (AcpiGbl_DebugFile) - { - AcpiOsPrintf ("**** Method Error: Results not equal\n"); - } - break; - - - case 1: - printf ("**** Method Error: Incorrect numeric result\n"); - if (AcpiGbl_DebugFile) - { - AcpiOsPrintf ("**** Method Error: Incorrect numeric result\n"); - } - break; - - - case 2: - printf ("**** Method Error: An operand was overwritten\n"); - if (AcpiGbl_DebugFile) - { - AcpiOsPrintf ("**** Method Error: An operand was overwritten\n"); - } - break; - -#endif - - default: - printf ("**** Received a Notify on Device [%4.4s] %p value 0x%X\n", - AcpiUtGetNodeName (Device), Device, Value); - if (AcpiGbl_DebugFile) - { - AcpiOsPrintf ("**** Received a notify, value 0x%X\n", Value); - } - break; - } - -} - - -/****************************************************************************** - * - * FUNCTION: AeExceptionHandler - * - * PARAMETERS: Standard exception handler parameters - * - * RETURN: Status - * - * DESCRIPTION: System exception handler for AcpiExec utility. - * - *****************************************************************************/ - -ACPI_STATUS -AeExceptionHandler ( - ACPI_STATUS AmlStatus, - ACPI_NAME Name, - UINT16 Opcode, - UINT32 AmlOffset, - void *Context) -{ - ACPI_STATUS NewAmlStatus = AmlStatus; - ACPI_STATUS Status; - ACPI_BUFFER ReturnObj; - ACPI_OBJECT_LIST ArgList; - ACPI_OBJECT Arg[2]; - const char *Exception; - - - Exception = AcpiFormatException (AmlStatus); - AcpiOsPrintf ("**** AcpiExec: Exception %s during execution ", Exception); - if (Name) - { - AcpiOsPrintf ("of method [%4.4s]", (char *) &Name); - } - else - { - AcpiOsPrintf ("at module level (table load)"); - } - AcpiOsPrintf (" Opcode [%s] @%X\n", AcpiPsGetOpcodeName (Opcode), AmlOffset); - - /* - * Invoke the _ERR method if present - * - * Setup parameter object - */ - ArgList.Count = 2; - ArgList.Pointer = Arg; - - Arg[0].Type = ACPI_TYPE_INTEGER; - Arg[0].Integer.Value = AmlStatus; - - Arg[1].Type = ACPI_TYPE_STRING; - Arg[1].String.Pointer = (char *) Exception; - Arg[1].String.Length = ACPI_STRLEN (Exception); - - /* Setup return buffer */ - - ReturnObj.Pointer = NULL; - ReturnObj.Length = ACPI_ALLOCATE_BUFFER; - - Status = AcpiEvaluateObject (NULL, "\\_ERR", &ArgList, &ReturnObj); - if (ACPI_SUCCESS (Status) && - ReturnObj.Pointer) - { - /* Override original status */ - - NewAmlStatus = (ACPI_STATUS) - ((ACPI_OBJECT *) ReturnObj.Pointer)->Integer.Value; - - AcpiOsFree (ReturnObj.Pointer); - } - - /* Global override */ - - if (AcpiGbl_IgnoreErrors) - { - NewAmlStatus = AE_OK; - } - - if (NewAmlStatus != AmlStatus) - { - AcpiOsPrintf ("**** AcpiExec: Exception override, new status %s\n", - AcpiFormatException (NewAmlStatus)); - } - - return (NewAmlStatus); -} - - -/****************************************************************************** - * - * FUNCTION: AeInstallHandlers - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Install handlers for the AcpiExec utility. - * NOTE: Currently only a system notify handler is installed. - * - *****************************************************************************/ - -ACPI_ADR_SPACE_TYPE SpaceId[] = {0, 1, 2, 3, 4, 0x80}; -#define AEXEC_NUM_REGIONS 6 - -ACPI_STATUS -AeInstallHandlers (void) -{ - ACPI_STATUS Status; - UINT32 i; - ACPI_HANDLE Handle; - - - ACPI_FUNCTION_ENTRY (); - - - Status = AcpiInstallExceptionHandler (AeExceptionHandler); - if (ACPI_FAILURE (Status)) - { - printf ("Could not install exception handler, %s\n", - AcpiFormatException (Status)); - } - - Status = AcpiInstallNotifyHandler (ACPI_ROOT_OBJECT, ACPI_SYSTEM_NOTIFY, - AeNotifyHandler, NULL); - if (ACPI_FAILURE (Status)) - { - printf ("Could not install a global notify handler, %s\n", - AcpiFormatException (Status)); - } - - Status = AcpiGetHandle (NULL, "\\_SB", &Handle); - if (ACPI_SUCCESS (Status)) - { - Status = AcpiInstallNotifyHandler (Handle, ACPI_SYSTEM_NOTIFY, - AeNotifyHandler, NULL); - if (ACPI_FAILURE (Status)) - { - printf ("Could not install a notify handler, %s\n", - AcpiFormatException (Status)); - } - - Status = AcpiRemoveNotifyHandler (Handle, ACPI_SYSTEM_NOTIFY, - AeNotifyHandler); - if (ACPI_FAILURE (Status)) - { - printf ("Could not remove a notify handler, %s\n", - AcpiFormatException (Status)); - } - - Status = AcpiInstallNotifyHandler (Handle, ACPI_ALL_NOTIFY, - AeNotifyHandler, NULL); - Status = AcpiRemoveNotifyHandler (Handle, ACPI_ALL_NOTIFY, - AeNotifyHandler); - Status = AcpiInstallNotifyHandler (Handle, ACPI_ALL_NOTIFY, - AeNotifyHandler, NULL); - if (ACPI_FAILURE (Status)) - { - printf ("Could not install a notify handler, %s\n", - AcpiFormatException (Status)); - } - } - else - { - printf ("No _SB_ found, %s\n", AcpiFormatException (Status)); - } - - for (i = 0; i < AEXEC_NUM_REGIONS; i++) - { - if (i == 2) - { - continue; - } - - Status = AcpiRemoveAddressSpaceHandler (AcpiGbl_RootNode, - SpaceId[i], AeRegionHandler); - - /* Install handler at the root object. - * TBD: all default handlers should be installed here! - */ - Status = AcpiInstallAddressSpaceHandler (AcpiGbl_RootNode, - SpaceId[i], AeRegionHandler, AeRegionInit, NULL); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Could not install an OpRegion handler for %s space(%d)", - AcpiUtGetRegionName((UINT8) SpaceId[i]), SpaceId[i])); - return (Status); - } - } - - /* - * Initialize the global Region Handler space - * MCW 3/23/00 - */ - AeRegions.NumberOfRegions = 0; - AeRegions.RegionList = NULL; - - return Status; -} - - -/****************************************************************************** - * - * FUNCTION: AeGpeHandler - * - * DESCRIPTION: GPE handler for acpiexec - * - *****************************************************************************/ - -UINT32 -AeGpeHandler ( - void *Context) -{ - - - AcpiOsPrintf ("Received a GPE at handler\n"); - return (0); -} - - -/****************************************************************************** - * - * FUNCTION: AfInstallGpeBlock - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Various GPE initialization - * - *****************************************************************************/ - -void -AfInstallGpeBlock ( - void) -{ - ACPI_STATUS Status; - ACPI_HANDLE Handle; - ACPI_HANDLE Handle2 = NULL; - ACPI_HANDLE Handle3 = NULL; - ACPI_GENERIC_ADDRESS BlockAddress; - - - Status = AcpiGetHandle (NULL, "\\_GPE", &Handle); - if (ACPI_FAILURE (Status)) - { - return; - } - - BlockAddress.SpaceId = 0; - ACPI_STORE_ADDRESS (BlockAddress.Address, 0x76540000); - -// Status = AcpiInstallGpeBlock (Handle, &BlockAddress, 4, 8); - - /* Above should fail, ignore */ - - Status = AcpiGetHandle (NULL, "\\GPE2", &Handle2); - if (ACPI_SUCCESS (Status)) - { - Status = AcpiInstallGpeBlock (Handle2, &BlockAddress, 8, 8); - - AcpiInstallGpeHandler (Handle2, 8, ACPI_GPE_LEVEL_TRIGGERED, AeGpeHandler, NULL); - AcpiSetGpeType (Handle2, 8, ACPI_GPE_TYPE_WAKE); - AcpiEnableGpe (Handle2, 8, 0); - } - - Status = AcpiGetHandle (NULL, "\\GPE3", &Handle3); - if (ACPI_SUCCESS (Status)) - { - Status = AcpiInstallGpeBlock (Handle3, &BlockAddress, 8, 11); - } - -// Status = AcpiRemoveGpeBlock (Handle); -// Status = AcpiRemoveGpeBlock (Handle2); -// Status = AcpiRemoveGpeBlock (Handle3); - -} - - -void -AeMiscellaneousTests ( - void) -{ - ACPI_HANDLE Handle; - ACPI_BUFFER ReturnBuf; - char Buffer[32]; - ACPI_VENDOR_UUID Uuid = {0, {ACPI_INIT_UUID (0,0,0,0,0,0,0,0,0,0,0)}}; - ACPI_STATUS Status; - UINT32 LockHandle; - - - ReturnBuf.Length = 32; - ReturnBuf.Pointer = Buffer; - - AcpiGetName (AcpiGbl_RootNode, ACPI_FULL_PATHNAME, &ReturnBuf); - AcpiEnableEvent (ACPI_EVENT_GLOBAL, 0); - - AcpiInstallGpeHandler (NULL, 0, ACPI_GPE_LEVEL_TRIGGERED, AeGpeHandler, NULL); - AcpiSetGpeType (NULL, 0, ACPI_GPE_TYPE_WAKE_RUN); - AcpiEnableGpe (NULL, 0, ACPI_NOT_ISR); - AcpiRemoveGpeHandler (NULL, 0, AeGpeHandler); - - AcpiInstallGpeHandler (NULL, 0, ACPI_GPE_LEVEL_TRIGGERED, AeGpeHandler, NULL); - AcpiSetGpeType (NULL, 0, ACPI_GPE_TYPE_WAKE_RUN); - AcpiEnableGpe (NULL, 0, ACPI_NOT_ISR); - - AcpiInstallGpeHandler (NULL, 1, ACPI_GPE_EDGE_TRIGGERED, AeGpeHandler, NULL); - AcpiSetGpeType (NULL, 1, ACPI_GPE_TYPE_RUNTIME); - AcpiEnableGpe (NULL, 1, ACPI_NOT_ISR); - - AcpiInstallGpeHandler (NULL, 2, ACPI_GPE_LEVEL_TRIGGERED, AeGpeHandler, NULL); - AcpiSetGpeType (NULL, 2, ACPI_GPE_TYPE_WAKE); - AcpiEnableGpe (NULL, 2, ACPI_NOT_ISR); - - AcpiInstallGpeHandler (NULL, 3, ACPI_GPE_EDGE_TRIGGERED, AeGpeHandler, NULL); - AcpiSetGpeType (NULL, 3, ACPI_GPE_TYPE_WAKE_RUN); - - AcpiInstallGpeHandler (NULL, 4, ACPI_GPE_LEVEL_TRIGGERED, AeGpeHandler, NULL); - AcpiSetGpeType (NULL, 4, ACPI_GPE_TYPE_RUNTIME); - - AcpiInstallGpeHandler (NULL, 5, ACPI_GPE_EDGE_TRIGGERED, AeGpeHandler, NULL); - AcpiSetGpeType (NULL, 5, ACPI_GPE_TYPE_WAKE); - - AcpiInstallGpeHandler (NULL, 0x19, ACPI_GPE_LEVEL_TRIGGERED, AeGpeHandler, NULL); - AcpiSetGpeType (NULL, 0x19, ACPI_GPE_TYPE_WAKE_RUN); - AcpiEnableGpe (NULL, 0x19, ACPI_NOT_ISR); - - AfInstallGpeBlock (); - - - Status = AcpiGetHandle (NULL, "RSRC", &Handle); - if (ACPI_SUCCESS (Status)) - { - ReturnBuf.Length = ACPI_ALLOCATE_BUFFER; - - Status = AcpiGetVendorResource (Handle, "_CRS", &Uuid, &ReturnBuf); - if (ACPI_SUCCESS (Status)) - { - AcpiOsFree (ReturnBuf.Pointer); - } - } - - /* Test global lock */ - - Status = AcpiAcquireGlobalLock (0xFFFF, &LockHandle); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not get GlobalLock, %X\n", Status); - } - - Status = AcpiAcquireGlobalLock (0x5, &LockHandle); /* Should fail */ - - Status = AcpiReleaseGlobalLock (LockHandle); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not release GlobalLock, %X\n", Status); - } - -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/tools/acpiexec/aemain.c b/sys/contrib/dev/acpica-unix-20061109/tools/acpiexec/aemain.c deleted file mode 100644 index d69be5ac14..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/tools/acpiexec/aemain.c +++ /dev/null @@ -1,474 +0,0 @@ -/****************************************************************************** - * - * Module Name: aemain - Main routine for the AcpiExec utility - * $Revision: 1.107 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "aecommon.h" - -#ifdef _DEBUG -#if ACPI_MACHINE_WIDTH != 16 -#include -#endif -#endif - -#define _COMPONENT PARSER - ACPI_MODULE_NAME ("aemain") - -UINT8 AcpiGbl_BatchMode = 0; -BOOLEAN AcpiGbl_IgnoreErrors = FALSE; -char BatchBuffer[128]; - - -#if ACPI_MACHINE_WIDTH == 16 - -ACPI_STATUS -AcpiGetIrqRoutingTable ( - ACPI_HANDLE DeviceHandle, - ACPI_BUFFER *RetBuffer) -{ - return AE_NOT_IMPLEMENTED; -} -#endif - - -/****************************************************************************** - * - * FUNCTION: usage - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Print a usage message - * - *****************************************************************************/ - -static void -usage (void) -{ - printf ("Usage: acpiexec [Options] [InputFile]\n\n"); - - printf ("Where:\n"); - printf (" -? Display this message\n"); - printf (" -a Do not abort methods on error\n"); - printf (" -b Batch mode command execution\n"); - printf (" -e [Method] Batch mode method execution\n"); - printf (" -i Do not run STA/INI methods during init\n"); - printf (" -o Send output to this file\n"); - printf (" -s Enable Interpreter Slack Mode\n"); - printf (" -t Enable Interpreter Serialized Mode\n"); - printf (" -x Specify debug output level\n"); - printf (" -v Verbose init output\n"); -} - - -/****************************************************************************** - * - * FUNCTION: AcpiDbRunBatchMode - * - * PARAMETERS: BatchCommandLine - Comma separated command and arguments - * - * RETURN: None - * - * DESCRIPTION: Prepare command buffer and pass it to AcpiDbCommandDispatch - * - *****************************************************************************/ - -static void -AcpiDbRunBatchMode ( - void) -{ - char *Ptr = BatchBuffer; - - /* Convert commas to spaces */ - - while (*Ptr) - { - if (*Ptr == ',') - { - *Ptr = ' '; - } - Ptr++; - } - - AcpiGbl_MethodExecuting = FALSE; - AcpiGbl_StepToNextCall = FALSE; - - (void) AcpiDbCommandDispatch (BatchBuffer, NULL, NULL); -} - - -/****************************************************************************** - * - * FUNCTION: main - * - * PARAMETERS: argc, argv - * - * RETURN: Status - * - * DESCRIPTION: Main routine for AcpiDump utility - * - *****************************************************************************/ - -int ACPI_SYSTEM_XFACE -main ( - int argc, - char **argv) -{ - int j; - ACPI_STATUS Status; - UINT32 InitFlags; - ACPI_TABLE_HEADER *Table; - - -#ifdef _DEBUG -#if ACPI_MACHINE_WIDTH != 16 - _CrtSetDbgFlag (_CRTDBG_CHECK_ALWAYS_DF | _CRTDBG_LEAK_CHECK_DF | - _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG)); -#endif -#endif - - - printf ("\nIntel ACPI Component Architecture\nAML Execution/Debug Utility"); - -#if ACPI_MACHINE_WIDTH == 16 - printf (" (16-bit)"); -#endif - - printf (" version %8.8X", ((UINT32) ACPI_CA_VERSION)); - printf (" [%s]\n\n", __DATE__); - - if (argc < 2) - { - usage (); - return 0; - } - - signal (SIGINT, AeCtrlCHandler); - - /* Init globals */ - - AcpiDbgLevel = ACPI_NORMAL_DEFAULT; - AcpiDbgLayer = 0xFFFFFFFF; - - /* Init ACPI and start debugger thread */ - - AcpiInitializeSubsystem (); - AcpiGbl_GlobalLockPresent = TRUE; - - /* Get the command line options */ - - while ((j = AcpiGetopt (argc, argv, "?ab:de^gio:stvx:")) != EOF) switch(j) - { - case 'a': - AcpiGbl_IgnoreErrors = TRUE; - break; - - case 'b': - if (strlen (AcpiGbl_Optarg) > 127) - { - printf ("**** The length of command line (%u) exceeded maximum (127)\n", - strlen (AcpiGbl_Optarg)); - return -1; - } - AcpiGbl_BatchMode = 1; - strcpy (BatchBuffer, AcpiGbl_Optarg); - break; - - case 'd': - AcpiGbl_DbOpt_disasm = TRUE; - AcpiGbl_DbOpt_stats = TRUE; - break; - - case 'e': - AcpiGbl_BatchMode = 2; - switch (AcpiGbl_Optarg[0]) - { - case '^': - strcpy (BatchBuffer, "MAIN"); - break; - default: - strcpy (BatchBuffer, AcpiGbl_Optarg); - break; - } - break; - - case 'g': - AcpiGbl_DbOpt_tables = TRUE; - AcpiGbl_DbFilename = NULL; - break; - - case 'i': - AcpiGbl_DbOpt_ini_methods = FALSE; - break; - - case 'x': - AcpiDbgLevel = strtoul (AcpiGbl_Optarg, NULL, 0); - AcpiGbl_DbConsoleDebugLevel = AcpiDbgLevel; - printf ("Debug Level: 0x%8.8X\n", AcpiDbgLevel); - break; - - case 'o': - printf ("O option is not implemented\n"); - break; - - case 's': - AcpiGbl_EnableInterpreterSlack = TRUE; - printf ("Enabling AML Interpreter slack mode\n"); - break; - - case 't': - AcpiGbl_AllMethodsSerialized = TRUE; - printf ("Enabling AML Interpreter serialized mode\n"); - break; - - case 'v': - AcpiDbgLevel |= ACPI_LV_INIT_NAMES; - break; - - case '?': - default: - usage(); - return -1; - } - - - InitFlags = (ACPI_NO_HANDLER_INIT | ACPI_NO_ACPI_ENABLE); - if (!AcpiGbl_DbOpt_ini_methods) - { - InitFlags |= (ACPI_NO_DEVICE_INIT | ACPI_NO_OBJECT_INIT); - } - - /* Standalone filename is the only argument */ - - if (argv[AcpiGbl_Optind]) - { - AcpiGbl_DbOpt_tables = TRUE; - AcpiGbl_DbFilename = argv[AcpiGbl_Optind]; - - Status = AcpiDbReadTableFromFile (AcpiGbl_DbFilename, &Table); - if (ACPI_FAILURE (Status)) - { - printf ("**** Could not get input table, %s\n", AcpiFormatException (Status)); - goto enterloop; - } - - AeBuildLocalTables (Table); - Status = AeInstallTables (); - if (ACPI_FAILURE (Status)) - { - printf ("**** Could not load ACPI tables, %s\n", AcpiFormatException (Status)); - goto enterloop; - } - - Status = AeInstallHandlers (); - if (ACPI_FAILURE (Status)) - { - goto enterloop; - } - - /* - * TBD: - * Need a way to call this after the "LOAD" command - */ - Status = AcpiEnableSubsystem (InitFlags); - if (ACPI_FAILURE (Status)) - { - printf ("**** Could not EnableSubsystem, %s\n", AcpiFormatException (Status)); - goto enterloop; - } - - Status = AcpiInitializeObjects (InitFlags); - if (ACPI_FAILURE (Status)) - { - printf ("**** Could not InitializeObjects, %s\n", AcpiFormatException (Status)); - goto enterloop; - } - - AeMiscellaneousTests (); - } - -#if ACPI_MACHINE_WIDTH == 16 - else - { -#include "16bit.h" - - Status = AfFindTable (ACPI_SIG_DSDT, NULL, NULL); - if (ACPI_FAILURE (Status)) - { - goto enterloop; - } - - - if (ACPI_FAILURE (Status)) - { - printf ("**** Could not load ACPI tables, %s\n", AcpiFormatException (Status)); - goto enterloop; - } - - - Status = AcpiNsLoadNamespace (); - if (ACPI_FAILURE (Status)) - { - printf ("**** Could not load ACPI namespace, %s\n", AcpiFormatException (Status)); - goto enterloop; - } - - - Status = AeInstallHandlers (); - if (ACPI_FAILURE (Status)) - { - goto enterloop; - } - - /* - * TBD: - * Need a way to call this after the "LOAD" command - */ - Status = AcpiEnableSubsystem (InitFlags); - if (ACPI_FAILURE (Status)) - { - printf ("**** Could not EnableSubsystem, %s\n", AcpiFormatException (Status)); - goto enterloop; - } - - Status = AcpiInitializeObjects (InitFlags); - if (ACPI_FAILURE (Status)) - { - printf ("**** Could not InitializeObjects, %s\n", AcpiFormatException (Status)); - goto enterloop; - } - - } -#endif - -enterloop: - - if (AcpiGbl_BatchMode == 1) - { - AcpiDbRunBatchMode (); - } - else if (AcpiGbl_BatchMode == 2) - { - AcpiDbExecute (BatchBuffer, NULL, EX_NO_SINGLE_STEP); - } - else - { - /* Enter the debugger command loop */ - - AcpiDbUserCommands (ACPI_DEBUGGER_COMMAND_PROMPT, NULL); - } - - return 0; -} diff --git a/sys/contrib/dev/acpica-unix-20061109/tools/acpiexec/osunixdir.c b/sys/contrib/dev/acpica-unix-20061109/tools/acpiexec/osunixdir.c deleted file mode 100644 index 39bf6e459d..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/tools/acpiexec/osunixdir.c +++ /dev/null @@ -1,303 +0,0 @@ - -/****************************************************************************** - * - * Module Name: osunixdir - Unix directory access interfaces - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include -#include -#include -#include -#include -#include -#include - -#include "acpisrc.h" - -typedef struct ExternalFindInfo -{ - char *DirPathname; - DIR *DirPtr; - char temp_buffer[128]; - char *WildcardSpec; - char RequestedFileType; - -} EXTERNAL_FIND_INFO; - - -/******************************************************************************* - * - * FUNCTION: AcpiOsOpenDirectory - * - * PARAMETERS: DirPathname - Full pathname to the directory - * WildcardSpec - string of the form "*.c", etc. - * - * RETURN: A directory "handle" to be used in subsequent search operations. - * NULL returned on failure. - * - * DESCRIPTION: Open a directory in preparation for a wildcard search - * - ******************************************************************************/ - -void * -AcpiOsOpenDirectory ( - char *DirPathname, - char *WildcardSpec, - char RequestedFileType) -{ - EXTERNAL_FIND_INFO *ExternalInfo; - DIR *dir; - - - /* Allocate the info struct that will be returned to the caller */ - - ExternalInfo = calloc (sizeof (EXTERNAL_FIND_INFO), 1); - if (!ExternalInfo) - { - return NULL; - } - - /* Get the directory stream */ - - dir = opendir(DirPathname); - if (!dir) - { - free(ExternalInfo); - return NULL; - } - - /* Save the info in the return structure */ - - ExternalInfo->WildcardSpec = WildcardSpec; - ExternalInfo->RequestedFileType = RequestedFileType; - ExternalInfo->DirPathname = DirPathname; - ExternalInfo->DirPtr = dir; - return (ExternalInfo); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiOsGetNextFilename - * - * PARAMETERS: DirHandle - Created via AcpiOsOpenDirectory - * - * RETURN: Next filename matched. NULL if no more matches. - * - * DESCRIPTION: Get the next file in the directory that matches the wildcard - * specification. - * - ******************************************************************************/ - -char * -AcpiOsGetNextFilename ( - void *DirHandle) -{ - EXTERNAL_FIND_INFO *ExternalInfo = DirHandle; - struct dirent *dir_entry; - - while((dir_entry = readdir(ExternalInfo->DirPtr))) - { - if (!fnmatch(ExternalInfo->WildcardSpec, dir_entry->d_name, 0)) - { - char *temp_str; - int str_len; - struct stat temp_stat; - int err; - - if (dir_entry->d_name[0] == '.') - continue; - - str_len = strlen(dir_entry->d_name) + strlen (ExternalInfo->DirPathname) + 2; - - temp_str = calloc(str_len, 1); - if (!temp_str) - { - printf ("Could not allocate buffer for temporary string\n"); - return NULL; - } - - strcpy(temp_str, ExternalInfo->DirPathname); - strcat(temp_str, "/"); - strcat(temp_str, dir_entry->d_name); - - err = stat(temp_str, &temp_stat); - free (temp_str); - if (err == -1) - { - printf ("stat() error - should not happen\n"); - return NULL; - } - - if ((S_ISDIR(temp_stat.st_mode) - && (ExternalInfo->RequestedFileType == REQUEST_DIR_ONLY)) - || - ((!S_ISDIR(temp_stat.st_mode) - && ExternalInfo->RequestedFileType == REQUEST_FILE_ONLY))) - { - /* copy to a temp buffer because dir_entry struct is on the stack */ - strcpy(ExternalInfo->temp_buffer, dir_entry->d_name); - return (ExternalInfo->temp_buffer); - } - } - } - - return NULL; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiOsCloseDirectory - * - * PARAMETERS: DirHandle - Created via AcpiOsOpenDirectory - * - * RETURN: None. - * - * DESCRIPTION: Close the open directory and cleanup. - * - ******************************************************************************/ - -void -AcpiOsCloseDirectory ( - void *DirHandle) -{ - EXTERNAL_FIND_INFO *ExternalInfo = DirHandle; - - - /* Close the directory and free allocations */ - - closedir(ExternalInfo->DirPtr); - free (DirHandle); -} - -/* Other functions acpisrc uses but that aren't standard on Unix */ - -/* lowercase a string */ -char* -strlwr ( - char *str) -{ - int length; - int i; - - length = strlen(str); - - for (i = 0; i < length; i++) - { - str[i] = tolower(str[i]); - } - - return str; -} diff --git a/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/Makefile b/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/Makefile deleted file mode 100644 index 96816ce129..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/Makefile +++ /dev/null @@ -1,17 +0,0 @@ - - -PROG= acpisrc -SRCS= ascase.c asconvrt.c asfile.c asmain.c asremove.c astable.c \ - asutils.c osunixdir.c ../../common/getopt.c - -CFLAGS+= -Wall -O2 -D_LINUX -DACPI_APPLICATION -Wstrict-prototypes -I../../include - - -aslmain : $(patsubst %.c,%.o, $(SRCS)) - $(CC) $(LDFLAGS) $(patsubst %.c,%.o, $(SRCS)) -o $(PROG) - -CLEANFILES= $(PROG) - -clean : - rm -f $(CLEANFILES) $(patsubst %.c,%.o, $(SRCS)) - diff --git a/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/acpisrc.h b/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/acpisrc.h deleted file mode 100644 index 26ef06c60f..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/acpisrc.h +++ /dev/null @@ -1,478 +0,0 @@ - -/****************************************************************************** - * - * Module Name: acpisrc.h - Include file for AcpiSrc utility - * $Revision: 1.39 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define LINES_IN_LEGAL_HEADER 105 /* See above */ - - -#include -#include -#include -#include -#include -#ifdef WIN32 -#include -#include -#endif -#include - -#include "acpi.h" - - -/* Fixups for non-Win32 compilation */ -#ifndef WIN32 - -static inline int -max (int a, int b) -{ - return (a > b ? a : b); -} - -#define O_BINARY 0x0 - -#define mkdir(x) mkdir(x, 0770) -#define stricmp strcasecmp - -char * strlwr(char* str); - -#endif - - -/* Constants */ - - -#define ASRC_MAX_FILE_SIZE (1024 * 100) - -#define FILE_TYPE_SOURCE 1 -#define FILE_TYPE_HEADER 2 -#define FILE_TYPE_DIRECTORY 3 - - -#define CVT_COUNT_TABS 0x00000001 -#define CVT_COUNT_NON_ANSI_COMMENTS 0x00000002 -#define CVT_TRIM_LINES 0x00000004 -#define CVT_CHECK_BRACES 0x00000008 -#define CVT_COUNT_LINES 0x00000010 -#define CVT_BRACES_ON_SAME_LINE 0x00000020 -#define CVT_MIXED_CASE_TO_UNDERSCORES 0x00000040 -#define CVT_LOWER_CASE_IDENTIFIERS 0x00000080 -#define CVT_REMOVE_DEBUG_MACROS 0x00000100 -#define CVT_TRIM_WHITESPACE 0x00000200 /* Should be after all line removal */ -#define CVT_REMOVE_EMPTY_BLOCKS 0x00000400 /* Should be after trimming lines */ -#define CVT_REDUCE_TYPEDEFS 0x00000800 -#define CVT_COUNT_SHORTMULTILINE_COMMENTS 0x00001000 -#define CVT_SPACES_TO_TABS4 0x40000000 /* Tab conversion should be last */ -#define CVT_SPACES_TO_TABS8 0x80000000 /* Tab conversion should be last */ - - -#define FLG_DEFAULT_FLAGS 0x00000000 -#define FLG_NO_CARRIAGE_RETURNS 0x00000001 -#define FLG_NO_FILE_OUTPUT 0x00000002 -#define FLG_LOWERCASE_DIRNAMES 0x00000004 - -#define AS_START_IGNORE "/*!" -#define AS_STOP_IGNORE "!*/" - - -/* Globals */ - -extern UINT32 Gbl_Files; -extern UINT32 Gbl_MissingBraces; -extern UINT32 Gbl_Tabs; -extern UINT32 Gbl_NonAnsiComments; -extern UINT32 Gbl_SourceLines; -extern UINT32 Gbl_WhiteLines; -extern UINT32 Gbl_CommentLines; -extern UINT32 Gbl_LongLines; -extern UINT32 Gbl_TotalLines; -extern struct stat Gbl_StatBuf; -extern char *Gbl_FileBuffer; -extern UINT32 Gbl_FileSize; -extern UINT32 Gbl_FileType; -extern BOOLEAN Gbl_VerboseMode; -extern BOOLEAN Gbl_BatchMode; -extern BOOLEAN Gbl_MadeChanges; -extern BOOLEAN Gbl_Overwrite; -extern BOOLEAN Gbl_WidenDeclarations; -extern BOOLEAN Gbl_IgnoreLoneLineFeeds; -extern void *Gbl_StructDefs; - -#define PARAM_LIST(pl) pl -#define TERSE_PRINT(a) if (!Gbl_VerboseMode) printf PARAM_LIST(a) -#define VERBOSE_PRINT(a) if (Gbl_VerboseMode) printf PARAM_LIST(a) - - -#define REPLACE_WHOLE_WORD 0x00 -#define REPLACE_SUBSTRINGS 0x01 -#define REPLACE_MASK 0x01 - -#define EXTRA_INDENT_C 0x02 - - -/* Conversion table structs */ - -typedef struct acpi_string_table -{ - char *Target; - char *Replacement; - UINT8 Type; - -} ACPI_STRING_TABLE; - - -typedef struct acpi_typed_identifier_table -{ - char *Identifier; - UINT8 Type; - -} ACPI_TYPED_IDENTIFIER_TABLE; - -#define SRC_TYPE_SIMPLE 0 -#define SRC_TYPE_STRUCT 1 -#define SRC_TYPE_UNION 2 - - -typedef struct acpi_identifier_table -{ - char *Identifier; - -} ACPI_IDENTIFIER_TABLE; - -typedef struct acpi_conversion_table -{ - char *NewHeader; - UINT32 Flags; - - ACPI_TYPED_IDENTIFIER_TABLE *LowerCaseTable; - - ACPI_STRING_TABLE *SourceStringTable; - ACPI_IDENTIFIER_TABLE *SourceLineTable; - ACPI_IDENTIFIER_TABLE *SourceConditionalTable; - ACPI_IDENTIFIER_TABLE *SourceMacroTable; - ACPI_TYPED_IDENTIFIER_TABLE *SourceStructTable; - UINT32 SourceFunctions; - - ACPI_STRING_TABLE *HeaderStringTable; - ACPI_IDENTIFIER_TABLE *HeaderLineTable; - ACPI_IDENTIFIER_TABLE *HeaderConditionalTable; - ACPI_IDENTIFIER_TABLE *HeaderMacroTable; - ACPI_TYPED_IDENTIFIER_TABLE *HeaderStructTable; - UINT32 HeaderFunctions; - -} ACPI_CONVERSION_TABLE; - - -/* Conversion tables */ - -extern ACPI_CONVERSION_TABLE LinuxConversionTable; -extern ACPI_CONVERSION_TABLE CleanupConversionTable; -extern ACPI_CONVERSION_TABLE StatsConversionTable; -extern ACPI_CONVERSION_TABLE CustomConversionTable; - - -/* Prototypes */ - -char * -AsSkipUntilChar ( - char *Buffer, - char Target); - -char * -AsSkipPastChar ( - char *Buffer, - char Target); - -char * -AsReplaceData ( - char *Buffer, - UINT32 LengthToRemove, - char *BufferToAdd, - UINT32 LengthToAdd); - -int -AsReplaceString ( - char *Target, - char *Replacement, - UINT8 Type, - char *Buffer); - -int -AsLowerCaseString ( - char *Target, - char *Buffer); - -void -AsRemoveLine ( - char *Buffer, - char *Keyword); - -void -AsRemoveMacro ( - char *Buffer, - char *Keyword); - -void -AsCheckForBraces ( - char *Buffer, - char *Filename); - -void -AsTrimLines ( - char *Buffer, - char *Filename); - -void -AsMixedCaseToUnderscores ( - char *Buffer); - -void -AsCountTabs ( - char *Buffer, - char *Filename); - -void -AsBracesOnSameLine ( - char *Buffer); - -void -AsLowerCaseIdentifiers ( - char *Buffer); - -void -AsReduceTypedefs ( - char *Buffer, - char *Keyword); - -void -AsRemoveDebugMacros ( - char *Buffer); - -void -AsRemoveEmptyBlocks ( - char *Buffer, - char *Filename); - -void -AsCountSourceLines ( - char *Buffer, - char *Filename); - -void -AsCountNonAnsiComments ( - char *Buffer, - char *Filename); - -void -AsTrimWhitespace ( - char *Buffer); - -void -AsTabify4 ( - char *Buffer); - -void -AsTabify8 ( - char *Buffer); - -void -AsRemoveConditionalCompile ( - char *Buffer, - char *Keyword); - -ACPI_NATIVE_INT -AsProcessTree ( - ACPI_CONVERSION_TABLE *ConversionTable, - char *SourcePath, - char *TargetPath); - -int -AsGetFile ( - char *FileName, - char **FileBuffer, - UINT32 *FileSize); - -int -AsPutFile ( - char *Pathname, - char *FileBuffer, - UINT32 SystemFlags); - -void -AsReplaceHeader ( - char *Buffer, - char *NewHeader); - -void -AsConvertFile ( - ACPI_CONVERSION_TABLE *ConversionTable, - char *FileBuffer, - char *Filename, - ACPI_NATIVE_INT FileType); - -ACPI_NATIVE_INT -AsProcessOneFile ( - ACPI_CONVERSION_TABLE *ConversionTable, - char *SourcePath, - char *TargetPath, - int MaxPathLength, - char *Filename, - ACPI_NATIVE_INT FileType); - -ACPI_NATIVE_INT -AsCheckForDirectory ( - char *SourceDirPath, - char *TargetDirPath, - char *Filename, - char **SourcePath, - char **TargetPath); - -BOOLEAN -AsMatchExactWord ( - char *Word, - UINT32 WordLength); - -void -AsPrint ( - char *Message, - UINT32 Count, - char *Filename); - -void -AsInsertPrefix ( - char *Buffer, - char *Keyword, - UINT8 Type); - -char * -AsInsertData ( - char *Buffer, - char *BufferToAdd, - UINT32 LengthToAdd); - -char * -AsRemoveData ( - char *StartPointer, - char *EndPointer); - -void -AsInsertCarriageReturns ( - char *Buffer); - -void -AsConvertToLineFeeds ( - char *Buffer); - - diff --git a/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/ascase.c b/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/ascase.c deleted file mode 100644 index e2734375ba..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/ascase.c +++ /dev/null @@ -1,640 +0,0 @@ - -/****************************************************************************** - * - * Module Name: ascase - Source conversion - lower/upper case utilities - * $Revision: 1.20 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpisrc.h" - - -/****************************************************************************** - * - * FUNCTION: AsLowerCaseString - * - * DESCRIPTION: LowerCase all instances of a target string with a replacement - * string. Returns count of the strings replaced. - * - ******************************************************************************/ - -int -AsLowerCaseString ( - char *Target, - char *Buffer) -{ - char *SubString1; - char *SubString2; - char *SubBuffer; - int TargetLength; - int LowerCaseCount = 0; - int i; - - - TargetLength = strlen (Target); - - SubBuffer = Buffer; - SubString1 = Buffer; - - while (SubString1) - { - /* Find the target string */ - - SubString1 = strstr (SubBuffer, Target); - if (!SubString1) - { - return LowerCaseCount; - } - - /* - * Check for translation escape string -- means to ignore - * blocks of code while replacing - */ - SubString2 = strstr (SubBuffer, AS_START_IGNORE); - - if ((SubString2) && - (SubString2 < SubString1)) - { - /* Find end of the escape block starting at "Substring2" */ - - SubString2 = strstr (SubString2, AS_STOP_IGNORE); - if (!SubString2) - { - /* Didn't find terminator */ - - return LowerCaseCount; - } - - /* Move buffer to end of escape block and continue */ - - SubBuffer = SubString2; - } - - /* Do the actual replace if the target was found */ - - else - { - if (!AsMatchExactWord (SubString1, TargetLength)) - { - SubBuffer = SubString1 + 1; - continue; - } - - for (i = 0; i < TargetLength; i++) - { - SubString1[i] = (char) tolower (SubString1[i]); - } - - SubBuffer = SubString1 + TargetLength; - - if ((Gbl_WidenDeclarations) && (!Gbl_StructDefs)) - { - if ((SubBuffer[0] == ' ') && (SubBuffer[1] == ' ')) - { - AsInsertData (SubBuffer, " ", 8); - } - } - - LowerCaseCount++; - } - } - - return LowerCaseCount; -} - - -/****************************************************************************** - * - * FUNCTION: AsMixedCaseToUnderscores - * - * DESCRIPTION: Converts mixed case identifiers to underscored identifiers. - * for example, - * - * ThisUsefullyNamedIdentifier becomes: - * - * this_usefully_named_identifier - * - ******************************************************************************/ - -void -AsMixedCaseToUnderscores ( - char *Buffer) -{ - UINT32 Length; - char *SubBuffer = Buffer; - char *TokenEnd; - char *TokenStart = NULL; - char *SubString; - BOOLEAN HasLowerCase = FALSE; - - - while (*SubBuffer) - { - /* Ignore whitespace */ - - if (*SubBuffer == ' ') - { - while (*SubBuffer == ' ') - { - SubBuffer++; - } - TokenStart = NULL; - HasLowerCase = FALSE; - continue; - } - - /* Ignore commas */ - - if ((*SubBuffer == ',') || - (*SubBuffer == '>') || - (*SubBuffer == ')')) - { - SubBuffer++; - TokenStart = NULL; - HasLowerCase = FALSE; - continue; - } - - /* Check for quoted string -- ignore */ - - if (*SubBuffer == '"') - { - SubBuffer++; - while (*SubBuffer != '"') - { - if (!*SubBuffer) - { - return; - } - - /* Handle embedded escape sequences */ - - if (*SubBuffer == '\\') - { - SubBuffer++; - } - SubBuffer++; - } - SubBuffer++; - continue; - } - - if (islower (*SubBuffer)) - { - HasLowerCase = TRUE; - } - - /* - * Check for translation escape string -- means to ignore - * blocks of code while replacing - */ - if ((SubBuffer[0] == '/') && - (SubBuffer[1] == '*') && - (SubBuffer[2] == '!')) - { - SubBuffer = strstr (SubBuffer, "!*/"); - if (!SubBuffer) - { - return; - } - continue; - } - - /* Ignore hex constants */ - - if (SubBuffer[0] == '0') - { - if ((SubBuffer[1] == 'x') || - (SubBuffer[1] == 'X')) - { - SubBuffer += 2; - while (isxdigit (*SubBuffer)) - { - SubBuffer++; - } - continue; - } - } - -// OBSOLETE CODE, all quoted strings now completely ignored. -#if 0 - /* Ignore format specification fields */ - - if (SubBuffer[0] == '%') - { - SubBuffer++; - - while ((isalnum (*SubBuffer)) || (*SubBuffer == '.')) - { - SubBuffer++; - } - - continue; - } -#endif - - /* Ignore standard escape sequences (\n, \r, etc.) Not Hex or Octal escapes */ - - if (SubBuffer[0] == '\\') - { - SubBuffer += 2; - continue; - } - - /* - * Ignore identifiers that already contain embedded underscores - * These are typically C macros or defines (all upper case) - * Note: there are some cases where identifiers have underscores - * AcpiGbl_* for example. HasLowerCase flag handles these. - */ - if ((*SubBuffer == '_') && (!HasLowerCase) && (TokenStart)) - { - /* Check the rest of the identifier for any lower case letters */ - - SubString = SubBuffer; - while ((isalnum (*SubString)) || (*SubString == '_')) - { - if (islower (*SubString)) - { - HasLowerCase = TRUE; - } - SubString++; - } - - /* If no lower case letters, we can safely ignore the entire token */ - - if (!HasLowerCase) - { - SubBuffer = SubString; - continue; - } - } - - /* A capital letter may indicate the start of a token; save it */ - - if (isupper (SubBuffer[0])) - { - TokenStart = SubBuffer; - } - - /* - * Convert each pair of letters that matches the form: - * - * - * to - * - */ - else if ((islower (SubBuffer[0]) || isdigit (SubBuffer[0])) && - (isupper (SubBuffer[1]))) - { - if (isdigit (SubBuffer[0])) - { - /* Ignore */ - /* Ignore */ - - if (isupper (*(SubBuffer-1)) || - *(SubBuffer-1) == '_') - { - SubBuffer++; - continue; - } - } - - /* - * Matched the pattern. - * Find the end of this identifier (token) - */ - TokenEnd = SubBuffer; - while ((isalnum (*TokenEnd)) || (*TokenEnd == '_')) - { - TokenEnd++; - } - - /* Force the UpperCase letter (#2) to lower case */ - - Gbl_MadeChanges = TRUE; - SubBuffer[1] = (char) tolower (SubBuffer[1]); - - SubString = TokenEnd; - Length = 0; - - while (*SubString != '\n') - { - /* - * If we have at least two trailing spaces, we can get rid of - * one to make up for the newly inserted underscore. This will - * help preserve the alignment of the text - */ - if ((SubString[0] == ' ') && - (SubString[1] == ' ')) - { - Length = SubString - SubBuffer - 2; - break; - } - - SubString++; - } - - if (!Length) - { - Length = strlen (&SubBuffer[1]); - } - - memmove (&SubBuffer[2], &SubBuffer[1], Length + 1); - SubBuffer[1] = '_'; - SubBuffer +=2; - - /* Lower case the leading character of the token */ - - if (TokenStart) - { - *TokenStart = (char) tolower (*TokenStart); - TokenStart = NULL; - } - } - - SubBuffer++; - } -} - - -/****************************************************************************** - * - * FUNCTION: AsLowerCaseIdentifiers - * - * DESCRIPTION: Converts mixed case identifiers to lower case. Leaves comments, - * quoted strings, and all-upper-case macros alone. - * - ******************************************************************************/ - -void -AsLowerCaseIdentifiers ( - char *Buffer) -{ - char *SubBuffer = Buffer; - - - while (*SubBuffer) - { - /* - * Check for translation escape string -- means to ignore - * blocks of code while replacing - */ - if ((SubBuffer[0] == '/') && - (SubBuffer[1] == '*') && - (SubBuffer[2] == '!')) - { - SubBuffer = strstr (SubBuffer, "!*/"); - if (!SubBuffer) - { - return; - } - } - - /* Ignore comments */ - - if ((SubBuffer[0] == '/') && - (SubBuffer[1] == '*')) - { - SubBuffer = strstr (SubBuffer, "*/"); - if (!SubBuffer) - { - return; - } - - SubBuffer += 2; - } - - /* Ignore quoted strings */ - - if ((SubBuffer[0] == '\"') && (SubBuffer[1] != '\'')) - { - SubBuffer++; - - /* Find the closing quote */ - - while (SubBuffer[0]) - { - /* Ignore escaped quote characters */ - - if (SubBuffer[0] == '\\') - { - SubBuffer++; - } - else if (SubBuffer[0] == '\"') - { - SubBuffer++; - break; - } - SubBuffer++; - } - } - - if (!SubBuffer[0]) - { - return; - } - - /* - * Only lower case if we have an upper followed by a lower - * This leaves the all-uppercase things (macros, etc.) intact - */ - if ((isupper (SubBuffer[0])) && - (islower (SubBuffer[1]))) - { - Gbl_MadeChanges = TRUE; - *SubBuffer = (char) tolower (*SubBuffer); - } - - SubBuffer++; - } -} - - -/****************************************************************************** - * - * FUNCTION: AsUppercaseTokens - * - * DESCRIPTION: Force to uppercase all tokens that begin with the prefix string. - * used to convert mixed-case macros and constants to uppercase. - * - ******************************************************************************/ - -void -AsUppercaseTokens ( - char *Buffer, - char *PrefixString) -{ - char *SubBuffer; - char *TokenEnd; - char *SubString; - int i; - UINT32 Length; - - - SubBuffer = Buffer; - - while (SubBuffer) - { - SubBuffer = strstr (SubBuffer, PrefixString); - if (SubBuffer) - { - TokenEnd = SubBuffer; - while ((isalnum (*TokenEnd)) || (*TokenEnd == '_')) - { - TokenEnd++; - } - - for (i = 0; i < (TokenEnd - SubBuffer); i++) - { - if ((islower (SubBuffer[i])) && - (isupper (SubBuffer[i+1]))) - { - - SubString = TokenEnd; - Length = 0; - - while (*SubString != '\n') - { - if ((SubString[0] == ' ') && - (SubString[1] == ' ')) - { - Length = SubString - &SubBuffer[i] - 2; - break; - } - - SubString++; - } - - if (!Length) - { - Length = strlen (&SubBuffer[i+1]); - } - - memmove (&SubBuffer[i+2], &SubBuffer[i+1], (Length+1)); - SubBuffer[i+1] = '_'; - i +=2; - TokenEnd++; - } - } - - for (i = 0; i < (TokenEnd - SubBuffer); i++) - { - SubBuffer[i] = (char) toupper (SubBuffer[i]); - } - - SubBuffer = TokenEnd; - } - } -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/asconvrt.c b/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/asconvrt.c deleted file mode 100644 index 778bb857c7..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/asconvrt.c +++ /dev/null @@ -1,1478 +0,0 @@ - -/****************************************************************************** - * - * Module Name: asconvrt - Source conversion code - * $Revision: 1.62 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpisrc.h" - - -/* Opening signature of the Intel legal header */ - -char *HeaderBegin = "/******************************************************************************\n *\n * 1. Copyright Notice"; - - -/****************************************************************************** - * - * FUNCTION: AsMatchExactWord - * - * DESCRIPTION: Check previous and next characters for whitespace - * - ******************************************************************************/ - -BOOLEAN -AsMatchExactWord ( - char *Word, - UINT32 WordLength) -{ - char NextChar; - char PrevChar; - - - NextChar = Word[WordLength]; - PrevChar = * (Word -1); - - if (isalnum (NextChar) || - (NextChar == '_') || - isalnum (PrevChar) || - (PrevChar == '_')) - { - return (FALSE); - } - - return (TRUE); -} - - -/****************************************************************************** - * - * FUNCTION: AsPrint - * - * DESCRIPTION: Common formatted print - * - ******************************************************************************/ - -void -AsPrint ( - char *Message, - UINT32 Count, - char *Filename) -{ - - - printf ("-- %4u %28.28s : %s\n", Count, Message, Filename); -} - - -/****************************************************************************** - * - * FUNCTION: AsCheckAndSkipLiterals - * - * DESCRIPTION: Generic routine to skip comments and quoted string literals. - * Keeps a line count. - * - ******************************************************************************/ - -char * -AsCheckAndSkipLiterals ( - char *Buffer, - UINT32 *TotalLines) -{ - UINT32 NewLines = 0; - char *SubBuffer = Buffer; - char *LiteralEnd; - - - /* Ignore comments */ - - if ((SubBuffer[0] == '/') && - (SubBuffer[1] == '*')) - { - LiteralEnd = strstr (SubBuffer, "*/"); - SubBuffer += 2; /* Get past comment opening */ - - if (!LiteralEnd) - { - return SubBuffer; - } - - while (SubBuffer < LiteralEnd) - { - if (*SubBuffer == '\n') - { - NewLines++; - } - - SubBuffer++; - } - - SubBuffer += 2; /* Get past comment close */ - } - - /* Ignore quoted strings */ - - else if (*SubBuffer == '\"') - { - SubBuffer++; - LiteralEnd = AsSkipPastChar (SubBuffer, '\"'); - if (!LiteralEnd) - { - return SubBuffer; - } - } - - if (TotalLines) - { - (*TotalLines) += NewLines; - } - return SubBuffer; -} - - -/****************************************************************************** - * - * FUNCTION: AsAsCheckForBraces - * - * DESCRIPTION: Check for an open brace after each if statement - * - ******************************************************************************/ - -void -AsCheckForBraces ( - char *Buffer, - char *Filename) -{ - char *SubBuffer = Buffer; - char *NextBrace; - char *NextSemicolon; - char *NextIf; - UINT32 TotalLines = 1; - - - while (*SubBuffer) - { - - SubBuffer = AsCheckAndSkipLiterals (SubBuffer, &TotalLines); - - if (*SubBuffer == '\n') - { - TotalLines++; - } - else if (!(strncmp (" if", SubBuffer, 3))) - { - SubBuffer += 2; - NextBrace = strstr (SubBuffer, "{"); - NextSemicolon = strstr (SubBuffer, ";"); - NextIf = strstr (SubBuffer, " if"); - - if ((!NextBrace) || - (NextSemicolon && (NextBrace > NextSemicolon)) || - (NextIf && (NextBrace > NextIf))) - { - Gbl_MissingBraces++; - printf ("Missing braces for , line %d: %s\n", TotalLines, Filename); - } - } - else if (!(strncmp (" else if", SubBuffer, 8))) - { - SubBuffer += 7; - NextBrace = strstr (SubBuffer, "{"); - NextSemicolon = strstr (SubBuffer, ";"); - NextIf = strstr (SubBuffer, " if"); - - if ((!NextBrace) || - (NextSemicolon && (NextBrace > NextSemicolon)) || - (NextIf && (NextBrace > NextIf))) - { - Gbl_MissingBraces++; - printf ("Missing braces for , line %d: %s\n", TotalLines, Filename); - } - } - else if (!(strncmp (" else", SubBuffer, 5))) - { - SubBuffer += 4; - NextBrace = strstr (SubBuffer, "{"); - NextSemicolon = strstr (SubBuffer, ";"); - NextIf = strstr (SubBuffer, " if"); - - if ((!NextBrace) || - (NextSemicolon && (NextBrace > NextSemicolon)) || - (NextIf && (NextBrace > NextIf))) - { - Gbl_MissingBraces++; - printf ("Missing braces for , line %d: %s\n", TotalLines, Filename); - } - } - - SubBuffer++; - } -} - - -/****************************************************************************** - * - * FUNCTION: AsTrimLines - * - * DESCRIPTION: Remove extra blanks from the end of source lines. Does not - * check for tabs. - * - ******************************************************************************/ - -void -AsTrimLines ( - char *Buffer, - char *Filename) -{ - char *SubBuffer = Buffer; - char *StartWhiteSpace = NULL; - UINT32 SpaceCount = 0; - - - while (*SubBuffer) - { - while (*SubBuffer != '\n') - { - if (!*SubBuffer) - { - goto Exit; - } - - if (*SubBuffer == ' ') - { - if (!StartWhiteSpace) - { - StartWhiteSpace = SubBuffer; - } - } - else - { - StartWhiteSpace = NULL; - } - - SubBuffer++; - } - - if (StartWhiteSpace) - { - SpaceCount += (SubBuffer - StartWhiteSpace); - - /* Remove the spaces */ - - SubBuffer = AsRemoveData (StartWhiteSpace, SubBuffer); - StartWhiteSpace = NULL; - } - - SubBuffer++; - } - - -Exit: - if (SpaceCount) - { - Gbl_MadeChanges = TRUE; - AsPrint ("Extraneous spaces removed", SpaceCount, Filename); - } -} - - -/****************************************************************************** - * - * FUNCTION: AsTrimWhitespace - * - * DESCRIPTION: Remove "excess" blank lines - any more than 2 blank lines. - * this can happen during the translation when lines are removed. - * - ******************************************************************************/ - -void -AsTrimWhitespace ( - char *Buffer) -{ - int ReplaceCount = 1; - - - while (ReplaceCount) - { - ReplaceCount = AsReplaceString ("\n\n\n\n", "\n\n\n", REPLACE_SUBSTRINGS, Buffer); - } -} - - -/****************************************************************************** - * - * FUNCTION: AsReplaceHeader - * - * DESCRIPTION: Replace the default Intel legal header with a new header - * - ******************************************************************************/ - -void -AsReplaceHeader ( - char *Buffer, - char *NewHeader) -{ - char *SubBuffer; - char *TokenEnd; - - - /* Find the original header */ - - SubBuffer = strstr (Buffer, HeaderBegin); - if (!SubBuffer) - { - return; - } - - /* Find the end of the original header */ - - TokenEnd = strstr (SubBuffer, "*/"); - TokenEnd = AsSkipPastChar (TokenEnd, '\n'); - - /* Delete old header, insert new one */ - - AsReplaceData (SubBuffer, TokenEnd - SubBuffer, NewHeader, strlen (NewHeader)); -} - - -/****************************************************************************** - * - * FUNCTION: AsReplaceString - * - * DESCRIPTION: Replace all instances of a target string with a replacement - * string. Returns count of the strings replaced. - * - ******************************************************************************/ - -int -AsReplaceString ( - char *Target, - char *Replacement, - UINT8 Type, - char *Buffer) -{ - char *SubString1; - char *SubString2; - char *SubBuffer; - int TargetLength; - int ReplacementLength; - int ReplaceCount = 0; - - - TargetLength = strlen (Target); - ReplacementLength = strlen (Replacement); - - SubBuffer = Buffer; - SubString1 = Buffer; - - while (SubString1) - { - /* Find the target string */ - - SubString1 = strstr (SubBuffer, Target); - if (!SubString1) - { - return ReplaceCount; - } - - /* - * Check for translation escape string -- means to ignore - * blocks of code while replacing - */ - SubString2 = strstr (SubBuffer, AS_START_IGNORE); - - if ((SubString2) && - (SubString2 < SubString1)) - { - /* Find end of the escape block starting at "Substring2" */ - - SubString2 = strstr (SubString2, AS_STOP_IGNORE); - if (!SubString2) - { - /* Didn't find terminator */ - - return ReplaceCount; - } - - /* Move buffer to end of escape block and continue */ - - SubBuffer = SubString2; - } - - /* Do the actual replace if the target was found */ - - else - { - if ((Type & REPLACE_MASK) == REPLACE_WHOLE_WORD) - { - if (!AsMatchExactWord (SubString1, TargetLength)) - { - SubBuffer = SubString1 + 1; - continue; - } - } - - SubBuffer = AsReplaceData (SubString1, TargetLength, Replacement, ReplacementLength); - - if ((Type & EXTRA_INDENT_C) && - (!Gbl_StructDefs)) - { - SubBuffer = AsInsertData (SubBuffer, " ", 8); - } - - ReplaceCount++; - } - } - - return ReplaceCount; -} - - -/****************************************************************************** - * - * FUNCTION: AsConvertToLineFeeds - * - * DESCRIPTION: - * - ******************************************************************************/ - -void -AsConvertToLineFeeds ( - char *Buffer) -{ - char *SubString; - char *SubBuffer; - - - SubBuffer = Buffer; - SubString = Buffer; - - while (SubString) - { - /* Find the target string */ - - SubString = strstr (SubBuffer, "\r\n"); - if (!SubString) - { - return; - } - - SubBuffer = AsReplaceData (SubString, 1, NULL, 0); - } - return; -} - - -/****************************************************************************** - * - * FUNCTION: AsInsertCarriageReturns - * - * DESCRIPTION: - * - ******************************************************************************/ - -void -AsInsertCarriageReturns ( - char *Buffer) -{ - char *SubString; - char *SubBuffer; - - - SubBuffer = Buffer; - SubString = Buffer; - - while (SubString) - { - /* Find the target string */ - - SubString = strstr (SubBuffer, "\n"); - if (!SubString) - { - return; - } - - SubBuffer = AsInsertData (SubString, "\r", 1); - SubBuffer += 1; - } - return; -} - - -/****************************************************************************** - * - * FUNCTION: AsBracesOnSameLine - * - * DESCRIPTION: Move opening braces up to the same line as an if, for, else, - * or while statement (leave function opening brace on separate - * line). - * - ******************************************************************************/ - -void -AsBracesOnSameLine ( - char *Buffer) -{ - UINT32 Length; - char *SubBuffer = Buffer; - char *Beginning; - char *StartOfThisLine; - char *Next; - BOOLEAN BlockBegin = TRUE; - - - while (*SubBuffer) - { - /* Ignore comments */ - - if ((SubBuffer[0] == '/') && - (SubBuffer[1] == '*')) - { - SubBuffer = strstr (SubBuffer, "*/"); - if (!SubBuffer) - { - return; - } - - SubBuffer += 2; - continue; - } - - /* Ignore quoted strings */ - - if (*SubBuffer == '\"') - { - SubBuffer++; - SubBuffer = AsSkipPastChar (SubBuffer, '\"'); - if (!SubBuffer) - { - return; - } - } - - if (!strncmp ("\n}", SubBuffer, 2)) - { - /* - * A newline followed by a closing brace closes a function - * or struct or initializer block - */ - BlockBegin = TRUE; - } - - /* - * Move every standalone brace up to the previous line - * Check for digit will ignore initializer lists surrounded by braces. - * This will work until we we need more complex detection. - */ - if ((*SubBuffer == '{') && !isdigit (SubBuffer[1])) - { - if (BlockBegin) - { - BlockBegin = FALSE; - } - else - { - /* - * Backup to previous non-whitespace - */ - Beginning = SubBuffer - 1; - while ((*Beginning == ' ') || - (*Beginning == '\n')) - { - Beginning--; - } - - StartOfThisLine = Beginning; - while (*StartOfThisLine != '\n') - { - StartOfThisLine--; - } - - /* - * Move the brace up to the previous line, UNLESS: - * - * 1) There is a conditional compile on the line (starts with '#') - * 2) Previous line ends with an '=' (Start of initializer block) - * 3) Previous line ends with a comma (part of an init list) - */ - if ((StartOfThisLine[1] != '#') && - (*Beginning != '/') && - (*Beginning != '{') && - (*Beginning != '=') && - (*Beginning != ',')) - { - Beginning++; - SubBuffer++; - Length = strlen (SubBuffer); - - Gbl_MadeChanges = TRUE; - -#ifdef ADD_EXTRA_WHITESPACE - AsReplaceData (Beginning, SubBuffer - Beginning, " {\n", 3); -#else - /* Find non-whitespace start of next line */ - - Next = SubBuffer + 1; - while ((*Next == ' ') || - (*Next == '\t')) - { - Next++; - } - - /* Find non-whitespace start of this line */ - - StartOfThisLine++; - while ((*StartOfThisLine == ' ') || - (*StartOfThisLine == '\t')) - { - StartOfThisLine++; - } - - /* - * Must be a single-line comment to need more whitespace - * Even then, we don't need more if the previous statement - * is an "else". - */ - if ((Next[0] == '/') && - (Next[1] == '*') && - (Next[2] != '\n') && - - (!strncmp (StartOfThisLine, "else if", 7) || - !strncmp (StartOfThisLine, "else while", 10) || - strncmp (StartOfThisLine, "else", 4))) - { - AsReplaceData (Beginning, SubBuffer - Beginning, " {\n", 3); - } - else - { - AsReplaceData (Beginning, SubBuffer - Beginning, " {", 2); - } -#endif - } - } - } - - SubBuffer++; - } -} - - -/****************************************************************************** - * - * FUNCTION: AsTabify4 - * - * DESCRIPTION: Convert the text to tabbed text. Alignment of text is - * preserved. - * - ******************************************************************************/ - -void -AsTabify4 ( - char *Buffer) -{ - char *SubBuffer = Buffer; - char *NewSubBuffer; - UINT32 SpaceCount = 0; - UINT32 Column = 0; - - - while (*SubBuffer) - { - if (*SubBuffer == '\n') - { - Column = 0; - } - else - { - Column++; - } - - /* Ignore comments */ - - if ((SubBuffer[0] == '/') && - (SubBuffer[1] == '*')) - { - SubBuffer = strstr (SubBuffer, "*/"); - if (!SubBuffer) - { - return; - } - - SubBuffer += 2; - continue; - } - - /* Ignore quoted strings */ - - if (*SubBuffer == '\"') - { - SubBuffer++; - SubBuffer = AsSkipPastChar (SubBuffer, '\"'); - if (!SubBuffer) - { - return; - } - SpaceCount = 0; - } - - if (*SubBuffer == ' ') - { - SpaceCount++; - - if (SpaceCount >= 4) - { - SpaceCount = 0; - - NewSubBuffer = (SubBuffer + 1) - 4; - *NewSubBuffer = '\t'; - NewSubBuffer++; - - /* Remove the spaces */ - - SubBuffer = AsRemoveData (NewSubBuffer, SubBuffer + 1); - } - - if ((Column % 4) == 0) - { - SpaceCount = 0; - } - } - else - { - SpaceCount = 0; - } - - SubBuffer++; - } -} - - -/****************************************************************************** - * - * FUNCTION: AsTabify8 - * - * DESCRIPTION: Convert the text to tabbed text. Alignment of text is - * preserved. - * - ******************************************************************************/ - -void -AsTabify8 ( - char *Buffer) -{ - char *SubBuffer = Buffer; - char *NewSubBuffer; - char *CommentEnd = NULL; - UINT32 SpaceCount = 0; - UINT32 Column = 0; - UINT32 TabCount = 0; - UINT32 LastLineTabCount = 0; - UINT32 LastLineColumnStart = 0; - UINT32 ThisColumnStart = 0; - UINT32 ThisTabCount = 0; - char *FirstNonBlank = NULL; - - - while (*SubBuffer) - { - if (*SubBuffer == '\n') - { - /* This is a standalone blank line */ - - FirstNonBlank = NULL; - Column = 0; - SpaceCount = 0; - TabCount = 0; - SubBuffer++; - continue; - } - - if (!FirstNonBlank) - { - /* Find the first non-blank character on this line */ - - FirstNonBlank = SubBuffer; - while (*FirstNonBlank == ' ') - { - FirstNonBlank++; - } - - /* - * This mechanism limits the difference in tab counts from - * line to line. It helps avoid the situation where a second - * continuation line (which was indented correctly for tabs=4) would - * get indented off the screen if we just blindly converted to tabs. - */ - ThisColumnStart = FirstNonBlank - SubBuffer; - - if (LastLineTabCount == 0) - { - ThisTabCount = 0; - } - else if (ThisColumnStart == LastLineColumnStart) - { - ThisTabCount = LastLineTabCount -1; - } - else - { - ThisTabCount = LastLineTabCount + 1; - } - } - - Column++; - - /* Check if we are in a comment */ - - if ((SubBuffer[0] == '*') && - (SubBuffer[1] == '/')) - { - SpaceCount = 0; - SubBuffer += 2; - - if (*SubBuffer == '\n') - { - if (TabCount > 0) - { - LastLineTabCount = TabCount; - TabCount = 0; - } - FirstNonBlank = NULL; - LastLineColumnStart = ThisColumnStart; - SubBuffer++; - } - - continue; - } - - /* Check for comment open */ - - if ((SubBuffer[0] == '/') && - (SubBuffer[1] == '*')) - { - /* Find the end of the comment, it must exist */ - - CommentEnd = strstr (SubBuffer, "*/"); - if (!CommentEnd) - { - return; - } - - /* Toss the rest of this line or single-line comment */ - - while ((SubBuffer < CommentEnd) && - (*SubBuffer != '\n')) - { - SubBuffer++; - } - - if (*SubBuffer == '\n') - { - if (TabCount > 0) - { - LastLineTabCount = TabCount; - TabCount = 0; - } - FirstNonBlank = NULL; - LastLineColumnStart = ThisColumnStart; - } - - SpaceCount = 0; - continue; - } - - /* Ignore quoted strings */ - - if ((!CommentEnd) && (*SubBuffer == '\"')) - { - SubBuffer++; - SubBuffer = AsSkipPastChar (SubBuffer, '\"'); - if (!SubBuffer) - { - return; - } - SpaceCount = 0; - } - - if (*SubBuffer != ' ') - { - /* Not a space, skip to end of line */ - - SubBuffer = AsSkipUntilChar (SubBuffer, '\n'); - if (!SubBuffer) - { - return; - } - if (TabCount > 0) - { - LastLineTabCount = TabCount; - TabCount = 0; - } - - FirstNonBlank = NULL; - LastLineColumnStart = ThisColumnStart; - Column = 0; - SpaceCount = 0; - } - else - { - /* Another space */ - - SpaceCount++; - - if (SpaceCount >= 4) - { - /* Replace this group of spaces with a tab character */ - - SpaceCount = 0; - - NewSubBuffer = SubBuffer - 3; - - if (TabCount <= ThisTabCount ? (ThisTabCount +1) : 0) - { - *NewSubBuffer = '\t'; - NewSubBuffer++; - SubBuffer++; - TabCount++; - } - - /* Remove the spaces */ - - SubBuffer = AsRemoveData (NewSubBuffer, SubBuffer); - continue; - } - } - - SubBuffer++; - } -} - - -/****************************************************************************** - * - * FUNCTION: AsCountLines - * - * DESCRIPTION: Count the number of lines in the input buffer. Also count - * the number of long lines (lines longer than 80 chars). - * - ******************************************************************************/ - -UINT32 -AsCountLines ( - char *Buffer, - char *Filename) -{ - char *SubBuffer = Buffer; - char *EndOfLine; - UINT32 LineCount = 0; - UINT32 LongLineCount = 0; - - - while (*SubBuffer) - { - EndOfLine = AsSkipUntilChar (SubBuffer, '\n'); - if (!EndOfLine) - { - Gbl_TotalLines += LineCount; - return LineCount; - } - - if ((EndOfLine - SubBuffer) > 80) - { - LongLineCount++; - VERBOSE_PRINT (("long: %.80s\n", SubBuffer)); - } - - LineCount++; - SubBuffer = EndOfLine + 1; - } - - if (LongLineCount) - { - VERBOSE_PRINT (("%d Lines longer than 80 found in %s\n", LongLineCount, Filename)); - Gbl_LongLines += LongLineCount; - } - - Gbl_TotalLines += LineCount; - return LineCount; -} - - -/****************************************************************************** - * - * FUNCTION: AsCountTabs - * - * DESCRIPTION: Simply count the number of tabs in the input file buffer - * - ******************************************************************************/ - -void -AsCountTabs ( - char *Buffer, - char *Filename) -{ - UINT32 i; - UINT32 TabCount = 0; - - - for (i = 0; Buffer[i]; i++) - { - if (Buffer[i] == '\t') - { - TabCount++; - } - } - - if (TabCount) - { - AsPrint ("Tabs found", TabCount, Filename); - Gbl_Tabs += TabCount; - } - - AsCountLines (Buffer, Filename); -} - - -/****************************************************************************** - * - * FUNCTION: AsCountNonAnsiComments - * - * DESCRIPTION: Count the number of "//" comments. This type of comment is - * non-ANSI C. - * - ******************************************************************************/ - -void -AsCountNonAnsiComments ( - char *Buffer, - char *Filename) -{ - char *SubBuffer = Buffer; - UINT32 CommentCount = 0; - - - while (SubBuffer) - { - SubBuffer = strstr (SubBuffer, "//"); - if (SubBuffer) - { - CommentCount++; - SubBuffer += 2; - } - } - - if (CommentCount) - { - AsPrint ("Non-ANSI Comments found", CommentCount, Filename); - Gbl_NonAnsiComments += CommentCount; - } -} - - -/****************************************************************************** - * - * FUNCTION: AsCountSourceLines - * - * DESCRIPTION: Count the number of C source lines. Defined by 1) not a - * comment, and 2) not a blank line. - * - ******************************************************************************/ - -void -AsCountSourceLines ( - char *Buffer, - char *Filename) -{ - char *SubBuffer = Buffer; - UINT32 LineCount = 0; - UINT32 WhiteCount = 0; - UINT32 CommentCount = 0; - - - while (*SubBuffer) - { - /* Ignore comments */ - - if ((SubBuffer[0] == '/') && - (SubBuffer[1] == '*')) - { - CommentCount++; - SubBuffer += 2; - - while (SubBuffer[0] && SubBuffer[1] && - !(((SubBuffer[0] == '*') && - (SubBuffer[1] == '/')))) - { - if (SubBuffer[0] == '\n') - { - CommentCount++; - } - - SubBuffer++; - } - } - - /* A linefeed followed by a non-linefeed is a valid source line */ - - else if ((SubBuffer[0] == '\n') && - (SubBuffer[1] != '\n')) - { - LineCount++; - } - - /* Two back-to-back linefeeds indicate a whitespace line */ - - else if ((SubBuffer[0] == '\n') && - (SubBuffer[1] == '\n')) - { - WhiteCount++; - } - - SubBuffer++; - } - - /* Adjust comment count for legal header */ - - CommentCount -= LINES_IN_LEGAL_HEADER; - - Gbl_SourceLines += LineCount; - Gbl_WhiteLines += WhiteCount; - Gbl_CommentLines += CommentCount; - - VERBOSE_PRINT (("%d Comment %d White %d Code %d Lines in %s\n", - CommentCount, WhiteCount, LineCount, LineCount+WhiteCount+CommentCount, Filename)); -} - - -/****************************************************************************** - * - * FUNCTION: AsInsertPrefix - * - * DESCRIPTION: Insert struct or union prefixes - * - ******************************************************************************/ - -void -AsInsertPrefix ( - char *Buffer, - char *Keyword, - UINT8 Type) -{ - char *SubString; - char *SubBuffer; - char *EndKeyword; - int StrLength; - int InsertLength; - char *InsertString; - int TrailingSpaces; - char LowerKeyword[128]; - int KeywordLength; - - - switch (Type) - { - case SRC_TYPE_STRUCT: - InsertString = "struct "; - break; - - case SRC_TYPE_UNION: - InsertString = "union "; - break; - - default: - return; - } - - strcpy (LowerKeyword, Keyword); - strlwr (LowerKeyword); - - SubBuffer = Buffer; - SubString = Buffer; - InsertLength = strlen (InsertString); - KeywordLength = strlen (Keyword); - - - while (SubString) - { - /* Find an instance of the keyword */ - - SubString = strstr (SubBuffer, LowerKeyword); - - if (!SubString) - { - return; - } - - SubBuffer = SubString; - - /* Must be standalone word, not a substring */ - - if (AsMatchExactWord (SubString, KeywordLength)) - { - /* Make sure the keyword isn't already prefixed with the insert */ - - if (!strncmp (SubString - InsertLength, InsertString, InsertLength)) - { - /* Add spaces if not already at the end-of-line */ - - if (*(SubBuffer + KeywordLength) != '\n') - { - /* Already present, add spaces after to align structure members */ - -// ONLY FOR C FILES -// AsInsertData (SubBuffer + KeywordLength, " ", 8); - } - goto Next; - } - - /* Make sure the keyword isn't at the end of a struct/union */ - /* Note: This code depends on a single space after the brace */ - - if (*(SubString - 2) == '}') - { - goto Next; - } - - /* Prefix the keyword with the insert string */ - - Gbl_MadeChanges = TRUE; - StrLength = strlen (SubString); - - /* Is there room for insertion */ - - EndKeyword = SubString + strlen (LowerKeyword); - - TrailingSpaces = 0; - while (EndKeyword[TrailingSpaces] == ' ') - { - TrailingSpaces++; - } - - /* - * Use "if (TrailingSpaces > 1)" if we want to ignore casts - */ - SubBuffer = SubString + InsertLength; - - if (TrailingSpaces > InsertLength) - { - /* Insert the keyword */ - - memmove (SubBuffer, SubString, KeywordLength); - - /* Insert the keyword */ - - memmove (SubString, InsertString, InsertLength); - } - else - { - AsInsertData (SubString, InsertString, InsertLength); - } - } - -Next: - SubBuffer += KeywordLength; - } -} - -#ifdef ACPI_FUTURE_IMPLEMENTATION -/****************************************************************************** - * - * FUNCTION: AsTrimComments - * - * DESCRIPTION: Finds 3-line comments with only a single line of text - * - ******************************************************************************/ - -void -AsTrimComments ( - char *Buffer, - char *Filename) -{ - char *SubBuffer = Buffer; - char *Ptr1; - char *Ptr2; - UINT32 LineCount; - UINT32 ShortCommentCount = 0; - - - while (1) - { - /* Find comment open, within procedure level */ - - SubBuffer = strstr (SubBuffer, " /*"); - if (!SubBuffer) - { - goto Exit; - } - - /* Find comment terminator */ - - Ptr1 = strstr (SubBuffer, "*/"); - if (!Ptr1) - { - goto Exit; - } - - /* Find next EOL (from original buffer) */ - - Ptr2 = strstr (SubBuffer, "\n"); - if (!Ptr2) - { - goto Exit; - } - - /* Ignore one-line comments */ - - if (Ptr1 < Ptr2) - { - /* Normal comment, ignore and continue; */ - - SubBuffer = Ptr2; - continue; - } - - /* Examine multi-line comment */ - - LineCount = 1; - while (Ptr1 > Ptr2) - { - /* Find next EOL */ - - Ptr2++; - Ptr2 = strstr (Ptr2, "\n"); - if (!Ptr2) - { - goto Exit; - } - - LineCount++; - } - - SubBuffer = Ptr1; - - if (LineCount <= 3) - { - ShortCommentCount++; - } - } - - -Exit: - - if (ShortCommentCount) - { - AsPrint ("Short Comments found", ShortCommentCount, Filename); - } -} -#endif - - diff --git a/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/asfile.c b/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/asfile.c deleted file mode 100644 index 5a238ffc6d..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/asfile.c +++ /dev/null @@ -1,823 +0,0 @@ - -/****************************************************************************** - * - * Module Name: asfile - Main module for the acpi source processor utility - * $Revision: 1.38 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpisrc.h" - - -/****************************************************************************** - * - * FUNCTION: AsDoWildcard - * - * DESCRIPTION: Process files via wildcards - * - ******************************************************************************/ - -void -AsDoWildcard ( - ACPI_CONVERSION_TABLE *ConversionTable, - char *SourcePath, - char *TargetPath, - int MaxPathLength, - int FileType, - char *WildcardSpec) -{ - void *DirInfo; - char *Filename; - char *SourceDirPath; - char *TargetDirPath; - char RequestedFileType; - - - if (FileType == FILE_TYPE_DIRECTORY) - { - RequestedFileType = REQUEST_DIR_ONLY; - } - else - { - RequestedFileType = REQUEST_FILE_ONLY; - } - - VERBOSE_PRINT (("Checking for %s source files in directory \"%s\"\n", - WildcardSpec, SourcePath)); - - /* Open the directory for wildcard search */ - - DirInfo = AcpiOsOpenDirectory (SourcePath, WildcardSpec, RequestedFileType); - if (DirInfo) - { - /* - * Get all of the files that match both the - * wildcard and the requested file type - */ - while ((Filename = AcpiOsGetNextFilename (DirInfo))) - { - /* Looking for directory files, must check file type */ - - switch (RequestedFileType) - { - case REQUEST_DIR_ONLY: - - /* If we actually have a dir, process the subtree */ - - if (!AsCheckForDirectory (SourcePath, TargetPath, Filename, - &SourceDirPath, &TargetDirPath)) - { - VERBOSE_PRINT (("Subdirectory: %s\n", Filename)); - - AsProcessTree (ConversionTable, SourceDirPath, TargetDirPath); - free (SourceDirPath); - free (TargetDirPath); - } - break; - - case REQUEST_FILE_ONLY: - - /* Otherwise, this is a file, not a directory */ - - VERBOSE_PRINT (("File: %s\n", Filename)); - - AsProcessOneFile (ConversionTable, SourcePath, TargetPath, - MaxPathLength, Filename, FileType); - break; - } - } - - /* Cleanup */ - - AcpiOsCloseDirectory (DirInfo); - } -} - - -/****************************************************************************** - * - * FUNCTION: AsProcessTree - * - * DESCRIPTION: Process the directory tree. Files with the extension ".C" and - * ".H" are processed as the tree is traversed. - * - ******************************************************************************/ - -ACPI_NATIVE_INT -AsProcessTree ( - ACPI_CONVERSION_TABLE *ConversionTable, - char *SourcePath, - char *TargetPath) -{ - int MaxPathLength; - - - MaxPathLength = max (strlen (SourcePath), strlen (TargetPath)); - - if (!(ConversionTable->Flags & FLG_NO_FILE_OUTPUT)) - { - if (ConversionTable->Flags & FLG_LOWERCASE_DIRNAMES) - { - strlwr (TargetPath); - } - - VERBOSE_PRINT (("Creating Directory \"%s\"\n", TargetPath)); - if (mkdir (TargetPath)) - { - if (errno != EEXIST) - { - printf ("Could not create target directory\n"); - return -1; - } - } - } - - /* Do the C source files */ - - AsDoWildcard (ConversionTable, SourcePath, TargetPath, MaxPathLength, - FILE_TYPE_SOURCE, "*.c"); - - /* Do the C header files */ - - AsDoWildcard (ConversionTable, SourcePath, TargetPath, MaxPathLength, - FILE_TYPE_HEADER, "*.h"); - - /* Do the Lex file(s) */ - - AsDoWildcard (ConversionTable, SourcePath, TargetPath, MaxPathLength, - FILE_TYPE_SOURCE, "*.l"); - - /* Do the yacc file(s) */ - - AsDoWildcard (ConversionTable, SourcePath, TargetPath, MaxPathLength, - FILE_TYPE_SOURCE, "*.y"); - - /* Do any subdirectories */ - - AsDoWildcard (ConversionTable, SourcePath, TargetPath, MaxPathLength, - FILE_TYPE_DIRECTORY, "*"); - - return 0; -} - - -/****************************************************************************** - * - * FUNCTION: AsDetectLoneLineFeeds - * - * DESCRIPTION: Find LF without CR. - * - ******************************************************************************/ - -BOOLEAN -AsDetectLoneLineFeeds ( - char *Filename, - char *Buffer) -{ - UINT32 i = 1; - UINT32 LfCount = 0; - - - if (!Buffer[0]) - { - return FALSE; - } - - while (Buffer[i]) - { - if (Buffer[i] == 0x0A) - { - if (Buffer[i-1] != 0x0D) - { - LfCount++; - } - } - - i++; - } - - if (LfCount) - { - printf ("****UNIX CONTAMINATION DETECTED****\n"); - printf ("%d lone linefeeds in file %s\n", LfCount, Filename); - return TRUE; - } - - return (FALSE); -} - - -/****************************************************************************** - * - * FUNCTION: AsConvertFile - * - * DESCRIPTION: Perform the requested transforms on the file buffer (as - * determined by the ConversionTable and the FileType). - * - ******************************************************************************/ - -void -AsConvertFile ( - ACPI_CONVERSION_TABLE *ConversionTable, - char *FileBuffer, - char *Filename, - ACPI_NATIVE_INT FileType) -{ - UINT32 i; - UINT32 Functions; - ACPI_STRING_TABLE *StringTable; - ACPI_IDENTIFIER_TABLE *ConditionalTable; - ACPI_IDENTIFIER_TABLE *LineTable; - ACPI_IDENTIFIER_TABLE *MacroTable; - ACPI_TYPED_IDENTIFIER_TABLE *StructTable; - - - switch (FileType) - { - case FILE_TYPE_SOURCE: - Functions = ConversionTable->SourceFunctions; - StringTable = ConversionTable->SourceStringTable; - LineTable = ConversionTable->SourceLineTable; - ConditionalTable = ConversionTable->SourceConditionalTable; - MacroTable = ConversionTable->SourceMacroTable; - StructTable = ConversionTable->SourceStructTable; - break; - - case FILE_TYPE_HEADER: - Functions = ConversionTable->HeaderFunctions; - StringTable = ConversionTable->HeaderStringTable; - LineTable = ConversionTable->HeaderLineTable; - ConditionalTable = ConversionTable->HeaderConditionalTable; - MacroTable = ConversionTable->HeaderMacroTable; - StructTable = ConversionTable->HeaderStructTable; - break; - - default: - printf ("Unknown file type, cannot process\n"); - return; - } - - - Gbl_StructDefs = strstr (FileBuffer, "/* acpisrc:StructDefs"); - Gbl_Files++; - VERBOSE_PRINT (("Processing %u bytes\n", strlen (FileBuffer))); - - if (ConversionTable->LowerCaseTable) - { - for (i = 0; ConversionTable->LowerCaseTable[i].Identifier; i++) - { - AsLowerCaseString (ConversionTable->LowerCaseTable[i].Identifier, - FileBuffer); - } - } - - /* Process all the string replacements */ - - if (StringTable) - { - for (i = 0; StringTable[i].Target; i++) - { - AsReplaceString (StringTable[i].Target, StringTable[i].Replacement, - StringTable[i].Type, FileBuffer); - } - } - - if (LineTable) - { - for (i = 0; LineTable[i].Identifier; i++) - { - AsRemoveLine (FileBuffer, LineTable[i].Identifier); - } - } - - if (ConditionalTable) - { - for (i = 0; ConditionalTable[i].Identifier; i++) - { - AsRemoveConditionalCompile (FileBuffer, ConditionalTable[i].Identifier); - } - } - - if (MacroTable) - { - for (i = 0; MacroTable[i].Identifier; i++) - { - AsRemoveMacro (FileBuffer, MacroTable[i].Identifier); - } - } - - if (StructTable) - { - for (i = 0; StructTable[i].Identifier; i++) - { - AsInsertPrefix (FileBuffer, StructTable[i].Identifier, StructTable[i].Type); - } - } - - /* Process the function table */ - - for (i = 0; i < 32; i++) - { - /* Decode the function bitmap */ - - switch ((1 << i) & Functions) - { - case 0: - /* This function not configured */ - break; - - - case CVT_COUNT_TABS: - - AsCountTabs (FileBuffer, Filename); - break; - - - case CVT_COUNT_NON_ANSI_COMMENTS: - - AsCountNonAnsiComments (FileBuffer, Filename); - break; - - - case CVT_CHECK_BRACES: - - AsCheckForBraces (FileBuffer, Filename); - break; - - - case CVT_TRIM_LINES: - - AsTrimLines (FileBuffer, Filename); - break; - - - case CVT_COUNT_LINES: - - AsCountSourceLines (FileBuffer, Filename); - break; - - - case CVT_BRACES_ON_SAME_LINE: - - AsBracesOnSameLine (FileBuffer); - break; - - - case CVT_MIXED_CASE_TO_UNDERSCORES: - - AsMixedCaseToUnderscores (FileBuffer); - break; - - - case CVT_LOWER_CASE_IDENTIFIERS: - - AsLowerCaseIdentifiers (FileBuffer); - break; - - - case CVT_REMOVE_DEBUG_MACROS: - - AsRemoveDebugMacros (FileBuffer); - break; - - - case CVT_TRIM_WHITESPACE: - - AsTrimWhitespace (FileBuffer); - break; - - - case CVT_REMOVE_EMPTY_BLOCKS: - - AsRemoveEmptyBlocks (FileBuffer, Filename); - break; - - - case CVT_REDUCE_TYPEDEFS: - - AsReduceTypedefs (FileBuffer, "typedef union"); - AsReduceTypedefs (FileBuffer, "typedef struct"); - break; - - - case CVT_SPACES_TO_TABS4: - - AsTabify4 (FileBuffer); - break; - - - case CVT_SPACES_TO_TABS8: - - AsTabify8 (FileBuffer); - break; - - case CVT_COUNT_SHORTMULTILINE_COMMENTS: - -#ifdef ACPI_FUTURE_IMPLEMENTATION - AsTrimComments (FileBuffer, Filename); -#endif - break; - - default: - - printf ("Unknown conversion subfunction opcode\n"); - break; - } - } - - if (ConversionTable->NewHeader) - { - AsReplaceHeader (FileBuffer, ConversionTable->NewHeader); - } -} - - -/****************************************************************************** - * - * FUNCTION: AsProcessOneFile - * - * DESCRIPTION: Process one source file. The file is opened, read entirely - * into a buffer, converted, then written to a new file. - * - ******************************************************************************/ - -ACPI_NATIVE_INT -AsProcessOneFile ( - ACPI_CONVERSION_TABLE *ConversionTable, - char *SourcePath, - char *TargetPath, - int MaxPathLength, - char *Filename, - ACPI_NATIVE_INT FileType) -{ - char *Pathname; - char *OutPathname = NULL; - - - /* Allocate a file pathname buffer for both source and target */ - - Pathname = calloc (MaxPathLength + strlen (Filename) + 2, 1); - if (!Pathname) - { - printf ("Could not allocate buffer for file pathnames\n"); - return -1; - } - - Gbl_FileType = FileType; - - /* Generate the source pathname and read the file */ - - if (SourcePath) - { - strcpy (Pathname, SourcePath); - strcat (Pathname, "/"); - } - - strcat (Pathname, Filename); - - if (AsGetFile (Pathname, &Gbl_FileBuffer, &Gbl_FileSize)) - { - return -1; - } - - /* Process the file in the buffer */ - - Gbl_MadeChanges = FALSE; - AsConvertFile (ConversionTable, Gbl_FileBuffer, Pathname, FileType); - - if (!(ConversionTable->Flags & FLG_NO_FILE_OUTPUT)) - { - if (!(Gbl_Overwrite && !Gbl_MadeChanges)) - { - /* Generate the target pathname and write the file */ - - OutPathname = calloc (MaxPathLength + strlen (Filename) + 2 + strlen (TargetPath), 1); - if (!OutPathname) - { - printf ("Could not allocate buffer for file pathnames\n"); - return -1; - } - - strcpy (OutPathname, TargetPath); - if (SourcePath) - { - strcat (OutPathname, "/"); - strcat (OutPathname, Filename); - } - - AsPutFile (OutPathname, Gbl_FileBuffer, ConversionTable->Flags); - } - } - - free (Gbl_FileBuffer); - free (Pathname); - if (OutPathname) - { - free (OutPathname); - } - - return 0; -} - - -/****************************************************************************** - * - * FUNCTION: AsCheckForDirectory - * - * DESCRIPTION: Check if the current file is a valid directory. If not, - * construct the full pathname for the source and target paths. - * Checks for the dot and dot-dot files (they are ignored) - * - ******************************************************************************/ - -ACPI_NATIVE_INT -AsCheckForDirectory ( - char *SourceDirPath, - char *TargetDirPath, - char *Filename, - char **SourcePath, - char **TargetPath) -{ - char *SrcPath; - char *TgtPath; - - - if (!(strcmp (Filename, ".")) || - !(strcmp (Filename, ".."))) - { - return -1; - } - - SrcPath = calloc (strlen (SourceDirPath) + strlen (Filename) + 2, 1); - if (!SrcPath) - { - printf ("Could not allocate buffer for directory source pathname\n"); - return -1; - } - - TgtPath = calloc (strlen (TargetDirPath) + strlen (Filename) + 2, 1); - if (!TgtPath) - { - printf ("Could not allocate buffer for directory target pathname\n"); - free (SrcPath); - return -1; - } - - strcpy (SrcPath, SourceDirPath); - strcat (SrcPath, "/"); - strcat (SrcPath, Filename); - - strcpy (TgtPath, TargetDirPath); - strcat (TgtPath, "/"); - strcat (TgtPath, Filename); - - *SourcePath = SrcPath; - *TargetPath = TgtPath; - return 0; -} - - -/****************************************************************************** - * - * FUNCTION: AsGetFile - * - * DESCRIPTION: Open a file and read it entirely into a an allocated buffer - * - ******************************************************************************/ - -int -AsGetFile ( - char *Filename, - char **FileBuffer, - UINT32 *FileSize) -{ - - int FileHandle; - UINT32 Size; - char *Buffer; - - - /* Binary mode leaves CR/LF pairs */ - - FileHandle = open (Filename, O_BINARY | O_RDONLY); - if (!FileHandle) - { - printf ("Could not open %s\n", Filename); - return -1; - } - - if (fstat (FileHandle, &Gbl_StatBuf)) - { - printf ("Could not get file status for %s\n", Filename); - goto ErrorExit; - } - - /* - * Create a buffer for the entire file - * Add plenty extra buffer to accomodate string replacements - */ - Size = Gbl_StatBuf.st_size; - Buffer = calloc (Size * 2, 1); - if (!Buffer) - { - printf ("Could not allocate buffer of size %d\n", Size * 2); - goto ErrorExit; - } - - /* Read the entire file */ - - Size = read (FileHandle, Buffer, Size); - if (Size == -1) - { - printf ("Could not read the input file %s\n", Filename); - goto ErrorExit; - } - - Buffer [Size] = 0; /* Null terminate the buffer */ - close (FileHandle); - - /* Check for unix contamination */ - - if (!Gbl_IgnoreLoneLineFeeds && AsDetectLoneLineFeeds (Filename, Buffer)) - { - return -1; - } - - /* - * Convert all CR/LF pairs to LF only. We do this locally so that - * this code is portable across operating systems. - */ - AsConvertToLineFeeds (Buffer); - - *FileBuffer = Buffer; - *FileSize = Size; - - return 0; - - -ErrorExit: - - close (FileHandle); - return -1; -} - - -/****************************************************************************** - * - * FUNCTION: AsPutFile - * - * DESCRIPTION: Create a new output file and write the entire contents of the - * buffer to the new file. Buffer must be a zero terminated string - * - ******************************************************************************/ - -int -AsPutFile ( - char *Pathname, - char *FileBuffer, - UINT32 SystemFlags) -{ - UINT32 FileSize; - int DestHandle; - int OpenFlags; - - - /* Create the target file */ - - OpenFlags = O_TRUNC | O_CREAT | O_WRONLY | O_BINARY; - - if (!(SystemFlags & FLG_NO_CARRIAGE_RETURNS)) - { - /* Put back the CR before each LF */ - - AsInsertCarriageReturns (FileBuffer); - } - - DestHandle = open (Pathname, OpenFlags, S_IREAD | S_IWRITE); - if (DestHandle == -1) - { - perror ("Could not create destination file"); - printf ("Could not create destination file \"%s\"\n", Pathname); - return -1; - } - - /* Write the buffer to the file */ - - FileSize = strlen (FileBuffer); - write (DestHandle, FileBuffer, FileSize); - - close (DestHandle); - - return 0; -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/asmain.c b/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/asmain.c deleted file mode 100644 index eabfa2057e..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/asmain.c +++ /dev/null @@ -1,433 +0,0 @@ - -/****************************************************************************** - * - * Module Name: asmain - Main module for the acpi source processor utility - * $Revision: 1.99 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpisrc.h" -#include "acapps.h" - - -/* Globals */ - -UINT32 Gbl_Tabs = 0; -UINT32 Gbl_MissingBraces = 0; -UINT32 Gbl_NonAnsiComments = 0; -UINT32 Gbl_Files = 0; -UINT32 Gbl_WhiteLines = 0; -UINT32 Gbl_CommentLines = 0; -UINT32 Gbl_SourceLines = 0; -UINT32 Gbl_LongLines = 0; -UINT32 Gbl_TotalLines = 0; -void *Gbl_StructDefs = NULL; - -struct stat Gbl_StatBuf; -char *Gbl_FileBuffer; -UINT32 Gbl_FileSize; -UINT32 Gbl_FileType; -BOOLEAN Gbl_VerboseMode = FALSE; -BOOLEAN Gbl_BatchMode = FALSE; -BOOLEAN Gbl_DebugStatementsMode = FALSE; -BOOLEAN Gbl_MadeChanges = FALSE; -BOOLEAN Gbl_Overwrite = FALSE; -BOOLEAN Gbl_WidenDeclarations = FALSE; -BOOLEAN Gbl_IgnoreLoneLineFeeds = FALSE; - - -/****************************************************************************** - * - * FUNCTION: AsExaminePaths - * - * DESCRIPTION: Source and Target pathname verification and handling - * - ******************************************************************************/ - -int -AsExaminePaths ( - ACPI_CONVERSION_TABLE *ConversionTable, - char *Source, - char *Target, - UINT32 *SourceFileType) -{ - int Status; - char Response; - - - Status = stat (Source, &Gbl_StatBuf); - if (Status) - { - printf ("Source path \"%s\" does not exist\n", Source); - return -1; - } - - /* Return the filetype -- file or a directory */ - - *SourceFileType = 0; - if (Gbl_StatBuf.st_mode & S_IFDIR) - { - *SourceFileType = S_IFDIR; - } - - /* - * If we are in no-output mode or in batch mode, we are done - */ - if ((ConversionTable->Flags & FLG_NO_FILE_OUTPUT) || - (Gbl_BatchMode)) - { - return 0; - } - - if (!stricmp (Source, Target)) - { - printf ("Target path is the same as the source path, overwrite?\n"); - scanf ("%c", &Response); - - /* Check response */ - - if ((char) Response != 'y') - { - return -1; - } - - Gbl_Overwrite = TRUE; - } - else - { - Status = stat (Target, &Gbl_StatBuf); - if (!Status) - { - printf ("Target path already exists, overwrite?\n"); - scanf ("%c", &Response); - - /* Check response */ - - if ((char) Response != 'y') - { - return -1; - } - } - } - - return 0; -} - - -/****************************************************************************** - * - * FUNCTION: AsDisplayStats - * - * DESCRIPTION: Display global statistics gathered during translation - * - ******************************************************************************/ - -void -AsDisplayStats (void) -{ - - printf ("\nAcpiSrc statistics:\n\n"); - printf ("%6d Files processed\n", Gbl_Files); - printf ("%6d Tabs found\n", Gbl_Tabs); - printf ("%6d Missing if/else braces\n", Gbl_MissingBraces); - printf ("%6d Non-ANSI comments found\n", Gbl_NonAnsiComments); - printf ("%6d Total Lines\n", Gbl_TotalLines); - printf ("%6d Lines of code\n", Gbl_SourceLines); - printf ("%6d Lines of non-comment whitespace\n", Gbl_WhiteLines); - printf ("%6d Lines of comments\n", Gbl_CommentLines); - printf ("%6d Long lines found\n", Gbl_LongLines); - printf ("%6.1f Ratio of code to whitespace\n", ((float) Gbl_SourceLines / (float) Gbl_WhiteLines)); - printf ("%6.1f Ratio of code to comments\n", ((float) Gbl_SourceLines / (float) Gbl_CommentLines)); - return; -} - - -/****************************************************************************** - * - * FUNCTION: AsDisplayUsage - * - * DESCRIPTION: Usage message - * - ******************************************************************************/ - -void -AsDisplayUsage (void) -{ - - printf ("\n"); - printf ("Usage: acpisrc [-c|l|u] [-dsvy] \n\n"); - printf ("Where: -c Generate cleaned version of the source\n"); - printf (" -l Generate Linux version of the source\n"); - printf (" -u Generate Custom source translation\n"); - printf ("\n"); - printf (" -d Leave debug statements in code\n"); - printf (" -s Generate source statistics only\n"); - printf (" -v Verbose mode\n"); - printf (" -y Suppress file overwrite prompts\n"); - printf ("\n"); - return; -} - - -/****************************************************************************** - * - * FUNCTION: main - * - * DESCRIPTION: C main function - * - ******************************************************************************/ - -int ACPI_SYSTEM_XFACE -main ( - int argc, - char *argv[]) -{ - int j; - ACPI_CONVERSION_TABLE *ConversionTable = NULL; - char *SourcePath; - char *TargetPath; - UINT32 FileType; - - - printf ("ACPI Source Code Conversion Utility"); - printf (" version %8.8X", ((UINT32) ACPI_CA_VERSION)); - printf (" [%s]\n\n", __DATE__); - - if (argc < 2) - { - AsDisplayUsage (); - return 0; - } - - /* Command line options */ - - while ((j = AcpiGetopt (argc, argv, "lcsuvyd")) != EOF) switch(j) - { - case 'l': - /* Linux code generation */ - - printf ("Creating Linux source code\n"); - ConversionTable = &LinuxConversionTable; - Gbl_WidenDeclarations = TRUE; - Gbl_IgnoreLoneLineFeeds = TRUE; - break; - - case 'c': - /* Cleanup code */ - - printf ("Code cleanup\n"); - ConversionTable = &CleanupConversionTable; - break; - - case 's': - /* Statistics only */ - - break; - - case 'u': - /* custom conversion */ - - printf ("Custom source translation\n"); - ConversionTable = &CustomConversionTable; - break; - - case 'v': - /* Verbose mode */ - - Gbl_VerboseMode = TRUE; - break; - - case 'y': - /* Batch mode */ - - Gbl_BatchMode = TRUE; - break; - - case 'd': - /* Leave debug statements in */ - - Gbl_DebugStatementsMode = TRUE; - break; - - default: - AsDisplayUsage (); - return -1; - } - - - SourcePath = argv[AcpiGbl_Optind]; - if (!SourcePath) - { - printf ("Missing source path\n"); - AsDisplayUsage (); - return -1; - } - - TargetPath = argv[AcpiGbl_Optind+1]; - - if (!ConversionTable) - { - /* Just generate statistics. Ignore target path */ - - TargetPath = SourcePath; - - printf ("Source code statistics only\n"); - ConversionTable = &StatsConversionTable; - } - else if (!TargetPath) - { - TargetPath = SourcePath; - } - - if (Gbl_DebugStatementsMode) - { - ConversionTable->SourceFunctions &= ~CVT_REMOVE_DEBUG_MACROS; - } - - /* Check source and target paths and files */ - - if (AsExaminePaths (ConversionTable, SourcePath, TargetPath, &FileType)) - { - return -1; - } - - /* Source/target can be either directories or a files */ - - if (FileType == S_IFDIR) - { - /* Process the directory tree */ - - AsProcessTree (ConversionTable, SourcePath, TargetPath); - } - else - { - /* Process a single file */ - - /* Differentiate between source and header files */ - - if (strstr (SourcePath, ".h")) - { - AsProcessOneFile (ConversionTable, NULL, TargetPath, 0, SourcePath, FILE_TYPE_HEADER); - } - else - { - AsProcessOneFile (ConversionTable, NULL, TargetPath, 0, SourcePath, FILE_TYPE_SOURCE); - } - } - - /* Always display final summary and stats */ - - AsDisplayStats (); - - return 0; -} diff --git a/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/asremove.c b/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/asremove.c deleted file mode 100644 index b114024d30..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/asremove.c +++ /dev/null @@ -1,681 +0,0 @@ - -/****************************************************************************** - * - * Module Name: asremove - Source conversion - removal functions - * $Revision: 1.9 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpisrc.h" - - -/****************************************************************************** - * - * FUNCTION: AsRemoveStatement - * - * DESCRIPTION: Remove all statements that contain the given keyword. - * Limitations: Removes text from the start of the line that - * contains the keyword to the next semicolon. Currently - * doesn't ignore comments. - * - ******************************************************************************/ - -void -AsRemoveStatement ( - char *Buffer, - char *Keyword, - UINT32 Type) -{ - char *SubString; - char *SubBuffer; - int KeywordLength; - - - KeywordLength = strlen (Keyword); - SubBuffer = Buffer; - SubString = Buffer; - - - while (SubString) - { - SubString = strstr (SubBuffer, Keyword); - - if (SubString) - { - SubBuffer = SubString; - - if ((Type == REPLACE_WHOLE_WORD) && - (!AsMatchExactWord (SubString, KeywordLength))) - { - SubBuffer++; - continue; - } - - /* Find start of this line */ - - while (*SubString != '\n') - { - SubString--; - } - SubString++; - - /* Find end of this statement */ - - SubBuffer = AsSkipPastChar (SubBuffer, ';'); - if (!SubBuffer) - { - return; - } - - /* Find end of this line */ - - SubBuffer = AsSkipPastChar (SubBuffer, '\n'); - if (!SubBuffer) - { - return; - } - - /* If next line is blank, remove it too */ - - if (*SubBuffer == '\n') - { - SubBuffer++; - } - - /* Remove the lines */ - - SubBuffer = AsRemoveData (SubString, SubBuffer); - } - } -} - - -/****************************************************************************** - * - * FUNCTION: AsRemoveConditionalCompile - * - * DESCRIPTION: Remove a "#ifdef" statement, and all text that it encompasses. - * Limitations: cannot handle nested ifdefs. - * - ******************************************************************************/ - -void -AsRemoveConditionalCompile ( - char *Buffer, - char *Keyword) -{ - char *SubString; - char *SubBuffer; - char *IfPtr; - char *EndifPtr; - char *ElsePtr; - char *Comment; - int KeywordLength; - - - KeywordLength = strlen (Keyword); - SubBuffer = Buffer; - SubString = Buffer; - - - while (SubString) - { - SubBuffer = strstr (SubString, Keyword); - if (!SubBuffer) - { - return; - } - - /* - * Check for translation escape string -- means to ignore - * blocks of code while replacing - */ - Comment = strstr (SubString, AS_START_IGNORE); - - if ((Comment) && - (Comment < SubBuffer)) - { - SubString = strstr (Comment, AS_STOP_IGNORE); - if (!SubString) - { - return; - } - - SubString += 3; - continue; - } - - /* Check for ordinary comment */ - - Comment = strstr (SubString, "/*"); - - if ((Comment) && - (Comment < SubBuffer)) - { - SubString = strstr (Comment, "*/"); - if (!SubString) - { - return; - } - - SubString += 2; - continue; - } - - SubString = SubBuffer; - if (!AsMatchExactWord (SubString, KeywordLength)) - { - SubString++; - continue; - } - - /* Find start of this line */ - - while (*SubString != '\n' && (SubString > Buffer)) - { - SubString--; - } - SubString++; - - /* Find the "#ifxxxx" */ - - IfPtr = strstr (SubString, "#if"); - if (!IfPtr) - { - return; - } - - if (IfPtr > SubBuffer) - { - /* Not the right #if */ - - SubString = SubBuffer + strlen (Keyword); - continue; - } - - /* Find closing #endif or #else */ - - EndifPtr = strstr (SubBuffer, "#endif"); - if (!EndifPtr) - { - /* There has to be an #endif */ - - return; - } - - ElsePtr = strstr (SubBuffer, "#else"); - if ((ElsePtr) && - (EndifPtr > ElsePtr)) - { - /* This #ifdef contains an #else clause */ - /* Find end of this line */ - - SubBuffer = AsSkipPastChar (ElsePtr, '\n'); - if (!SubBuffer) - { - return; - } - - /* Remove the #ifdef .... #else code */ - - AsRemoveData (SubString, SubBuffer); - - /* Next, we will remove the #endif statement */ - - EndifPtr = strstr (SubString, "#endif"); - if (!EndifPtr) - { - /* There has to be an #endif */ - - return; - } - - SubString = EndifPtr; - } - - /* Remove the ... #endif part */ - /* Find end of this line */ - - SubBuffer = AsSkipPastChar (EndifPtr, '\n'); - if (!SubBuffer) - { - return; - } - - /* Remove the lines */ - - SubBuffer = AsRemoveData (SubString, SubBuffer); - } -} - - -/****************************************************************************** - * - * FUNCTION: AsRemoveMacro - * - * DESCRIPTION: Remove every line that contains the keyword. Does not - * skip comments. - * - ******************************************************************************/ - -void -AsRemoveMacro ( - char *Buffer, - char *Keyword) -{ - char *SubString; - char *SubBuffer; - int NestLevel; - - - SubBuffer = Buffer; - SubString = Buffer; - - - while (SubString) - { - SubString = strstr (SubBuffer, Keyword); - - if (SubString) - { - SubBuffer = SubString; - - /* Find start of the macro parameters */ - - while (*SubString != '(') - { - SubString++; - } - SubString++; - - /* Remove the macro name and opening paren */ - - SubString = AsRemoveData (SubBuffer, SubString); - - NestLevel = 1; - while (*SubString) - { - if (*SubString == '(') - { - NestLevel++; - } - else if (*SubString == ')') - { - NestLevel--; - } - - SubString++; - - if (NestLevel == 0) - { - break; - } - } - - /* Remove the closing paren */ - - SubBuffer = AsRemoveData (SubString-1, SubString); - } - } -} - - -/****************************************************************************** - * - * FUNCTION: AsRemoveLine - * - * DESCRIPTION: Remove every line that contains the keyword. Does not - * skip comments. - * - ******************************************************************************/ - -void -AsRemoveLine ( - char *Buffer, - char *Keyword) -{ - char *SubString; - char *SubBuffer; - - - SubBuffer = Buffer; - SubString = Buffer; - - - while (SubString) - { - SubString = strstr (SubBuffer, Keyword); - - if (SubString) - { - SubBuffer = SubString; - - /* Find start of this line */ - - while (*SubString != '\n') - { - SubString--; - } - SubString++; - - /* Find end of this line */ - - SubBuffer = AsSkipPastChar (SubBuffer, '\n'); - if (!SubBuffer) - { - return; - } - - /* Remove the line */ - - SubBuffer = AsRemoveData (SubString, SubBuffer); - } - } -} - - -/****************************************************************************** - * - * FUNCTION: AsReduceTypedefs - * - * DESCRIPTION: Eliminate certain typedefs - * - ******************************************************************************/ - -void -AsReduceTypedefs ( - char *Buffer, - char *Keyword) -{ - char *SubString; - char *SubBuffer; - int NestLevel; - - - SubBuffer = Buffer; - SubString = Buffer; - - - while (SubString) - { - SubString = strstr (SubBuffer, Keyword); - - if (SubString) - { - /* Remove the typedef itself */ - - SubBuffer = SubString + strlen ("typedef") + 1; - SubBuffer = AsRemoveData (SubString, SubBuffer); - - /* Find the opening brace of the struct or union */ - - while (*SubString != '{') - { - SubString++; - } - SubString++; - - /* Find the closing brace. Handles nested braces */ - - NestLevel = 1; - while (*SubString) - { - if (*SubString == '{') - { - NestLevel++; - } - else if (*SubString == '}') - { - NestLevel--; - } - - SubString++; - - if (NestLevel == 0) - { - break; - } - } - - /* Remove an extra line feed if present */ - - if (!strncmp (SubString - 3, "\n\n", 2)) - { - *(SubString -2) = '}'; - SubString--; - } - - /* Find the end of the typedef name */ - - SubBuffer = AsSkipUntilChar (SubString, ';'); - - /* And remove the typedef name */ - - SubBuffer = AsRemoveData (SubString, SubBuffer); - } - } -} - - -/****************************************************************************** - * - * FUNCTION: AsRemoveEmptyBlocks - * - * DESCRIPTION: Remove any C blocks (e.g., if {}) that contain no code. This - * can happen as a result of removing lines such as DEBUG_PRINT. - * - ******************************************************************************/ - -void -AsRemoveEmptyBlocks ( - char *Buffer, - char *Filename) -{ - char *SubBuffer; - char *BlockStart; - BOOLEAN EmptyBlock = TRUE; - BOOLEAN AnotherPassRequired = TRUE; - UINT32 BlockCount = 0; - - - while (AnotherPassRequired) - { - SubBuffer = Buffer; - AnotherPassRequired = FALSE; - - while (*SubBuffer) - { - if (*SubBuffer == '{') - { - BlockStart = SubBuffer; - EmptyBlock = TRUE; - - SubBuffer++; - while (*SubBuffer != '}') - { - if ((*SubBuffer != ' ') && - (*SubBuffer != '\n')) - { - EmptyBlock = FALSE; - break; - } - SubBuffer++; - } - - if (EmptyBlock) - { - /* Find start of the first line of the block */ - - while (*BlockStart != '\n') - { - BlockStart--; - } - - /* Find end of the last line of the block */ - - SubBuffer = AsSkipUntilChar (SubBuffer, '\n'); - if (!SubBuffer) - { - break; - } - - /* Remove the block */ - - SubBuffer = AsRemoveData (BlockStart, SubBuffer); - BlockCount++; - AnotherPassRequired = TRUE; - continue; - } - } - - SubBuffer++; - } - } - - if (BlockCount) - { - Gbl_MadeChanges = TRUE; - AsPrint ("Code blocks deleted", BlockCount, Filename); - } -} - - -/****************************************************************************** - * - * FUNCTION: AsRemoveDebugMacros - * - * DESCRIPTION: Remove all "Debug" macros -- macros that produce debug output. - * - ******************************************************************************/ - -void -AsRemoveDebugMacros ( - char *Buffer) -{ - AsRemoveConditionalCompile (Buffer, "ACPI_DEBUG_OUTPUT"); - - AsRemoveStatement (Buffer, "ACPI_DEBUG_PRINT", REPLACE_WHOLE_WORD); - AsRemoveStatement (Buffer, "ACPI_DEBUG_PRINT_RAW", REPLACE_WHOLE_WORD); - AsRemoveStatement (Buffer, "DEBUG_EXEC", REPLACE_WHOLE_WORD); - AsRemoveStatement (Buffer, "FUNCTION_ENTRY", REPLACE_WHOLE_WORD); - AsRemoveStatement (Buffer, "PROC_NAME", REPLACE_WHOLE_WORD); - AsRemoveStatement (Buffer, "FUNCTION_TRACE", REPLACE_SUBSTRINGS); - AsRemoveStatement (Buffer, "DUMP_", REPLACE_SUBSTRINGS); - - AsReplaceString ("return_VOID", "return", REPLACE_WHOLE_WORD, Buffer); - AsReplaceString ("return_PTR", "return", REPLACE_WHOLE_WORD, Buffer); - AsReplaceString ("return_ACPI_STATUS", "return", REPLACE_WHOLE_WORD, Buffer); - AsReplaceString ("return_acpi_status", "return", REPLACE_WHOLE_WORD, Buffer); - AsReplaceString ("return_VALUE", "return", REPLACE_WHOLE_WORD, Buffer); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/astable.c b/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/astable.c deleted file mode 100644 index 39f52d0966..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/astable.c +++ /dev/null @@ -1,787 +0,0 @@ - -/****************************************************************************** - * - * Module Name: astable - Tables used for source conversion - * $Revision: 1.14 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include "acpisrc.h" -#include "acapps.h" - - -/****************************************************************************** - * - * Standard/Common translation tables - * - ******************************************************************************/ - - -ACPI_STRING_TABLE StandardDataTypes[] = { - - /* Declarations first */ - - {"UINT32 ", "unsigned int", REPLACE_SUBSTRINGS}, - {"UINT16 ", "unsigned short", REPLACE_SUBSTRINGS}, - {"UINT8 ", "unsigned char", REPLACE_SUBSTRINGS}, - {"BOOLEAN ", "unsigned char", REPLACE_SUBSTRINGS}, - - /* Now do embedded typecasts */ - - {"UINT32", "unsigned int", REPLACE_SUBSTRINGS}, - {"UINT16", "unsigned short", REPLACE_SUBSTRINGS}, - {"UINT8", "unsigned char", REPLACE_SUBSTRINGS}, - {"BOOLEAN", "unsigned char", REPLACE_SUBSTRINGS}, - - {"INT32 ", "int ", REPLACE_SUBSTRINGS}, - {"INT32", "int", REPLACE_SUBSTRINGS}, - {"INT16", "short", REPLACE_SUBSTRINGS}, - {"INT8", "char", REPLACE_SUBSTRINGS}, - - /* Put back anything we broke (such as anything with _INT32_ in it) */ - - {"_int_", "_INT32_", REPLACE_SUBSTRINGS}, - {"_unsigned int_", "_UINT32_", REPLACE_SUBSTRINGS}, - {NULL, NULL, 0} -}; - - -/****************************************************************************** - * - * Linux-specific translation tables - * - ******************************************************************************/ - -char LinuxHeader[] = -"/*\n" -" * Copyright (C) 2000 - 2006, R. Byron Moore\n" -" * All rights reserved.\n" -" *\n" -" * Redistribution and use in source and binary forms, with or without\n" -" * modification, are permitted provided that the following conditions\n" -" * are met:\n" -" * 1. Redistributions of source code must retain the above copyright\n" -" * notice, this list of conditions, and the following disclaimer,\n" -" * without modification.\n" -" * 2. Redistributions in binary form must reproduce at minimum a disclaimer\n" -" * substantially similar to the \"NO WARRANTY\" disclaimer below\n" -" * (\"Disclaimer\") and any redistribution must be conditioned upon\n" -" * including a substantially similar Disclaimer requirement for further\n" -" * binary redistribution.\n" -" * 3. Neither the names of the above-listed copyright holders nor the names\n" -" * of any contributors may be used to endorse or promote products derived\n" -" * from this software without specific prior written permission.\n" -" *\n" -" * Alternatively, this software may be distributed under the terms of the\n" -" * GNU General Public License (\"GPL\") version 2 as published by the Free\n" -" * Software Foundation.\n" -" *\n" -" * NO WARRANTY\n" -" * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n" -" * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n" -" * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR\n" -" * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n" -" * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n" -" * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n" -" * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n" -" * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\n" -" * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING\n" -" * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n" -" * POSSIBILITY OF SUCH DAMAGES.\n" -" */\n"; - -ACPI_STRING_TABLE LinuxDataTypes[] = { - -/* - * Extra space is added after the type so there is room to add "struct", "union", - * etc. when the existing struct typedefs are eliminated. - */ - - /* Declarations first - ACPI types and standard C types */ - - {"INT64 ", "s64 ", REPLACE_WHOLE_WORD | EXTRA_INDENT_C}, - {"UINT64 ", "u64 ", REPLACE_WHOLE_WORD | EXTRA_INDENT_C}, - {"UINT32 ", "u32 ", REPLACE_WHOLE_WORD | EXTRA_INDENT_C}, - {"INT32 ", "s32 ", REPLACE_WHOLE_WORD | EXTRA_INDENT_C}, - {"UINT16 ", "u16 ", REPLACE_WHOLE_WORD | EXTRA_INDENT_C}, - {"INT16 ", "s16 ", REPLACE_WHOLE_WORD | EXTRA_INDENT_C}, - {"UINT8 ", "u8 ", REPLACE_WHOLE_WORD | EXTRA_INDENT_C}, - {"BOOLEAN ", "u8 ", REPLACE_WHOLE_WORD | EXTRA_INDENT_C}, - {"char ", "char ", REPLACE_WHOLE_WORD | EXTRA_INDENT_C}, - {"void ", "void ", REPLACE_WHOLE_WORD | EXTRA_INDENT_C}, - {"char * ", "char * ", REPLACE_WHOLE_WORD | EXTRA_INDENT_C}, - {"void * ", "void * ", REPLACE_WHOLE_WORD | EXTRA_INDENT_C}, - {"int ", "int ", REPLACE_WHOLE_WORD | EXTRA_INDENT_C}, - {"FILE ", "FILE ", REPLACE_WHOLE_WORD | EXTRA_INDENT_C}, - {"size_t ", "size_t ", REPLACE_WHOLE_WORD | EXTRA_INDENT_C}, - - /* Now do embedded typecasts */ - - {"UINT64", "u64", REPLACE_WHOLE_WORD}, - {"UINT32", "u32", REPLACE_WHOLE_WORD}, - {"UINT16", "u16", REPLACE_WHOLE_WORD}, - {"UINT8", "u8", REPLACE_WHOLE_WORD}, - {"BOOLEAN", "u8", REPLACE_WHOLE_WORD}, - - {"INT64 ", "s64 ", REPLACE_WHOLE_WORD}, - {"INT64", "s64", REPLACE_WHOLE_WORD}, - {"INT32 ", "s32 ", REPLACE_WHOLE_WORD}, - {"INT32", "s32", REPLACE_WHOLE_WORD}, - {"INT16 ", "s16 ", REPLACE_WHOLE_WORD}, - {"INT8 ", "s8 ", REPLACE_WHOLE_WORD}, - {"INT16", "s16", REPLACE_WHOLE_WORD}, - {"INT8", "s8", REPLACE_WHOLE_WORD}, - - {NULL, NULL, 0}, -}; - -ACPI_TYPED_IDENTIFIER_TABLE AcpiIdentifiers[] = { - - {"ACPI_ADR_SPACE_HANDLER", SRC_TYPE_SIMPLE}, - {"ACPI_ADR_SPACE_SETUP", SRC_TYPE_SIMPLE}, - {"ACPI_ADR_SPACE_TYPE", SRC_TYPE_SIMPLE}, - {"ACPI_AML_OPERANDS", SRC_TYPE_UNION}, - {"ACPI_BIT_REGISTER_INFO", SRC_TYPE_STRUCT}, - {"ACPI_BUFFER", SRC_TYPE_STRUCT}, - {"ACPI_BUS_ATTRIBUTE", SRC_TYPE_STRUCT}, - {"ACPI_CACHE_T", SRC_TYPE_SIMPLE}, - {"ACPI_COMMON_FACS", SRC_TYPE_STRUCT}, - {"ACPI_COMMON_STATE", SRC_TYPE_STRUCT}, - {"ACPI_COMMON_DESCRIPTOR", SRC_TYPE_STRUCT}, - {"ACPI_COMPATIBLE_ID", SRC_TYPE_STRUCT}, - {"ACPI_COMPATIBLE_ID_LIST", SRC_TYPE_STRUCT}, - {"ACPI_CONTROL_STATE", SRC_TYPE_STRUCT}, - {"ACPI_CONVERSION_TABLE", SRC_TYPE_STRUCT}, - {"ACPI_CPU_FLAGS", SRC_TYPE_SIMPLE}, - {"ACPI_CREATE_FIELD_INFO", SRC_TYPE_STRUCT}, - {"ACPI_DB_METHOD_INFO", SRC_TYPE_STRUCT}, - {"ACPI_DEBUG_MEM_BLOCK", SRC_TYPE_STRUCT}, - {"ACPI_DEBUG_MEM_HEADER", SRC_TYPE_STRUCT}, - {"ACPI_DEBUG_PRINT_INFO", SRC_TYPE_STRUCT}, - {"ACPI_DESCRIPTOR", SRC_TYPE_UNION}, - {"ACPI_DEVICE_ID", SRC_TYPE_STRUCT}, - {"ACPI_DEVICE_INFO", SRC_TYPE_STRUCT}, - {"ACPI_DEVICE_WALK_INFO", SRC_TYPE_STRUCT}, - {"ACPI_DMTABLE_DATA", SRC_TYPE_STRUCT}, - {"ACPI_DMTABLE_INFO", SRC_TYPE_STRUCT}, - {"ACPI_EVALUATE_INFO", SRC_TYPE_STRUCT}, - {"ACPI_EVENT_HANDLER", SRC_TYPE_SIMPLE}, - {"ACPI_EVENT_STATUS", SRC_TYPE_SIMPLE}, - {"ACPI_EVENT_TYPE", SRC_TYPE_SIMPLE}, - {"ACPI_EXCEPTION_HANDLER", SRC_TYPE_SIMPLE}, - {"ACPI_EXDUMP_INFO", SRC_TYPE_STRUCT}, - {"ACPI_EXECUTE_TYPE", SRC_TYPE_SIMPLE}, - {"ACPI_EXTERNAL_LIST", SRC_TYPE_STRUCT}, - {"ACPI_FADT_INFO", SRC_TYPE_STRUCT}, - {"ACPI_FIELD_INFO", SRC_TYPE_STRUCT}, - {"ACPI_FIND_CONTEXT", SRC_TYPE_STRUCT}, - {"ACPI_FIXED_EVENT_HANDLER", SRC_TYPE_STRUCT}, - {"ACPI_FIXED_EVENT_INFO", SRC_TYPE_STRUCT}, - {"ACPI_GENERIC_ADDRESS", SRC_TYPE_STRUCT}, - {"ACPI_GENERIC_STATE", SRC_TYPE_UNION}, - {"ACPI_GET_DEVICES_INFO", SRC_TYPE_STRUCT}, - {"ACPI_GPE_BLOCK_INFO", SRC_TYPE_STRUCT}, - {"ACPI_GPE_CALLBACK", SRC_TYPE_SIMPLE}, - {"ACPI_GPE_EVENT_INFO", SRC_TYPE_STRUCT}, - {"ACPI_GPE_HANDLER", SRC_TYPE_SIMPLE}, - {"ACPI_GPE_INDEX_INFO", SRC_TYPE_STRUCT}, - {"ACPI_GPE_REGISTER_INFO", SRC_TYPE_STRUCT}, - {"ACPI_GPE_WALK_INFO", SRC_TYPE_STRUCT}, - {"ACPI_GPE_XRUPT_INFO", SRC_TYPE_STRUCT}, - {"ACPI_HANDLE", SRC_TYPE_SIMPLE}, - {"ACPI_HANDLER_INFO", SRC_TYPE_STRUCT}, - {"ACPI_INIT_HANDLER", SRC_TYPE_SIMPLE}, - {"ACPI_IDENTIFIER_TABLE", SRC_TYPE_STRUCT}, - {"ACPI_INIT_WALK_INFO", SRC_TYPE_STRUCT}, - {"ACPI_INTEGER", SRC_TYPE_SIMPLE}, - {"ACPI_INTEGRITY_INFO", SRC_TYPE_STRUCT}, - {"ACPI_INTERNAL_RSDT", SRC_TYPE_STRUCT}, - {"ACPI_INTERPRETER_MODE", SRC_TYPE_SIMPLE}, - {"ACPI_IO_ADDRESS", SRC_TYPE_SIMPLE}, - {"ACPI_IO_ATTRIBUTE", SRC_TYPE_STRUCT}, - {"ACPI_MEM_SPACE_CONTEXT", SRC_TYPE_STRUCT}, - {"ACPI_MEMORY_ATTRIBUTE", SRC_TYPE_STRUCT}, - {"ACPI_MEMORY_LIST", SRC_TYPE_STRUCT}, - {"ACPI_MUTEX", SRC_TYPE_SIMPLE}, - {"ACPI_MUTEX_HANDLE", SRC_TYPE_SIMPLE}, - {"ACPI_MUTEX_INFO", SRC_TYPE_STRUCT}, - {"ACPI_NAME", SRC_TYPE_SIMPLE}, - {"ACPI_NAME_UNION", SRC_TYPE_UNION}, - {"ACPI_NAMESPACE_NODE", SRC_TYPE_STRUCT}, - {"ACPI_NAMESTRING_INFO", SRC_TYPE_STRUCT}, - {"ACPI_NATIVE_INT", SRC_TYPE_SIMPLE}, - {"ACPI_NATIVE_UINT", SRC_TYPE_SIMPLE}, - {"ACPI_NOTIFY_HANDLER", SRC_TYPE_SIMPLE}, - {"ACPI_NOTIFY_INFO", SRC_TYPE_STRUCT}, - {"ACPI_NS_SEARCH_DATA", SRC_TYPE_STRUCT}, - {"ACPI_OBJ_INFO_HEADER", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT", SRC_TYPE_UNION}, - {"ACPI_OBJECT_ADDR_HANDLER", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_BANK_FIELD", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_BUFFER", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_BUFFER_FIELD", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_CACHE_LIST", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_COMMON", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_DATA", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_DEVICE", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_EVENT", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_EXTRA", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_FIELD_COMMON", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_HANDLER", SRC_TYPE_SIMPLE}, - {"ACPI_OBJECT_INDEX_FIELD", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_INTEGER", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_LIST", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_METHOD", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_MUTEX", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_NOTIFY_COMMON", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_NOTIFY_HANDLER", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_PACKAGE", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_POWER_RESOURCE", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_PROCESSOR", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_REFERENCE", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_REGION", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_REGION_FIELD", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_STRING", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_THERMAL_ZONE", SRC_TYPE_STRUCT}, - {"ACPI_OBJECT_TYPE", SRC_TYPE_SIMPLE}, - {"ACPI_OBJECT_TYPE8", SRC_TYPE_SIMPLE}, - {"ACPI_OP_WALK_INFO", SRC_TYPE_STRUCT}, - {"ACPI_OPCODE_INFO", SRC_TYPE_STRUCT}, - {"ACPI_OPERAND_OBJECT", SRC_TYPE_UNION}, - {"ACPI_OSD_HANDLER", SRC_TYPE_SIMPLE}, - {"ACPI_OSD_EXEC_CALLBACK", SRC_TYPE_SIMPLE}, - {"ACPI_OWNER_ID", SRC_TYPE_SIMPLE}, - {"ACPI_PARSE_DOWNWARDS", SRC_TYPE_SIMPLE}, - {"ACPI_PARSE_OBJ_ASL", SRC_TYPE_STRUCT}, - {"ACPI_PARSE_OBJ_COMMON", SRC_TYPE_STRUCT}, - {"ACPI_PARSE_OBJ_NAMED", SRC_TYPE_STRUCT}, - {"ACPI_PARSE_OBJECT", SRC_TYPE_UNION}, - {"ACPI_PARSE_STATE", SRC_TYPE_STRUCT}, - {"ACPI_PARSE_UPWARDS", SRC_TYPE_SIMPLE}, - {"ACPI_PARSE_VALUE", SRC_TYPE_UNION}, - {"ACPI_PCI_ID", SRC_TYPE_STRUCT}, - {"ACPI_PCI_ROUTING_TABLE", SRC_TYPE_STRUCT}, - {"ACPI_PHYSICAL_ADDRESS", SRC_TYPE_SIMPLE}, - {"ACPI_PKG_CALLBACK", SRC_TYPE_SIMPLE}, - {"ACPI_PKG_INFO", SRC_TYPE_STRUCT}, - {"ACPI_PKG_STATE", SRC_TYPE_STRUCT}, - {"ACPI_POINTER", SRC_TYPE_STRUCT}, - {"ACPI_POINTERS", SRC_TYPE_UNION}, - {"ACPI_PREDEFINED_NAMES", SRC_TYPE_STRUCT}, - {"ACPI_PSCOPE_STATE", SRC_TYPE_STRUCT}, - {"ACPI_RESOURCE", SRC_TYPE_STRUCT}, - {"ACPI_RESOURCE_ADDRESS", SRC_TYPE_STRUCT}, - {"ACPI_RESOURCE_ADDRESS16", SRC_TYPE_STRUCT}, - {"ACPI_RESOURCE_ADDRESS32", SRC_TYPE_STRUCT}, - {"ACPI_RESOURCE_ADDRESS64", SRC_TYPE_STRUCT}, - {"ACPI_RESOURCE_EXTENDED_ADDRESS64", SRC_TYPE_STRUCT}, - {"ACPI_RESOURCE_ATTRIBUTE", SRC_TYPE_UNION}, - {"ACPI_RESOURCE_DATA", SRC_TYPE_UNION}, - {"ACPI_RESOURCE_DMA", SRC_TYPE_STRUCT}, - {"ACPI_RESOURCE_END_TAG", SRC_TYPE_STRUCT}, - {"ACPI_RESOURCE_EXTENDED_IRQ", SRC_TYPE_STRUCT}, - {"ACPI_RESOURCE_FIXED_IO", SRC_TYPE_STRUCT}, - {"ACPI_RESOURCE_FIXED_MEMORY32", SRC_TYPE_STRUCT}, - {"ACPI_RESOURCE_GENERIC_REGISTER", SRC_TYPE_STRUCT}, - {"ACPI_RESOURCE_INFO", SRC_TYPE_STRUCT}, - {"ACPI_RESOURCE_IO", SRC_TYPE_STRUCT}, - {"ACPI_RESOURCE_IRQ", SRC_TYPE_STRUCT}, - {"ACPI_RESOURCE_MEMORY24", SRC_TYPE_STRUCT}, - {"ACPI_RESOURCE_MEMORY32", SRC_TYPE_STRUCT}, - {"ACPI_RESOURCE_SOURCE", SRC_TYPE_STRUCT}, - {"ACPI_RESOURCE_START_DEPENDENT", SRC_TYPE_STRUCT}, - {"ACPI_RESOURCE_TAG", SRC_TYPE_STRUCT}, - {"ACPI_RESOURCE_TYPE", SRC_TYPE_SIMPLE}, - {"ACPI_RESOURCE_VENDOR", SRC_TYPE_STRUCT}, - {"ACPI_RESOURCE_VENDOR_TYPED", SRC_TYPE_STRUCT}, - {"ACPI_RESULT_VALUES", SRC_TYPE_STRUCT}, - {"ACPI_ROUND_UP_TO_32_BIT", SRC_TYPE_SIMPLE}, - {"ACPI_RSCONVERT_INFO", SRC_TYPE_STRUCT}, - {"ACPI_RSDUMP_INFO", SRC_TYPE_STRUCT}, - {"ACPI_SCOPE_STATE", SRC_TYPE_STRUCT}, - {"ACPI_SEMAPHORE", SRC_TYPE_SIMPLE}, - {"ACPI_SIGNAL_FATAL_INFO", SRC_TYPE_STRUCT}, - {"ACPI_SIZE", SRC_TYPE_SIMPLE}, - {"ACPI_SPINLOCK", SRC_TYPE_SIMPLE}, - {"ACPI_STATUS", SRC_TYPE_SIMPLE}, - {"ACPI_STRING", SRC_TYPE_SIMPLE}, - {"ACPI_STRING_TABLE", SRC_TYPE_STRUCT}, - {"ACPI_SUBTABLE_HEADER", SRC_TYPE_STRUCT}, - {"ACPI_SYSTEM_INFO", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_DESC", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_HEADER", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_INFO", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_LIST", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_PTR", SRC_TYPE_SIMPLE}, - {"ACPI_TABLE_SUPPORT", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_TYPE", SRC_TYPE_SIMPLE}, - {"ACPI_THREAD_ID", SRC_TYPE_SIMPLE}, - {"ACPI_THREAD_STATE", SRC_TYPE_STRUCT}, - {"ACPI_TYPED_IDENTIFIER_TABLE", SRC_TYPE_STRUCT}, - {"ACPI_UINTPTR_T", SRC_TYPE_SIMPLE}, - {"ACPI_UPDATE_STATE", SRC_TYPE_STRUCT}, - {"ACPI_UUID", SRC_TYPE_STRUCT}, - {"ACPI_VENDOR_UUID", SRC_TYPE_STRUCT}, - {"ACPI_VENDOR_WALK_INFO", SRC_TYPE_STRUCT}, - {"ACPI_WALK_AML_CALLBACK", SRC_TYPE_SIMPLE}, - {"ACPI_WALK_CALLBACK", SRC_TYPE_SIMPLE}, - {"ACPI_WALK_RESOURCE_CALLBACK", SRC_TYPE_SIMPLE}, - {"ACPI_WALK_INFO", SRC_TYPE_STRUCT}, - {"ACPI_WALK_STATE", SRC_TYPE_STRUCT}, - - {"ACPI_RS_LENGTH", SRC_TYPE_SIMPLE}, - {"ACPI_RSDESC_SIZE", SRC_TYPE_SIMPLE}, - - {"AML_RESOURCE", SRC_TYPE_UNION}, - {"AML_RESOURCE_ADDRESS", SRC_TYPE_STRUCT}, - {"AML_RESOURCE_ADDRESS16", SRC_TYPE_STRUCT}, - {"AML_RESOURCE_ADDRESS32", SRC_TYPE_STRUCT}, - {"AML_RESOURCE_ADDRESS64", SRC_TYPE_STRUCT}, - {"AML_RESOURCE_DMA", SRC_TYPE_STRUCT}, - {"AML_RESOURCE_END_DEPENDENT", SRC_TYPE_STRUCT}, - {"AML_RESOURCE_END_TAG", SRC_TYPE_STRUCT}, - {"AML_RESOURCE_EXTENDED_ADDRESS64", SRC_TYPE_STRUCT}, - {"AML_RESOURCE_EXTENDED_IRQ", SRC_TYPE_STRUCT}, - {"AML_RESOURCE_FIXED_IO", SRC_TYPE_STRUCT}, - {"AML_RESOURCE_FIXED_MEMORY32", SRC_TYPE_STRUCT}, - {"AML_RESOURCE_GENERIC_REGISTER", SRC_TYPE_STRUCT}, - {"AML_RESOURCE_IO", SRC_TYPE_STRUCT}, - {"AML_RESOURCE_IRQ", SRC_TYPE_STRUCT}, - {"AML_RESOURCE_IRQ_NOFLAGS", SRC_TYPE_STRUCT}, - {"AML_RESOURCE_LARGE_HEADER", SRC_TYPE_STRUCT}, - {"AML_RESOURCE_MEMORY24", SRC_TYPE_STRUCT}, - {"AML_RESOURCE_MEMORY32", SRC_TYPE_STRUCT}, - {"AML_RESOURCE_SMALL_HEADER", SRC_TYPE_STRUCT}, - {"AML_RESOURCE_START_DEPENDENT", SRC_TYPE_STRUCT}, - {"AML_RESOURCE_START_DEPENDENT_NOPRIO", SRC_TYPE_STRUCT}, - {"AML_RESOURCE_VENDOR_LARGE", SRC_TYPE_STRUCT}, - {"AML_RESOURCE_VENDOR_SMALL", SRC_TYPE_STRUCT}, - - {"APIC_HEADER", SRC_TYPE_STRUCT}, - {"ARGUMENT_INFO", SRC_TYPE_STRUCT}, - {"ASL_ANALYSIS_WALK_INFO", SRC_TYPE_STRUCT}, - {"ASL_ERROR_MSG", SRC_TYPE_STRUCT}, - {"ASL_EVENT_INFO", SRC_TYPE_STRUCT}, - {"ASL_FILE_INFO", SRC_TYPE_STRUCT}, - {"ASL_FILE_STATUS", SRC_TYPE_STRUCT}, - {"ASL_LISTING_NODE", SRC_TYPE_STRUCT}, - {"ASL_MAPPING_ENTRY", SRC_TYPE_STRUCT}, - {"ASL_METHOD_INFO", SRC_TYPE_STRUCT}, - {"ASL_RESERVED_INFO", SRC_TYPE_STRUCT}, - {"ASL_RESOURCE_NODE", SRC_TYPE_STRUCT}, - {"ASL_WALK_CALLBACK", SRC_TYPE_SIMPLE}, - {"COMMAND_INFO", SRC_TYPE_STRUCT}, - {"UINT32_STRUCT", SRC_TYPE_STRUCT}, - {"UINT64_OVERLAY", SRC_TYPE_UNION}, - {"UINT64_STRUCT", SRC_TYPE_STRUCT}, - - /* - * Acpi table definition names. - */ - {"ACPI_TABLE_ASF", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_BOOT", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_CPEP", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_DBGP", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_DMAR", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_ECDT", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_FACS", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_FADT", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_HPET", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_MADT", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_MCFG", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_RSDP", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_RSDT", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_SBST", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_SLIT", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_SPCR", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_SPMI", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_SRAT", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_TCPA", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_WDRT", SRC_TYPE_STRUCT}, - {"ACPI_TABLE_XSDT", SRC_TYPE_STRUCT}, - - {"ACPI_ASF_ADDRESS", SRC_TYPE_STRUCT}, - {"ACPI_ASF_ALERT", SRC_TYPE_STRUCT}, - {"ACPI_ASF_ALERT_DATA", SRC_TYPE_STRUCT}, - {"ACPI_ASF_CONTROL_DATA", SRC_TYPE_STRUCT}, - {"ACPI_ASF_HEADER", SRC_TYPE_STRUCT}, - {"ACPI_ASF_INFO", SRC_TYPE_STRUCT}, - {"ACPI_ASF_REMOTE", SRC_TYPE_STRUCT}, - {"ACPI_ASF_RMCP", SRC_TYPE_STRUCT}, - {"ACPI_CPEP_POLLING", SRC_TYPE_STRUCT}, - {"ACPI_DMAR_HEADER", SRC_TYPE_STRUCT}, - {"ACPI_DMAR_DEVICE_SCOPE", SRC_TYPE_STRUCT}, - {"ACPI_DMAR_HARDWARE_UNIT", SRC_TYPE_STRUCT}, - {"ACPI_DMAR_RESERVED_MEMORY", SRC_TYPE_STRUCT}, - {"ACPI_MADT_ADDRESS_OVERRIDE", SRC_TYPE_STRUCT}, - {"ACPI_MADT_HEADER", SRC_TYPE_STRUCT}, - {"ACPI_MADT_IO_APIC", SRC_TYPE_STRUCT}, - {"ACPI_MADT_IO_SAPIC", SRC_TYPE_STRUCT}, - {"ACPI_MADT_LOCAL_APIC_NMI", SRC_TYPE_STRUCT}, - {"ACPI_MADT_LOCAL_SAPIC", SRC_TYPE_STRUCT}, - {"ACPI_MADT_NMI_SOURCE", SRC_TYPE_STRUCT}, - {"ACPI_MADT_PROCESSOR_APIC", SRC_TYPE_STRUCT}, - {"ACPI_MADT_XRUPT_OVERRIDE", SRC_TYPE_STRUCT}, - {"ACPI_MADT_XRUPT_SOURCE", SRC_TYPE_STRUCT}, - {"ACPI_MCFG_ALLOCATION", SRC_TYPE_STRUCT}, - {"ACPI_SRAT_CPU_AFFINITY", SRC_TYPE_STRUCT}, - {"ACPI_SRAT_HEADER", SRC_TYPE_STRUCT}, - {"ACPI_SRAT_MEM_AFFINITY", SRC_TYPE_STRUCT}, - - - /* Legacy names, should be removed */ - - {"EC_BOOT_RESOURCES", SRC_TYPE_STRUCT}, - {"HPET_TABLE", SRC_TYPE_STRUCT}, - {"MADT_ADDRESS_OVERRIDE", SRC_TYPE_STRUCT}, - {"MADT_INTERRUPT_OVERRIDE", SRC_TYPE_STRUCT}, - {"MADT_INTERRUPT_SOURCE", SRC_TYPE_STRUCT}, - {"MADT_IO_APIC", SRC_TYPE_STRUCT}, - {"MADT_IO_SAPIC", SRC_TYPE_STRUCT}, - {"MADT_LOCAL_APIC_NMI", SRC_TYPE_STRUCT}, - {"MADT_LOCAL_SAPIC", SRC_TYPE_STRUCT}, - {"MADT_NMI_SOURCE", SRC_TYPE_STRUCT}, - {"MADT_PROCESSOR_APIC", SRC_TYPE_STRUCT}, - {"MEMORY_AFFINITY", SRC_TYPE_STRUCT}, - {"MULTIPLE_APIC_TABLE", SRC_TYPE_STRUCT}, - {"SMART_BATTERY_TABLE", SRC_TYPE_STRUCT}, - {"STATIC_RESOURCE_ALLOC", SRC_TYPE_STRUCT}, - {"SYSTEM_RESOURCE_AFFINITY", SRC_TYPE_STRUCT}, - {"SYSTEM_LOCALITY_INFO", SRC_TYPE_STRUCT}, - {"FACS_DESCRIPTOR", SRC_TYPE_STRUCT}, - {"FADT_DESCRIPTOR_REV1", SRC_TYPE_STRUCT}, - {"FADT_DESCRIPTOR", SRC_TYPE_STRUCT}, - {"FADT_DESCRIPTOR_REV2_MINUS", SRC_TYPE_STRUCT}, - {"RSDP_DESCRIPTOR", SRC_TYPE_STRUCT}, - {"RSDT_DESCRIPTOR", SRC_TYPE_STRUCT}, - {"XSDT_DESCRIPTOR", SRC_TYPE_STRUCT}, - {NULL} -}; - - -ACPI_IDENTIFIER_TABLE LinuxAddStruct[] = { - {"acpi_namespace_node"}, - {"acpi_parse_object"}, - {"acpi_table_desc"}, - {"acpi_walk_state"}, - {NULL} -}; - - -ACPI_IDENTIFIER_TABLE LinuxEliminateMacros[] = { - - {"ACPI_GET_ADDRESS"}, - {"ACPI_VALID_ADDRESS"}, - {NULL} -}; - - -ACPI_IDENTIFIER_TABLE LinuxEliminateLines_C[] = { - - {"#define __"}, - {"$Revision"}, - {NULL} -}; - - -ACPI_IDENTIFIER_TABLE LinuxEliminateLines_H[] = { - - {"$Revision"}, - {NULL} -}; - - -ACPI_IDENTIFIER_TABLE LinuxConditionalIdentifiers[] = { - -// {"ACPI_USE_STANDARD_HEADERS"}, - {"WIN32"}, - {"_MSC_VER"}, - {NULL} -}; - -ACPI_CONVERSION_TABLE LinuxConversionTable = { - - LinuxHeader, - FLG_NO_CARRIAGE_RETURNS | FLG_LOWERCASE_DIRNAMES, - - AcpiIdentifiers, - - /* C source files */ - - LinuxDataTypes, - LinuxEliminateLines_C, - NULL, - LinuxEliminateMacros, - AcpiIdentifiers, - (CVT_COUNT_TABS | CVT_COUNT_NON_ANSI_COMMENTS | CVT_COUNT_LINES | - CVT_CHECK_BRACES | CVT_TRIM_LINES | CVT_BRACES_ON_SAME_LINE | - CVT_MIXED_CASE_TO_UNDERSCORES | CVT_LOWER_CASE_IDENTIFIERS | - CVT_REMOVE_DEBUG_MACROS | CVT_TRIM_WHITESPACE | - CVT_REMOVE_EMPTY_BLOCKS | CVT_SPACES_TO_TABS8), - - /* C header files */ - - LinuxDataTypes, - LinuxEliminateLines_H, - LinuxConditionalIdentifiers, - NULL, - AcpiIdentifiers, - (CVT_COUNT_TABS | CVT_COUNT_NON_ANSI_COMMENTS | CVT_COUNT_LINES | - CVT_TRIM_LINES | CVT_MIXED_CASE_TO_UNDERSCORES | - CVT_LOWER_CASE_IDENTIFIERS | CVT_TRIM_WHITESPACE | - CVT_REMOVE_EMPTY_BLOCKS| CVT_REDUCE_TYPEDEFS | CVT_SPACES_TO_TABS8), -}; - - -/****************************************************************************** - * - * Code cleanup translation tables - * - ******************************************************************************/ - - -ACPI_CONVERSION_TABLE CleanupConversionTable = { - - NULL, - FLG_DEFAULT_FLAGS, - NULL, - /* C source files */ - - NULL, - NULL, - NULL, - NULL, - NULL, - (CVT_COUNT_TABS | CVT_COUNT_NON_ANSI_COMMENTS | CVT_COUNT_LINES | - CVT_CHECK_BRACES | CVT_TRIM_LINES | CVT_TRIM_WHITESPACE), - - /* C header files */ - - NULL, - NULL, - NULL, - NULL, - NULL, - (CVT_COUNT_TABS | CVT_COUNT_NON_ANSI_COMMENTS | CVT_COUNT_LINES | - CVT_TRIM_LINES | CVT_TRIM_WHITESPACE), -}; - - -ACPI_CONVERSION_TABLE StatsConversionTable = { - - NULL, - FLG_NO_FILE_OUTPUT, - NULL, - - /* C source files */ - - NULL, - NULL, - NULL, - NULL, - NULL, - (CVT_COUNT_TABS | CVT_COUNT_NON_ANSI_COMMENTS | CVT_COUNT_LINES | - CVT_COUNT_SHORTMULTILINE_COMMENTS), - - /* C header files */ - - NULL, - NULL, - NULL, - NULL, - NULL, - (CVT_COUNT_TABS | CVT_COUNT_NON_ANSI_COMMENTS | CVT_COUNT_LINES | - CVT_COUNT_SHORTMULTILINE_COMMENTS), -}; - - -/****************************************************************************** - * - * Customizable translation tables - * - ******************************************************************************/ - -ACPI_STRING_TABLE CustomReplacements[] = { - - - {"AcpiTbSumTable", "AcpiTbSumTable", REPLACE_WHOLE_WORD}, -#if 0 - {"ACPI_SIG_BOOT", "ACPI_SIG_BOOT", REPLACE_WHOLE_WORD}, - {"ACPI_SIG_DBGP", "ACPI_SIG_DBGP", REPLACE_WHOLE_WORD}, - {"ACPI_SIG_DSDT", "ACPI_SIG_DSDT", REPLACE_WHOLE_WORD}, - {"ACPI_SIG_ECDT", "ACPI_SIG_ECDT", REPLACE_WHOLE_WORD}, - {"ACPI_SIG_FACS", "ACPI_SIG_FACS", REPLACE_WHOLE_WORD}, - {"ACPI_SIG_FADT", "ACPI_SIG_FADT", REPLACE_WHOLE_WORD}, - {"ACPI_SIG_HPET", "ACPI_SIG_HPET", REPLACE_WHOLE_WORD}, - {"ACPI_SIG_MADT", "ACPI_SIG_MADT", REPLACE_WHOLE_WORD}, - {"ACPI_SIG_MCFG", "ACPI_SIG_MCFG", REPLACE_WHOLE_WORD}, - {"ACPI_SIG_PSDT", "ACPI_SIG_PSDT", REPLACE_WHOLE_WORD}, - {"ACPI_NAME_RSDP", "ACPI_NAME_RSDP", REPLACE_WHOLE_WORD}, - {"ACPI_SIG_RSDP", "ACPI_SIG_RSDP", REPLACE_WHOLE_WORD}, - {"ACPI_SIG_RSDT", "ACPI_SIG_RSDT", REPLACE_WHOLE_WORD}, - {"ACPI_SIG_SBST", "ACPI_SIG_SBST", REPLACE_WHOLE_WORD}, - {"ACPI_SIG_SLIT", "ACPI_SIG_SLIT", REPLACE_WHOLE_WORD}, - {"ACPI_SIG_SPCR", "ACPI_SIG_SPCR", REPLACE_WHOLE_WORD}, - {"ACPI_SIG_SPIC", "ACPI_SIG_SPIC", REPLACE_WHOLE_WORD}, - {"ACPI_SIG_SPMI", "ACPI_SIG_SPMI", REPLACE_WHOLE_WORD}, - {"ACPI_SIG_SRAT", "ACPI_SIG_SRAT", REPLACE_WHOLE_WORD}, - {"ACPI_SIG_SSDT", "ACPI_SIG_SSDT", REPLACE_WHOLE_WORD}, - {"ACPI_SIG_TCPA", "ACPI_SIG_TCPA", REPLACE_WHOLE_WORD}, - {"ACPI_SIG_WDRT", "ACPI_SIG_WDRT", REPLACE_WHOLE_WORD}, - {"ACPI_SIG_XSDT", "ACPI_SIG_XSDT", REPLACE_WHOLE_WORD}, - - {"ACPI_ALLOCATE_ZEROED", "ACPI_ALLOCATE_ZEROED", REPLACE_WHOLE_WORD}, - {"ACPI_ALLOCATE", "ACPI_ALLOCATE", REPLACE_WHOLE_WORD}, - {"ACPI_FREE", "ACPI_FREE", REPLACE_WHOLE_WORD}, - - {"(c) 1999 - 2006", "(c) 1999 - 2006", REPLACE_WHOLE_WORD}, - - "ACPI_NATIVE_UINT", "ACPI_NATIVE_UINT", REPLACE_WHOLE_WORD, - "ACPI_NATIVE_UINT *", "ACPI_NATIVE_UINT *", REPLACE_WHOLE_WORD, - "ACPI_NATIVE_UINT", "ACPI_NATIVE_UINT", REPLACE_WHOLE_WORD, - "ACPI_NATIVE_INT", "ACPI_NATIVE_INT", REPLACE_WHOLE_WORD, - "ACPI_NATIVE_INT *", "ACPI_NATIVE_INT *", REPLACE_WHOLE_WORD, - "ACPI_NATIVE_INT", "ACPI_NATIVE_INT", REPLACE_WHOLE_WORD, -#endif - - {NULL, NULL, 0} -}; - - -ACPI_CONVERSION_TABLE CustomConversionTable = { - - NULL, - FLG_DEFAULT_FLAGS, - NULL, - - /* C source files */ - - CustomReplacements, - NULL, - NULL, - NULL, - NULL, - (CVT_COUNT_TABS | CVT_COUNT_NON_ANSI_COMMENTS | CVT_COUNT_LINES | - CVT_TRIM_LINES | CVT_TRIM_WHITESPACE), - - /* C header files */ - - CustomReplacements, - NULL, - NULL, - NULL, - NULL, - (CVT_COUNT_TABS | CVT_COUNT_NON_ANSI_COMMENTS | CVT_COUNT_LINES | - CVT_TRIM_LINES | CVT_TRIM_WHITESPACE), -}; - diff --git a/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/asutils.c b/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/asutils.c deleted file mode 100644 index d899397017..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/asutils.c +++ /dev/null @@ -1,307 +0,0 @@ - -/****************************************************************************** - * - * Module Name: asutils - common utilities - * $Revision: 1.12 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpisrc.h" - - -/****************************************************************************** - * - * FUNCTION: AsSkipUntilChar - * - * DESCRIPTION: Find the next instance of the input character - * - ******************************************************************************/ - -char * -AsSkipUntilChar ( - char *Buffer, - char Target) -{ - - while (*Buffer != Target) - { - if (!*Buffer) - { - return NULL; - } - - Buffer++; - } - - return (Buffer); -} - - -/****************************************************************************** - * - * FUNCTION: AsSkipPastChar - * - * DESCRIPTION: Find the next instance of the input character, return a buffer - * pointer to this character+1. - * - ******************************************************************************/ - -char * -AsSkipPastChar ( - char *Buffer, - char Target) -{ - - while (*Buffer != Target) - { - if (!*Buffer) - { - return NULL; - } - - Buffer++; - } - - Buffer++; - - return (Buffer); -} - - -/****************************************************************************** - * - * FUNCTION: AsReplaceData - * - * DESCRIPTION: This function inserts and removes data from the file buffer. - * if more data is inserted than is removed, the data in the buffer - * is moved to make room. If less data is inserted than is removed, - * the remaining data is moved to close the hole. - * - ******************************************************************************/ - -char * -AsReplaceData ( - char *Buffer, - UINT32 LengthToRemove, - char *BufferToAdd, - UINT32 LengthToAdd) -{ - UINT32 BufferLength; - - - /* - * Buffer is a string, so the length must include the terminating zero - */ - BufferLength = strlen (Buffer) + 1; - - if (LengthToRemove != LengthToAdd) - { - /* - * Move some of the existing data - * 1) If adding more bytes than removing, make room for the new data - * 2) if removing more bytes than adding, delete the extra space - */ - if (LengthToRemove > 0) - { - Gbl_MadeChanges = TRUE; - memmove ((Buffer + LengthToAdd), (Buffer + LengthToRemove), (BufferLength - LengthToRemove)); - } - } - - /* - * Now we can move in the new data - */ - if (LengthToAdd > 0) - { - Gbl_MadeChanges = TRUE; - memmove (Buffer, BufferToAdd, LengthToAdd); - } - - return (Buffer + LengthToAdd); -} - - -/****************************************************************************** - * - * FUNCTION: AsInsertData - * - * DESCRIPTION: This function inserts and removes data from the file buffer. - * if more data is inserted than is removed, the data in the buffer - * is moved to make room. If less data is inserted than is removed, - * the remaining data is moved to close the hole. - * - ******************************************************************************/ - -char * -AsInsertData ( - char *Buffer, - char *BufferToAdd, - UINT32 LengthToAdd) -{ - UINT32 BufferLength; - - - if (LengthToAdd > 0) - { - /* - * Buffer is a string, so the length must include the terminating zero - */ - BufferLength = strlen (Buffer) + 1; - - /* - * Move some of the existing data - * 1) If adding more bytes than removing, make room for the new data - * 2) if removing more bytes than adding, delete the extra space - */ - Gbl_MadeChanges = TRUE; - memmove ((Buffer + LengthToAdd), Buffer, BufferLength); - - /* - * Now we can move in the new data - */ - memmove (Buffer, BufferToAdd, LengthToAdd); - } - - return (Buffer + LengthToAdd); -} - - -/****************************************************************************** - * - * FUNCTION: AsRemoveData - * - * DESCRIPTION: This function inserts and removes data from the file buffer. - * if more data is inserted than is removed, the data in the buffer - * is moved to make room. If less data is inserted than is removed, - * the remaining data is moved to close the hole. - * - ******************************************************************************/ - -char * -AsRemoveData ( - char *StartPointer, - char *EndPointer) -{ - UINT32 BufferLength; - - - /* - * Buffer is a string, so the length must include the terminating zero - */ - BufferLength = strlen (EndPointer) + 1; - - Gbl_MadeChanges = TRUE; - memmove (StartPointer, EndPointer, BufferLength); - - return (StartPointer); -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/osunixdir.c b/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/osunixdir.c deleted file mode 100644 index 39bf6e459d..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/tools/acpisrc/osunixdir.c +++ /dev/null @@ -1,303 +0,0 @@ - -/****************************************************************************** - * - * Module Name: osunixdir - Unix directory access interfaces - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#include -#include -#include -#include -#include -#include -#include - -#include "acpisrc.h" - -typedef struct ExternalFindInfo -{ - char *DirPathname; - DIR *DirPtr; - char temp_buffer[128]; - char *WildcardSpec; - char RequestedFileType; - -} EXTERNAL_FIND_INFO; - - -/******************************************************************************* - * - * FUNCTION: AcpiOsOpenDirectory - * - * PARAMETERS: DirPathname - Full pathname to the directory - * WildcardSpec - string of the form "*.c", etc. - * - * RETURN: A directory "handle" to be used in subsequent search operations. - * NULL returned on failure. - * - * DESCRIPTION: Open a directory in preparation for a wildcard search - * - ******************************************************************************/ - -void * -AcpiOsOpenDirectory ( - char *DirPathname, - char *WildcardSpec, - char RequestedFileType) -{ - EXTERNAL_FIND_INFO *ExternalInfo; - DIR *dir; - - - /* Allocate the info struct that will be returned to the caller */ - - ExternalInfo = calloc (sizeof (EXTERNAL_FIND_INFO), 1); - if (!ExternalInfo) - { - return NULL; - } - - /* Get the directory stream */ - - dir = opendir(DirPathname); - if (!dir) - { - free(ExternalInfo); - return NULL; - } - - /* Save the info in the return structure */ - - ExternalInfo->WildcardSpec = WildcardSpec; - ExternalInfo->RequestedFileType = RequestedFileType; - ExternalInfo->DirPathname = DirPathname; - ExternalInfo->DirPtr = dir; - return (ExternalInfo); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiOsGetNextFilename - * - * PARAMETERS: DirHandle - Created via AcpiOsOpenDirectory - * - * RETURN: Next filename matched. NULL if no more matches. - * - * DESCRIPTION: Get the next file in the directory that matches the wildcard - * specification. - * - ******************************************************************************/ - -char * -AcpiOsGetNextFilename ( - void *DirHandle) -{ - EXTERNAL_FIND_INFO *ExternalInfo = DirHandle; - struct dirent *dir_entry; - - while((dir_entry = readdir(ExternalInfo->DirPtr))) - { - if (!fnmatch(ExternalInfo->WildcardSpec, dir_entry->d_name, 0)) - { - char *temp_str; - int str_len; - struct stat temp_stat; - int err; - - if (dir_entry->d_name[0] == '.') - continue; - - str_len = strlen(dir_entry->d_name) + strlen (ExternalInfo->DirPathname) + 2; - - temp_str = calloc(str_len, 1); - if (!temp_str) - { - printf ("Could not allocate buffer for temporary string\n"); - return NULL; - } - - strcpy(temp_str, ExternalInfo->DirPathname); - strcat(temp_str, "/"); - strcat(temp_str, dir_entry->d_name); - - err = stat(temp_str, &temp_stat); - free (temp_str); - if (err == -1) - { - printf ("stat() error - should not happen\n"); - return NULL; - } - - if ((S_ISDIR(temp_stat.st_mode) - && (ExternalInfo->RequestedFileType == REQUEST_DIR_ONLY)) - || - ((!S_ISDIR(temp_stat.st_mode) - && ExternalInfo->RequestedFileType == REQUEST_FILE_ONLY))) - { - /* copy to a temp buffer because dir_entry struct is on the stack */ - strcpy(ExternalInfo->temp_buffer, dir_entry->d_name); - return (ExternalInfo->temp_buffer); - } - } - } - - return NULL; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiOsCloseDirectory - * - * PARAMETERS: DirHandle - Created via AcpiOsOpenDirectory - * - * RETURN: None. - * - * DESCRIPTION: Close the open directory and cleanup. - * - ******************************************************************************/ - -void -AcpiOsCloseDirectory ( - void *DirHandle) -{ - EXTERNAL_FIND_INFO *ExternalInfo = DirHandle; - - - /* Close the directory and free allocations */ - - closedir(ExternalInfo->DirPtr); - free (DirHandle); -} - -/* Other functions acpisrc uses but that aren't standard on Unix */ - -/* lowercase a string */ -char* -strlwr ( - char *str) -{ - int length; - int i; - - length = strlen(str); - - for (i = 0; i < length; i++) - { - str[i] = tolower(str[i]); - } - - return str; -} diff --git a/sys/contrib/dev/acpica-unix-20061109/tools/acpixtract/Makefile b/sys/contrib/dev/acpica-unix-20061109/tools/acpixtract/Makefile deleted file mode 100644 index be7a735853..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/tools/acpixtract/Makefile +++ /dev/null @@ -1,16 +0,0 @@ - - -PROG= acpixtract -SRCS= acpixtract.c - -CFLAGS+= -Wall -O2 -D_LINUX -DACPI_APPLICATION -Wstrict-prototypes -I../../include - - -acpixtract : $(patsubst %.c,%.o, $(SRCS)) - $(CC) $(LDFLAGS) $(patsubst %.c,%.o, $(SRCS)) -o $(PROG) - -CLEANFILES= $(PROG) - -clean : - rm -f $(CLEANFILES) $(patsubst %.c,%.o, $(SRCS)) - diff --git a/sys/contrib/dev/acpica-unix-20061109/tools/acpixtract/acpixtract.c b/sys/contrib/dev/acpica-unix-20061109/tools/acpixtract/acpixtract.c deleted file mode 100644 index 0d4af40fb4..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/tools/acpixtract/acpixtract.c +++ /dev/null @@ -1,782 +0,0 @@ - -/****************************************************************************** - * - * Module Name: acpixtract - convert ascii ACPI tables to binary - * $Revision: 1.5 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include -#include -#include -#include - -#define VERSION 0x20060324 - -#define FIND_HEADER 0 -#define EXTRACT_DATA 1 -#define BUFFER_SIZE 256 - -char Filename[16]; -unsigned char Data[16]; - -/* Local prototypes */ - -void -CheckAscii ( - unsigned char *Name, - int Count); - -void -NormalizeSignature ( - char *Signature); - -unsigned int -GetNextInstance ( - char *InputPathname, - char *Signature); - -int -ExtractTables ( - char *InputPathname, - char *Signature, - unsigned int MinimumInstances); - -size_t -GetTableHeader ( - FILE *InputFile, - unsigned char *OutputData); - -unsigned int -CountTableInstances ( - char *InputPathname, - char *Signature); - -int -ListTables ( - char *InputPathname); - -size_t -ConvertLine ( - char *InputLine, - unsigned char *OutputData); - -void -DisplayUsage ( - void); - - -struct TableInfo -{ - unsigned int Signature; - unsigned int Instances; - unsigned int NextInstance; - struct TableInfo *Next; -}; - -struct TableInfo *ListHead = NULL; - - -/****************************************************************************** - * - * FUNCTION: DisplayUsage - * - * DESCRIPTION: Usage message - * - ******************************************************************************/ - -void -DisplayUsage ( - void) -{ - - printf ("Usage: acpixtract [option] \n"); - printf ("\nExtract binary ACPI tables from text acpidump output\n"); - printf ("Default invocation extracts all DSDTs and SSDTs\n"); - printf ("Version %8.8X\n\n", VERSION); - printf ("Options:\n"); - printf (" -a Extract all tables, not just DSDT/SSDT\n"); - printf (" -l List table summaries, do not extract\n"); - printf (" -s Extract all tables named \n"); - printf ("\n"); -} - - -/******************************************************************************* - * - * FUNCTION: CheckAscii - * - * PARAMETERS: Name - Ascii string, at least as long as Count - * Count - Number of characters to check - * - * RETURN: None - * - * DESCRIPTION: Ensure that the requested number of characters are printable - * Ascii characters. Sets non-printable and null chars to . - * - ******************************************************************************/ - -void -CheckAscii ( - unsigned char *Name, - int Count) -{ - int i; - - - for (i = 0; i < Count; i++) - { - if (!Name[i] || !isprint (Name[i])) - { - Name[i] = ' '; - } - } -} - - -/******************************************************************************* - * - * FUNCTION: NormalizeSignature - * - * PARAMETERS: Name - Ascii string - * - * RETURN: None - * - * DESCRIPTION: Change "RSD PTR" to "RSDP" - * - ******************************************************************************/ - -void -NormalizeSignature ( - char *Signature) -{ - - if (!strncmp (Signature, "RSD ", 4)) - { - Signature[3] = 'P'; - } -} - - -/****************************************************************************** - * - * FUNCTION: ConvertLine - * - * DESCRIPTION: Convert one line of ascii text binary (up to 16 bytes) - * - ******************************************************************************/ - -size_t -ConvertLine ( - char *InputLine, - unsigned char *OutputData) -{ - char *End; - int BytesConverted; - int Converted[16]; - int i; - - - /* Terminate the input line at the end of the actual data (for sscanf) */ - - End = strstr (InputLine + 2, " "); - if (!End) - { - return 0; /* Don't understand the format */ - } - *End = 0; - - /* - * Convert one line of table data, of the form: - * : - * - * Example: - * 02C0: 5F 53 42 5F 4C 4E 4B 44 00 12 13 04 0C FF FF 08 _SB_LNKD........ - */ - BytesConverted = sscanf (InputLine, - "%*s %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x", - &Converted[0], &Converted[1], &Converted[2], &Converted[3], - &Converted[4], &Converted[5], &Converted[6], &Converted[7], - &Converted[8], &Converted[9], &Converted[10], &Converted[11], - &Converted[12], &Converted[13], &Converted[14], &Converted[15]); - - /* Pack converted data into a byte array */ - - for (i = 0; i < BytesConverted; i++) - { - OutputData[i] = (unsigned char) Converted[i]; - } - - return ((size_t) BytesConverted); -} - - -/****************************************************************************** - * - * FUNCTION: GetTableHeader - * - * DESCRIPTION: Extract and convert a table heaader - * - ******************************************************************************/ - -size_t -GetTableHeader ( - FILE *InputFile, - unsigned char *OutputData) -{ - size_t BytesConverted; - size_t TotalConverted = 0; - char Buffer[BUFFER_SIZE]; - int i; - - - /* Get the full 36 byte header, requires 3 lines */ - - for (i = 0; i < 3; i++) - { - if (!fgets (Buffer, BUFFER_SIZE, InputFile)) - { - return TotalConverted; - } - - BytesConverted = ConvertLine (Buffer, OutputData); - TotalConverted += BytesConverted; - OutputData += 16; - - if (BytesConverted != 16) - { - return TotalConverted; - } - } - - return TotalConverted; -} - - -/****************************************************************************** - * - * FUNCTION: CountTableInstances - * - * DESCRIPTION: Count the instances of table within the input file - * - ******************************************************************************/ - -unsigned int -CountTableInstances ( - char *InputPathname, - char *Signature) -{ - char Buffer[BUFFER_SIZE]; - FILE *InputFile; - unsigned int Instances = 0; - - - InputFile = fopen (InputPathname, "rt"); - if (!InputFile) - { - printf ("Could not open %s\n", InputPathname); - return 0; - } - - /* Count the number of instances of this signature */ - - while (fgets (Buffer, BUFFER_SIZE, InputFile)) - { - /* Ignore empty lines and lines that start with a space */ - - if ((Buffer[0] == ' ') || - (Buffer[0] == '\n')) - { - continue; - } - - NormalizeSignature (Buffer); - if (!strncmp (Buffer, Signature, 4)) - { - Instances++; - } - } - - fclose (InputFile); - return Instances; -} - - -/****************************************************************************** - * - * FUNCTION: GetNextInstance - * - * DESCRIPTION: - * - ******************************************************************************/ - -unsigned int -GetNextInstance ( - char *InputPathname, - char *Signature) -{ - struct TableInfo *Info; - - - Info = ListHead; - while (Info) - { - if (*(unsigned int *) Signature == Info->Signature) - { - break; - } - - Info = Info->Next; - } - - if (!Info) - { - Info = malloc (sizeof (struct TableInfo)); - - Info->Signature = *(unsigned int *) Signature; - Info->Instances = CountTableInstances (InputPathname, Signature); - Info->NextInstance = 1; - - Info->Next = ListHead; - ListHead = Info; - } - - if (Info->Instances > 1) - { - return (Info->NextInstance++); - } - - return (0); -} - - -/****************************************************************************** - * - * FUNCTION: ExtractTables - * - * DESCRIPTION: Convert text ACPI tables to binary - * - ******************************************************************************/ - -int -ExtractTables ( - char *InputPathname, - char *Signature, - unsigned int MinimumInstances) -{ - char Buffer[BUFFER_SIZE]; - FILE *InputFile; - FILE *OutputFile = NULL; - size_t BytesWritten; - size_t TotalBytesWritten = 0; - size_t BytesConverted; - unsigned int State = FIND_HEADER; - unsigned int FoundTable = 0; - unsigned int Instances = 0; - unsigned int ThisInstance; - char ThisSignature[4]; - - - /* Open input in text mode, output is in binary mode */ - - InputFile = fopen (InputPathname, "rt"); - if (!InputFile) - { - printf ("Could not open %s\n", InputPathname); - return -1; - } - - if (Signature) - { - /* Are there enough instances of the table to continue? */ - - NormalizeSignature (Signature); - - Instances = CountTableInstances (InputPathname, Signature); - if (Instances < MinimumInstances) - { - printf ("Table %s was not found in %s\n", Signature, InputPathname); - return -1; - } - - if (Instances == 0) - { - return 0; - } - } - - /* Convert all instances of the table to binary */ - - while (fgets (Buffer, BUFFER_SIZE, InputFile)) - { - switch (State) - { - case FIND_HEADER: - - /* Ignore empty lines and lines that start with a space */ - - if ((Buffer[0] == ' ') || - (Buffer[0] == '\n')) - { - continue; - } - - NormalizeSignature (Buffer); - strncpy (ThisSignature, Buffer, 4); - - if (Signature) - { - /* Ignore signatures that don't match */ - - if (strncmp (ThisSignature, Signature, 4)) - { - continue; - } - } - - /* Get the instance # for this signature */ - - ThisInstance = GetNextInstance (InputPathname, ThisSignature); - - /* Build an output filename and create/open the output file */ - - if (ThisInstance > 0) - { - sprintf (Filename, "%4.4s%u.dat", ThisSignature, ThisInstance); - } - else - { - sprintf (Filename, "%4.4s.dat", ThisSignature); - } - - OutputFile = fopen (Filename, "w+b"); - if (!OutputFile) - { - printf ("Could not open %s\n", Filename); - return -1; - } - - State = EXTRACT_DATA; - TotalBytesWritten = 0; - FoundTable = 1; - continue; - - case EXTRACT_DATA: - - /* Empty line or non-data line terminates the data */ - - if ((Buffer[0] == '\n') || - (Buffer[0] != ' ')) - { - fclose (OutputFile); - OutputFile = NULL; - State = FIND_HEADER; - - printf ("Acpi table [%4.4s] - % 6d bytes written to %s\n", - ThisSignature, TotalBytesWritten, Filename); - continue; - } - - /* Convert the ascii data (one line of text) to binary */ - - BytesConverted = ConvertLine (Buffer, Data); - - /* Write the binary data */ - - BytesWritten = fwrite (Data, 1, BytesConverted, OutputFile); - if (BytesWritten != BytesConverted) - { - printf ("Write error on %s\n", Filename); - fclose (OutputFile); - return -1; - } - - TotalBytesWritten += BytesConverted; - continue; - - default: - return -1; - } - } - - if (!FoundTable) - { - printf ("Table %s was not found in %s\n", Signature, InputPathname); - } - - if (OutputFile) - { - fclose (OutputFile); - } - - fclose (InputFile); - return 0; -} - - -/****************************************************************************** - * - * FUNCTION: ListTables - * - * DESCRIPTION: Display info for all ACPI tables found in input - * - ******************************************************************************/ - -int -ListTables ( - char *InputPathname) -{ - FILE *InputFile; - char Buffer[BUFFER_SIZE]; - size_t HeaderSize; - unsigned char Header[48]; - int TableCount = 0; - - - /* Open input in text mode, output is in binary mode */ - - InputFile = fopen (InputPathname, "rt"); - if (!InputFile) - { - printf ("Could not open %s\n", InputPathname); - return -1; - } - - printf ("\nSignature Length OemId OemTableId OemRevision CompilerId CompilerRevision\n\n"); - - while (fgets (Buffer, BUFFER_SIZE, InputFile)) - { - /* Ignore empty lines and lines that start with a space */ - - if ((Buffer[0] == ' ') || - (Buffer[0] == '\n')) - { - continue; - } - - /* Get the 36 byte header and display the fields */ - - HeaderSize = GetTableHeader (InputFile, Header); - if (HeaderSize < 16) - { - continue; - } - - /* RSDP has an oddball signature and header */ - - if (!strncmp ((char *) Header, "RSD PTR ", 8)) - { - CheckAscii (&Header[9], 6); - printf ("%8.4s \"%6.6s\"\n", "RSDP", &Header[9]); - TableCount++; - continue; - } - - /* Minimum size */ - - if (HeaderSize < 36) - { - continue; - } - - /* Signature and Table length */ - - TableCount++; - printf ("%8.4s % 7d", Header, *(int *) &Header[4]); - - /* FACS has only signature and length */ - - if (!strncmp ((char *) Header, "FACS", 4)) - { - printf ("\n"); - continue; - } - - /* OEM IDs and Compiler IDs */ - - CheckAscii (&Header[10], 6); - CheckAscii (&Header[16], 8); - CheckAscii (&Header[28], 4); - - printf (" \"%6.6s\" \"%8.8s\" %8.8X \"%4.4s\" %8.8X\n", - &Header[10], &Header[16], *(int *) &Header[24], - &Header[28], *(int *) &Header[32]); - } - - printf ("\nFound %d ACPI tables [%8.8X]\n", TableCount, VERSION); - fclose (InputFile); - return 0; -} - - -/****************************************************************************** - * - * FUNCTION: main - * - * DESCRIPTION: C main function - * - ******************************************************************************/ - -int -main ( - int argc, - char *argv[]) -{ - int Status; - - - if (argc < 2) - { - DisplayUsage (); - return 0; - } - - if (argv[1][0] == '-') - { - if (argc < 3) - { - DisplayUsage (); - return 0; - } - - switch (argv[1][1]) - { - case 'a': - return (ExtractTables (argv[2], NULL, 0)); - - case 'l': - return (ListTables (argv[2])); - - case 's': - return (ExtractTables (argv[2], &argv[1][2], 1)); - - default: - DisplayUsage (); - return 0; - } - } - - /* - * Default output is the DSDT and all SSDTs. One DSDT is required, - * any SSDTs are optional. - */ - Status = ExtractTables (argv[1], "DSDT", 1); - if (Status) - { - return Status; - } - - Status = ExtractTables (argv[1], "SSDT", 0); - return (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/utilities/utalloc.c b/sys/contrib/dev/acpica-unix-20061109/utilities/utalloc.c deleted file mode 100644 index 91dcfcfcec..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/utilities/utalloc.c +++ /dev/null @@ -1,472 +0,0 @@ -/****************************************************************************** - * - * Module Name: utalloc - local memory allocation routines - * $Revision: 1.162 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __UTALLOC_C__ - -#include "acpi.h" - -#define _COMPONENT ACPI_UTILITIES - ACPI_MODULE_NAME ("utalloc") - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCreateCaches - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Create all local caches - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtCreateCaches ( - void) -{ - ACPI_STATUS Status; - - - /* Object Caches, for frequently used objects */ - - Status = AcpiOsCreateCache ("Acpi-Namespace", sizeof (ACPI_NAMESPACE_NODE), - ACPI_MAX_NAMESPACE_CACHE_DEPTH, &AcpiGbl_NamespaceCache); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - Status = AcpiOsCreateCache ("Acpi-State", sizeof (ACPI_GENERIC_STATE), - ACPI_MAX_STATE_CACHE_DEPTH, &AcpiGbl_StateCache); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - Status = AcpiOsCreateCache ("Acpi-Parse", sizeof (ACPI_PARSE_OBJ_COMMON), - ACPI_MAX_PARSE_CACHE_DEPTH, &AcpiGbl_PsNodeCache); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - Status = AcpiOsCreateCache ("Acpi-ParseExt", sizeof (ACPI_PARSE_OBJ_NAMED), - ACPI_MAX_EXTPARSE_CACHE_DEPTH, &AcpiGbl_PsNodeExtCache); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - Status = AcpiOsCreateCache ("Acpi-Operand", sizeof (ACPI_OPERAND_OBJECT), - ACPI_MAX_OBJECT_CACHE_DEPTH, &AcpiGbl_OperandCache); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - -#ifdef ACPI_DBG_TRACK_ALLOCATIONS - - /* Memory allocation lists */ - - Status = AcpiUtCreateList ("Acpi-Global", 0, - &AcpiGbl_GlobalList); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - Status = AcpiUtCreateList ("Acpi-Namespace", sizeof (ACPI_NAMESPACE_NODE), - &AcpiGbl_NsNodeList); - if (ACPI_FAILURE (Status)) - { - return (Status); - } -#endif - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtDeleteCaches - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Purge and delete all local caches - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtDeleteCaches ( - void) -{ - - (void) AcpiOsDeleteCache (AcpiGbl_NamespaceCache); - AcpiGbl_NamespaceCache = NULL; - - (void) AcpiOsDeleteCache (AcpiGbl_StateCache); - AcpiGbl_StateCache = NULL; - - (void) AcpiOsDeleteCache (AcpiGbl_OperandCache); - AcpiGbl_OperandCache = NULL; - - (void) AcpiOsDeleteCache (AcpiGbl_PsNodeCache); - AcpiGbl_PsNodeCache = NULL; - - (void) AcpiOsDeleteCache (AcpiGbl_PsNodeExtCache); - AcpiGbl_PsNodeExtCache = NULL; - - -#ifdef ACPI_DBG_TRACK_ALLOCATIONS - - /* Debug only - display leftover memory allocation, if any */ - - AcpiUtDumpAllocations (ACPI_UINT32_MAX, NULL); - - /* Free memory lists */ - - AcpiOsFree (AcpiGbl_GlobalList); - AcpiGbl_GlobalList = NULL; - - AcpiOsFree (AcpiGbl_NsNodeList); - AcpiGbl_NsNodeList = NULL; -#endif - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtValidateBuffer - * - * PARAMETERS: Buffer - Buffer descriptor to be validated - * - * RETURN: Status - * - * DESCRIPTION: Perform parameter validation checks on an ACPI_BUFFER - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtValidateBuffer ( - ACPI_BUFFER *Buffer) -{ - - /* Obviously, the structure pointer must be valid */ - - if (!Buffer) - { - return (AE_BAD_PARAMETER); - } - - /* Special semantics for the length */ - - if ((Buffer->Length == ACPI_NO_BUFFER) || - (Buffer->Length == ACPI_ALLOCATE_BUFFER) || - (Buffer->Length == ACPI_ALLOCATE_LOCAL_BUFFER)) - { - return (AE_OK); - } - - /* Length is valid, the buffer pointer must be also */ - - if (!Buffer->Pointer) - { - return (AE_BAD_PARAMETER); - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtInitializeBuffer - * - * PARAMETERS: Buffer - Buffer to be validated - * RequiredLength - Length needed - * - * RETURN: Status - * - * DESCRIPTION: Validate that the buffer is of the required length or - * allocate a new buffer. Returned buffer is always zeroed. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtInitializeBuffer ( - ACPI_BUFFER *Buffer, - ACPI_SIZE RequiredLength) -{ - ACPI_STATUS Status = AE_OK; - - - switch (Buffer->Length) - { - case ACPI_NO_BUFFER: - - /* Set the exception and returned the required length */ - - Status = AE_BUFFER_OVERFLOW; - break; - - - case ACPI_ALLOCATE_BUFFER: - - /* Allocate a new buffer */ - - Buffer->Pointer = AcpiOsAllocate (RequiredLength); - if (!Buffer->Pointer) - { - return (AE_NO_MEMORY); - } - - /* Clear the buffer */ - - ACPI_MEMSET (Buffer->Pointer, 0, RequiredLength); - break; - - - case ACPI_ALLOCATE_LOCAL_BUFFER: - - /* Allocate a new buffer with local interface to allow tracking */ - - Buffer->Pointer = ACPI_ALLOCATE_ZEROED (RequiredLength); - if (!Buffer->Pointer) - { - return (AE_NO_MEMORY); - } - break; - - - default: - - /* Existing buffer: Validate the size of the buffer */ - - if (Buffer->Length < RequiredLength) - { - Status = AE_BUFFER_OVERFLOW; - break; - } - - /* Clear the buffer */ - - ACPI_MEMSET (Buffer->Pointer, 0, RequiredLength); - break; - } - - Buffer->Length = RequiredLength; - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtAllocate - * - * PARAMETERS: Size - Size of the allocation - * Component - Component type of caller - * Module - Source file name of caller - * Line - Line number of caller - * - * RETURN: Address of the allocated memory on success, NULL on failure. - * - * DESCRIPTION: Subsystem equivalent of malloc. - * - ******************************************************************************/ - -void * -AcpiUtAllocate ( - ACPI_SIZE Size, - UINT32 Component, - char *Module, - UINT32 Line) -{ - void *Allocation; - - - ACPI_FUNCTION_TRACE_U32 (UtAllocate, Size); - - - /* Check for an inadvertent size of zero bytes */ - - if (!Size) - { - ACPI_WARNING ((Module, Line, - "Attempt to allocate zero bytes, allocating 1 byte")); - Size = 1; - } - - Allocation = AcpiOsAllocate (Size); - if (!Allocation) - { - /* Report allocation error */ - - ACPI_WARNING ((Module, Line, - "Could not allocate size %X", (UINT32) Size)); - - return_PTR (NULL); - } - - return_PTR (Allocation); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtAllocateZeroed - * - * PARAMETERS: Size - Size of the allocation - * Component - Component type of caller - * Module - Source file name of caller - * Line - Line number of caller - * - * RETURN: Address of the allocated memory on success, NULL on failure. - * - * DESCRIPTION: Subsystem equivalent of calloc. Allocate and zero memory. - * - ******************************************************************************/ - -void * -AcpiUtAllocateZeroed ( - ACPI_SIZE Size, - UINT32 Component, - char *Module, - UINT32 Line) -{ - void *Allocation; - - - ACPI_FUNCTION_ENTRY (); - - - Allocation = AcpiUtAllocate (Size, Component, Module, Line); - if (Allocation) - { - /* Clear the memory block */ - - ACPI_MEMSET (Allocation, 0, Size); - } - - return (Allocation); -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/utilities/utcache.c b/sys/contrib/dev/acpica-unix-20061109/utilities/utcache.c deleted file mode 100644 index 7b6ff37126..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/utilities/utcache.c +++ /dev/null @@ -1,418 +0,0 @@ -/****************************************************************************** - * - * Module Name: utcache - local cache allocation routines - * $Revision: 1.6 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __UTCACHE_C__ - -#include "acpi.h" - -#define _COMPONENT ACPI_UTILITIES - ACPI_MODULE_NAME ("utcache") - - -#ifdef ACPI_USE_LOCAL_CACHE -/******************************************************************************* - * - * FUNCTION: AcpiOsCreateCache - * - * PARAMETERS: CacheName - Ascii name for the cache - * ObjectSize - Size of each cached object - * MaxDepth - Maximum depth of the cache (in objects) - * ReturnCache - Where the new cache object is returned - * - * RETURN: Status - * - * DESCRIPTION: Create a cache object - * - ******************************************************************************/ - -ACPI_STATUS -AcpiOsCreateCache ( - char *CacheName, - UINT16 ObjectSize, - UINT16 MaxDepth, - ACPI_MEMORY_LIST **ReturnCache) -{ - ACPI_MEMORY_LIST *Cache; - - - ACPI_FUNCTION_ENTRY (); - - - if (!CacheName || !ReturnCache || (ObjectSize < 16)) - { - return (AE_BAD_PARAMETER); - } - - /* Create the cache object */ - - Cache = AcpiOsAllocate (sizeof (ACPI_MEMORY_LIST)); - if (!Cache) - { - return (AE_NO_MEMORY); - } - - /* Populate the cache object and return it */ - - ACPI_MEMSET (Cache, 0, sizeof (ACPI_MEMORY_LIST)); - Cache->LinkOffset = 8; - Cache->ListName = CacheName; - Cache->ObjectSize = ObjectSize; - Cache->MaxDepth = MaxDepth; - - *ReturnCache = Cache; - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiOsPurgeCache - * - * PARAMETERS: Cache - Handle to cache object - * - * RETURN: Status - * - * DESCRIPTION: Free all objects within the requested cache. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiOsPurgeCache ( - ACPI_MEMORY_LIST *Cache) -{ - char *Next; - - - ACPI_FUNCTION_ENTRY (); - - - if (!Cache) - { - return (AE_BAD_PARAMETER); - } - - /* Walk the list of objects in this cache */ - - while (Cache->ListHead) - { - /* Delete and unlink one cached state object */ - - Next = *(ACPI_CAST_INDIRECT_PTR (char, - &(((char *) Cache->ListHead)[Cache->LinkOffset]))); - ACPI_FREE (Cache->ListHead); - - Cache->ListHead = Next; - Cache->CurrentDepth--; - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiOsDeleteCache - * - * PARAMETERS: Cache - Handle to cache object - * - * RETURN: Status - * - * DESCRIPTION: Free all objects within the requested cache and delete the - * cache object. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiOsDeleteCache ( - ACPI_MEMORY_LIST *Cache) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_ENTRY (); - - - /* Purge all objects in the cache */ - - Status = AcpiOsPurgeCache (Cache); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* Now we can delete the cache object */ - - AcpiOsFree (Cache); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiOsReleaseObject - * - * PARAMETERS: Cache - Handle to cache object - * Object - The object to be released - * - * RETURN: None - * - * DESCRIPTION: Release an object to the specified cache. If cache is full, - * the object is deleted. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiOsReleaseObject ( - ACPI_MEMORY_LIST *Cache, - void *Object) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_ENTRY (); - - - if (!Cache || !Object) - { - return (AE_BAD_PARAMETER); - } - - /* If cache is full, just free this object */ - - if (Cache->CurrentDepth >= Cache->MaxDepth) - { - ACPI_FREE (Object); - ACPI_MEM_TRACKING (Cache->TotalFreed++); - } - - /* Otherwise put this object back into the cache */ - - else - { - Status = AcpiUtAcquireMutex (ACPI_MTX_CACHES); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* Mark the object as cached */ - - ACPI_MEMSET (Object, 0xCA, Cache->ObjectSize); - ACPI_SET_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_CACHED); - - /* Put the object at the head of the cache list */ - - * (ACPI_CAST_INDIRECT_PTR (char, - &(((char *) Object)[Cache->LinkOffset]))) = Cache->ListHead; - Cache->ListHead = Object; - Cache->CurrentDepth++; - - (void) AcpiUtReleaseMutex (ACPI_MTX_CACHES); - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiOsAcquireObject - * - * PARAMETERS: Cache - Handle to cache object - * - * RETURN: the acquired object. NULL on error - * - * DESCRIPTION: Get an object from the specified cache. If cache is empty, - * the object is allocated. - * - ******************************************************************************/ - -void * -AcpiOsAcquireObject ( - ACPI_MEMORY_LIST *Cache) -{ - ACPI_STATUS Status; - void *Object; - - - ACPI_FUNCTION_NAME (OsAcquireObject); - - - if (!Cache) - { - return (NULL); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_CACHES); - if (ACPI_FAILURE (Status)) - { - return (NULL); - } - - ACPI_MEM_TRACKING (Cache->Requests++); - - /* Check the cache first */ - - if (Cache->ListHead) - { - /* There is an object available, use it */ - - Object = Cache->ListHead; - Cache->ListHead = *(ACPI_CAST_INDIRECT_PTR (char, - &(((char *) Object)[Cache->LinkOffset]))); - - Cache->CurrentDepth--; - - ACPI_MEM_TRACKING (Cache->Hits++); - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Object %p from %s cache\n", Object, Cache->ListName)); - - Status = AcpiUtReleaseMutex (ACPI_MTX_CACHES); - if (ACPI_FAILURE (Status)) - { - return (NULL); - } - - /* Clear (zero) the previously used Object */ - - ACPI_MEMSET (Object, 0, Cache->ObjectSize); - } - else - { - /* The cache is empty, create a new object */ - - ACPI_MEM_TRACKING (Cache->TotalAllocated++); - - /* Avoid deadlock with ACPI_ALLOCATE_ZEROED */ - - Status = AcpiUtReleaseMutex (ACPI_MTX_CACHES); - if (ACPI_FAILURE (Status)) - { - return (NULL); - } - - Object = ACPI_ALLOCATE_ZEROED (Cache->ObjectSize); - if (!Object) - { - return (NULL); - } - } - - return (Object); -} -#endif /* ACPI_USE_LOCAL_CACHE */ - - diff --git a/sys/contrib/dev/acpica-unix-20061109/utilities/utclib.c b/sys/contrib/dev/acpica-unix-20061109/utilities/utclib.c deleted file mode 100644 index 2fbebcb804..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/utilities/utclib.c +++ /dev/null @@ -1,961 +0,0 @@ -/****************************************************************************** - * - * Module Name: cmclib - Local implementation of C library functions - * $Revision: 1.59 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __CMCLIB_C__ - -#include "acpi.h" - -/* - * These implementations of standard C Library routines can optionally be - * used if a C library is not available. In general, they are less efficient - * than an inline or assembly implementation - */ - -#define _COMPONENT ACPI_UTILITIES - ACPI_MODULE_NAME ("cmclib") - - -#ifndef ACPI_USE_SYSTEM_CLIBRARY - -#define NEGATIVE 1 -#define POSITIVE 0 - - -/******************************************************************************* - * - * FUNCTION: AcpiUtMemcmp (memcmp) - * - * PARAMETERS: Buffer1 - First Buffer - * Buffer2 - Second Buffer - * Count - Maximum # of bytes to compare - * - * RETURN: Index where Buffers mismatched, or 0 if Buffers matched - * - * DESCRIPTION: Compare two Buffers, with a maximum length - * - ******************************************************************************/ - -int -AcpiUtMemcmp ( - const char *Buffer1, - const char *Buffer2, - ACPI_SIZE Count) -{ - - for ( ; Count-- && (*Buffer1 == *Buffer2); Buffer1++, Buffer2++) - { - } - - return ((Count == ACPI_SIZE_MAX) ? 0 : ((unsigned char) *Buffer1 - - (unsigned char) *Buffer2)); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtMemcpy (memcpy) - * - * PARAMETERS: Dest - Target of the copy - * Src - Source buffer to copy - * Count - Number of bytes to copy - * - * RETURN: Dest - * - * DESCRIPTION: Copy arbitrary bytes of memory - * - ******************************************************************************/ - -void * -AcpiUtMemcpy ( - void *Dest, - const void *Src, - ACPI_SIZE Count) -{ - char *New = (char *) Dest; - char *Old = (char *) Src; - - - while (Count) - { - *New = *Old; - New++; - Old++; - Count--; - } - - return (Dest); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtMemset (memset) - * - * PARAMETERS: Dest - Buffer to set - * Value - Value to set each byte of memory - * Count - Number of bytes to set - * - * RETURN: Dest - * - * DESCRIPTION: Initialize a buffer to a known value. - * - ******************************************************************************/ - -void * -AcpiUtMemset ( - void *Dest, - ACPI_NATIVE_UINT Value, - ACPI_SIZE Count) -{ - char *New = (char *) Dest; - - - while (Count) - { - *New = (char) Value; - New++; - Count--; - } - - return (Dest); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtStrlen (strlen) - * - * PARAMETERS: String - Null terminated string - * - * RETURN: Length - * - * DESCRIPTION: Returns the length of the input string - * - ******************************************************************************/ - - -ACPI_SIZE -AcpiUtStrlen ( - const char *String) -{ - UINT32 Length = 0; - - - /* Count the string until a null is encountered */ - - while (*String) - { - Length++; - String++; - } - - return (Length); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtStrcpy (strcpy) - * - * PARAMETERS: DstString - Target of the copy - * SrcString - The source string to copy - * - * RETURN: DstString - * - * DESCRIPTION: Copy a null terminated string - * - ******************************************************************************/ - -char * -AcpiUtStrcpy ( - char *DstString, - const char *SrcString) -{ - char *String = DstString; - - - /* Move bytes brute force */ - - while (*SrcString) - { - *String = *SrcString; - - String++; - SrcString++; - } - - /* Null terminate */ - - *String = 0; - return (DstString); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtStrncpy (strncpy) - * - * PARAMETERS: DstString - Target of the copy - * SrcString - The source string to copy - * Count - Maximum # of bytes to copy - * - * RETURN: DstString - * - * DESCRIPTION: Copy a null terminated string, with a maximum length - * - ******************************************************************************/ - -char * -AcpiUtStrncpy ( - char *DstString, - const char *SrcString, - ACPI_SIZE Count) -{ - char *String = DstString; - - - /* Copy the string */ - - for (String = DstString; - Count && (Count--, (*String++ = *SrcString++)); ) - {;} - - /* Pad with nulls if necessary */ - - while (Count--) - { - *String = 0; - String++; - } - - /* Return original pointer */ - - return (DstString); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtStrcmp (strcmp) - * - * PARAMETERS: String1 - First string - * String2 - Second string - * - * RETURN: Index where strings mismatched, or 0 if strings matched - * - * DESCRIPTION: Compare two null terminated strings - * - ******************************************************************************/ - -int -AcpiUtStrcmp ( - const char *String1, - const char *String2) -{ - - - for ( ; (*String1 == *String2); String2++) - { - if (!*String1++) - { - return (0); - } - } - - return ((unsigned char) *String1 - (unsigned char) *String2); -} - - -#ifdef ACPI_FUTURE_IMPLEMENTATION -/* Not used at this time */ -/******************************************************************************* - * - * FUNCTION: AcpiUtStrchr (strchr) - * - * PARAMETERS: String - Search string - * ch - character to search for - * - * RETURN: Ptr to char or NULL if not found - * - * DESCRIPTION: Search a string for a character - * - ******************************************************************************/ - -char * -AcpiUtStrchr ( - const char *String, - int ch) -{ - - - for ( ; (*String); String++) - { - if ((*String) == (char) ch) - { - return ((char *) String); - } - } - - return (NULL); -} -#endif - -/******************************************************************************* - * - * FUNCTION: AcpiUtStrncmp (strncmp) - * - * PARAMETERS: String1 - First string - * String2 - Second string - * Count - Maximum # of bytes to compare - * - * RETURN: Index where strings mismatched, or 0 if strings matched - * - * DESCRIPTION: Compare two null terminated strings, with a maximum length - * - ******************************************************************************/ - -int -AcpiUtStrncmp ( - const char *String1, - const char *String2, - ACPI_SIZE Count) -{ - - - for ( ; Count-- && (*String1 == *String2); String2++) - { - if (!*String1++) - { - return (0); - } - } - - return ((Count == ACPI_SIZE_MAX) ? 0 : ((unsigned char) *String1 - - (unsigned char) *String2)); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtStrcat (Strcat) - * - * PARAMETERS: DstString - Target of the copy - * SrcString - The source string to copy - * - * RETURN: DstString - * - * DESCRIPTION: Append a null terminated string to a null terminated string - * - ******************************************************************************/ - -char * -AcpiUtStrcat ( - char *DstString, - const char *SrcString) -{ - char *String; - - - /* Find end of the destination string */ - - for (String = DstString; *String++; ) - { ; } - - /* Concatenate the string */ - - for (--String; (*String++ = *SrcString++); ) - { ; } - - return (DstString); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtStrncat (strncat) - * - * PARAMETERS: DstString - Target of the copy - * SrcString - The source string to copy - * Count - Maximum # of bytes to copy - * - * RETURN: DstString - * - * DESCRIPTION: Append a null terminated string to a null terminated string, - * with a maximum count. - * - ******************************************************************************/ - -char * -AcpiUtStrncat ( - char *DstString, - const char *SrcString, - ACPI_SIZE Count) -{ - char *String; - - - if (Count) - { - /* Find end of the destination string */ - - for (String = DstString; *String++; ) - { ; } - - /* Concatenate the string */ - - for (--String; (*String++ = *SrcString++) && --Count; ) - { ; } - - /* Null terminate if necessary */ - - if (!Count) - { - *String = 0; - } - } - - return (DstString); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtStrstr (strstr) - * - * PARAMETERS: String1 - Target string - * String2 - Substring to search for - * - * RETURN: Where substring match starts, Null if no match found - * - * DESCRIPTION: Checks if String2 occurs in String1. This is not really a - * full implementation of strstr, only sufficient for command - * matching - * - ******************************************************************************/ - -char * -AcpiUtStrstr ( - char *String1, - char *String2) -{ - char *String; - - - if (AcpiUtStrlen (String2) > AcpiUtStrlen (String1)) - { - return (NULL); - } - - /* Walk entire string, comparing the letters */ - - for (String = String1; *String2; ) - { - if (*String2 != *String) - { - return (NULL); - } - - String2++; - String++; - } - - return (String1); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtStrtoul (strtoul) - * - * PARAMETERS: String - Null terminated string - * Terminater - Where a pointer to the terminating byte is - * returned - * Base - Radix of the string - * - * RETURN: Converted value - * - * DESCRIPTION: Convert a string into a 32-bit unsigned value. - * Note: use AcpiUtStrtoul64 for 64-bit integers. - * - ******************************************************************************/ - -UINT32 -AcpiUtStrtoul ( - const char *String, - char **Terminator, - UINT32 Base) -{ - UINT32 converted = 0; - UINT32 index; - UINT32 sign; - const char *StringStart; - UINT32 ReturnValue = 0; - ACPI_STATUS Status = AE_OK; - - - /* - * Save the value of the pointer to the buffer's first - * character, save the current errno value, and then - * skip over any white space in the buffer: - */ - StringStart = String; - while (ACPI_IS_SPACE (*String) || *String == '\t') - { - ++String; - } - - /* - * The buffer may contain an optional plus or minus sign. - * If it does, then skip over it but remember what is was: - */ - if (*String == '-') - { - sign = NEGATIVE; - ++String; - } - else if (*String == '+') - { - ++String; - sign = POSITIVE; - } - else - { - sign = POSITIVE; - } - - /* - * If the input parameter Base is zero, then we need to - * determine if it is octal, decimal, or hexadecimal: - */ - if (Base == 0) - { - if (*String == '0') - { - if (AcpiUtToLower (*(++String)) == 'x') - { - Base = 16; - ++String; - } - else - { - Base = 8; - } - } - else - { - Base = 10; - } - } - else if (Base < 2 || Base > 36) - { - /* - * The specified Base parameter is not in the domain of - * this function: - */ - goto done; - } - - /* - * For octal and hexadecimal bases, skip over the leading - * 0 or 0x, if they are present. - */ - if (Base == 8 && *String == '0') - { - String++; - } - - if (Base == 16 && - *String == '0' && - AcpiUtToLower (*(++String)) == 'x') - { - String++; - } - - /* - * Main loop: convert the string to an unsigned long: - */ - while (*String) - { - if (ACPI_IS_DIGIT (*String)) - { - index = (UINT32) ((UINT8) *String - '0'); - } - else - { - index = (UINT32) AcpiUtToUpper (*String); - if (ACPI_IS_UPPER (index)) - { - index = index - 'A' + 10; - } - else - { - goto done; - } - } - - if (index >= Base) - { - goto done; - } - - /* - * Check to see if value is out of range: - */ - - if (ReturnValue > ((ACPI_UINT32_MAX - (UINT32) index) / - (UINT32) Base)) - { - Status = AE_ERROR; - ReturnValue = 0; /* reset */ - } - else - { - ReturnValue *= Base; - ReturnValue += index; - converted = 1; - } - - ++String; - } - -done: - /* - * If appropriate, update the caller's pointer to the next - * unconverted character in the buffer. - */ - if (Terminator) - { - if (converted == 0 && ReturnValue == 0 && String != NULL) - { - *Terminator = (char *) StringStart; - } - else - { - *Terminator = (char *) String; - } - } - - if (Status == AE_ERROR) - { - ReturnValue = ACPI_UINT32_MAX; - } - - /* - * If a minus sign was present, then "the conversion is negated": - */ - if (sign == NEGATIVE) - { - ReturnValue = (ACPI_UINT32_MAX - ReturnValue) + 1; - } - - return (ReturnValue); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtToUpper (TOUPPER) - * - * PARAMETERS: c - Character to convert - * - * RETURN: Converted character as an int - * - * DESCRIPTION: Convert character to uppercase - * - ******************************************************************************/ - -int -AcpiUtToUpper ( - int c) -{ - - return (ACPI_IS_LOWER(c) ? ((c)-0x20) : (c)); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtToLower (TOLOWER) - * - * PARAMETERS: c - Character to convert - * - * RETURN: Converted character as an int - * - * DESCRIPTION: Convert character to lowercase - * - ******************************************************************************/ - -int -AcpiUtToLower ( - int c) -{ - - return (ACPI_IS_UPPER(c) ? ((c)+0x20) : (c)); -} - - -/******************************************************************************* - * - * FUNCTION: is* functions - * - * DESCRIPTION: is* functions use the ctype table below - * - ******************************************************************************/ - -const UINT8 _acpi_ctype[257] = { - _ACPI_CN, /* 0x0 0. */ - _ACPI_CN, /* 0x1 1. */ - _ACPI_CN, /* 0x2 2. */ - _ACPI_CN, /* 0x3 3. */ - _ACPI_CN, /* 0x4 4. */ - _ACPI_CN, /* 0x5 5. */ - _ACPI_CN, /* 0x6 6. */ - _ACPI_CN, /* 0x7 7. */ - _ACPI_CN, /* 0x8 8. */ - _ACPI_CN|_ACPI_SP, /* 0x9 9. */ - _ACPI_CN|_ACPI_SP, /* 0xA 10. */ - _ACPI_CN|_ACPI_SP, /* 0xB 11. */ - _ACPI_CN|_ACPI_SP, /* 0xC 12. */ - _ACPI_CN|_ACPI_SP, /* 0xD 13. */ - _ACPI_CN, /* 0xE 14. */ - _ACPI_CN, /* 0xF 15. */ - _ACPI_CN, /* 0x10 16. */ - _ACPI_CN, /* 0x11 17. */ - _ACPI_CN, /* 0x12 18. */ - _ACPI_CN, /* 0x13 19. */ - _ACPI_CN, /* 0x14 20. */ - _ACPI_CN, /* 0x15 21. */ - _ACPI_CN, /* 0x16 22. */ - _ACPI_CN, /* 0x17 23. */ - _ACPI_CN, /* 0x18 24. */ - _ACPI_CN, /* 0x19 25. */ - _ACPI_CN, /* 0x1A 26. */ - _ACPI_CN, /* 0x1B 27. */ - _ACPI_CN, /* 0x1C 28. */ - _ACPI_CN, /* 0x1D 29. */ - _ACPI_CN, /* 0x1E 30. */ - _ACPI_CN, /* 0x1F 31. */ - _ACPI_XS|_ACPI_SP, /* 0x20 32. ' ' */ - _ACPI_PU, /* 0x21 33. '!' */ - _ACPI_PU, /* 0x22 34. '"' */ - _ACPI_PU, /* 0x23 35. '#' */ - _ACPI_PU, /* 0x24 36. '$' */ - _ACPI_PU, /* 0x25 37. '%' */ - _ACPI_PU, /* 0x26 38. '&' */ - _ACPI_PU, /* 0x27 39. ''' */ - _ACPI_PU, /* 0x28 40. '(' */ - _ACPI_PU, /* 0x29 41. ')' */ - _ACPI_PU, /* 0x2A 42. '*' */ - _ACPI_PU, /* 0x2B 43. '+' */ - _ACPI_PU, /* 0x2C 44. ',' */ - _ACPI_PU, /* 0x2D 45. '-' */ - _ACPI_PU, /* 0x2E 46. '.' */ - _ACPI_PU, /* 0x2F 47. '/' */ - _ACPI_XD|_ACPI_DI, /* 0x30 48. '0' */ - _ACPI_XD|_ACPI_DI, /* 0x31 49. '1' */ - _ACPI_XD|_ACPI_DI, /* 0x32 50. '2' */ - _ACPI_XD|_ACPI_DI, /* 0x33 51. '3' */ - _ACPI_XD|_ACPI_DI, /* 0x34 52. '4' */ - _ACPI_XD|_ACPI_DI, /* 0x35 53. '5' */ - _ACPI_XD|_ACPI_DI, /* 0x36 54. '6' */ - _ACPI_XD|_ACPI_DI, /* 0x37 55. '7' */ - _ACPI_XD|_ACPI_DI, /* 0x38 56. '8' */ - _ACPI_XD|_ACPI_DI, /* 0x39 57. '9' */ - _ACPI_PU, /* 0x3A 58. ':' */ - _ACPI_PU, /* 0x3B 59. ';' */ - _ACPI_PU, /* 0x3C 60. '<' */ - _ACPI_PU, /* 0x3D 61. '=' */ - _ACPI_PU, /* 0x3E 62. '>' */ - _ACPI_PU, /* 0x3F 63. '?' */ - _ACPI_PU, /* 0x40 64. '@' */ - _ACPI_XD|_ACPI_UP, /* 0x41 65. 'A' */ - _ACPI_XD|_ACPI_UP, /* 0x42 66. 'B' */ - _ACPI_XD|_ACPI_UP, /* 0x43 67. 'C' */ - _ACPI_XD|_ACPI_UP, /* 0x44 68. 'D' */ - _ACPI_XD|_ACPI_UP, /* 0x45 69. 'E' */ - _ACPI_XD|_ACPI_UP, /* 0x46 70. 'F' */ - _ACPI_UP, /* 0x47 71. 'G' */ - _ACPI_UP, /* 0x48 72. 'H' */ - _ACPI_UP, /* 0x49 73. 'I' */ - _ACPI_UP, /* 0x4A 74. 'J' */ - _ACPI_UP, /* 0x4B 75. 'K' */ - _ACPI_UP, /* 0x4C 76. 'L' */ - _ACPI_UP, /* 0x4D 77. 'M' */ - _ACPI_UP, /* 0x4E 78. 'N' */ - _ACPI_UP, /* 0x4F 79. 'O' */ - _ACPI_UP, /* 0x50 80. 'P' */ - _ACPI_UP, /* 0x51 81. 'Q' */ - _ACPI_UP, /* 0x52 82. 'R' */ - _ACPI_UP, /* 0x53 83. 'S' */ - _ACPI_UP, /* 0x54 84. 'T' */ - _ACPI_UP, /* 0x55 85. 'U' */ - _ACPI_UP, /* 0x56 86. 'V' */ - _ACPI_UP, /* 0x57 87. 'W' */ - _ACPI_UP, /* 0x58 88. 'X' */ - _ACPI_UP, /* 0x59 89. 'Y' */ - _ACPI_UP, /* 0x5A 90. 'Z' */ - _ACPI_PU, /* 0x5B 91. '[' */ - _ACPI_PU, /* 0x5C 92. '\' */ - _ACPI_PU, /* 0x5D 93. ']' */ - _ACPI_PU, /* 0x5E 94. '^' */ - _ACPI_PU, /* 0x5F 95. '_' */ - _ACPI_PU, /* 0x60 96. '`' */ - _ACPI_XD|_ACPI_LO, /* 0x61 97. 'a' */ - _ACPI_XD|_ACPI_LO, /* 0x62 98. 'b' */ - _ACPI_XD|_ACPI_LO, /* 0x63 99. 'c' */ - _ACPI_XD|_ACPI_LO, /* 0x64 100. 'd' */ - _ACPI_XD|_ACPI_LO, /* 0x65 101. 'e' */ - _ACPI_XD|_ACPI_LO, /* 0x66 102. 'f' */ - _ACPI_LO, /* 0x67 103. 'g' */ - _ACPI_LO, /* 0x68 104. 'h' */ - _ACPI_LO, /* 0x69 105. 'i' */ - _ACPI_LO, /* 0x6A 106. 'j' */ - _ACPI_LO, /* 0x6B 107. 'k' */ - _ACPI_LO, /* 0x6C 108. 'l' */ - _ACPI_LO, /* 0x6D 109. 'm' */ - _ACPI_LO, /* 0x6E 110. 'n' */ - _ACPI_LO, /* 0x6F 111. 'o' */ - _ACPI_LO, /* 0x70 112. 'p' */ - _ACPI_LO, /* 0x71 113. 'q' */ - _ACPI_LO, /* 0x72 114. 'r' */ - _ACPI_LO, /* 0x73 115. 's' */ - _ACPI_LO, /* 0x74 116. 't' */ - _ACPI_LO, /* 0x75 117. 'u' */ - _ACPI_LO, /* 0x76 118. 'v' */ - _ACPI_LO, /* 0x77 119. 'w' */ - _ACPI_LO, /* 0x78 120. 'x' */ - _ACPI_LO, /* 0x79 121. 'y' */ - _ACPI_LO, /* 0x7A 122. 'z' */ - _ACPI_PU, /* 0x7B 123. '{' */ - _ACPI_PU, /* 0x7C 124. '|' */ - _ACPI_PU, /* 0x7D 125. '}' */ - _ACPI_PU, /* 0x7E 126. '~' */ - _ACPI_CN, /* 0x7F 127. */ - - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x80 to 0x8F */ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x90 to 0x9F */ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xA0 to 0xAF */ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xB0 to 0xBF */ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xC0 to 0xCF */ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xD0 to 0xDF */ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xE0 to 0xEF */ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* 0xF0 to 0x100 */ -}; - - -#endif /* ACPI_USE_SYSTEM_CLIBRARY */ - diff --git a/sys/contrib/dev/acpica-unix-20061109/utilities/utcopy.c b/sys/contrib/dev/acpica-unix-20061109/utilities/utcopy.c deleted file mode 100644 index 111af3085f..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/utilities/utcopy.c +++ /dev/null @@ -1,1091 +0,0 @@ -/****************************************************************************** - * - * Module Name: utcopy - Internal to external object translation utilities - * $Revision: 1.129 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __UTCOPY_C__ - -#include "acpi.h" -#include "amlcode.h" - - -#define _COMPONENT ACPI_UTILITIES - ACPI_MODULE_NAME ("utcopy") - -/* Local prototypes */ - -static ACPI_STATUS -AcpiUtCopyIsimpleToEsimple ( - ACPI_OPERAND_OBJECT *InternalObject, - ACPI_OBJECT *ExternalObject, - UINT8 *DataSpace, - ACPI_SIZE *BufferSpaceUsed); - -static ACPI_STATUS -AcpiUtCopyIelementToIelement ( - UINT8 ObjectType, - ACPI_OPERAND_OBJECT *SourceObject, - ACPI_GENERIC_STATE *State, - void *Context); - -static ACPI_STATUS -AcpiUtCopyIpackageToEpackage ( - ACPI_OPERAND_OBJECT *InternalObject, - UINT8 *Buffer, - ACPI_SIZE *SpaceUsed); - -static ACPI_STATUS -AcpiUtCopyEsimpleToIsimple( - ACPI_OBJECT *UserObj, - ACPI_OPERAND_OBJECT **ReturnObj); - -static ACPI_STATUS -AcpiUtCopySimpleObject ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *DestDesc); - -static ACPI_STATUS -AcpiUtCopyIelementToEelement ( - UINT8 ObjectType, - ACPI_OPERAND_OBJECT *SourceObject, - ACPI_GENERIC_STATE *State, - void *Context); - -static ACPI_STATUS -AcpiUtCopyIpackageToIpackage ( - ACPI_OPERAND_OBJECT *SourceObj, - ACPI_OPERAND_OBJECT *DestObj, - ACPI_WALK_STATE *WalkState); - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCopyIsimpleToEsimple - * - * PARAMETERS: InternalObject - Source object to be copied - * ExternalObject - Where to return the copied object - * DataSpace - Where object data is returned (such as - * buffer and string data) - * BufferSpaceUsed - Length of DataSpace that was used - * - * RETURN: Status - * - * DESCRIPTION: This function is called to copy a simple internal object to - * an external object. - * - * The DataSpace buffer is assumed to have sufficient space for - * the object. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiUtCopyIsimpleToEsimple ( - ACPI_OPERAND_OBJECT *InternalObject, - ACPI_OBJECT *ExternalObject, - UINT8 *DataSpace, - ACPI_SIZE *BufferSpaceUsed) -{ - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE (UtCopyIsimpleToEsimple); - - - *BufferSpaceUsed = 0; - - /* - * Check for NULL object case (could be an uninitialized - * package element) - */ - if (!InternalObject) - { - return_ACPI_STATUS (AE_OK); - } - - /* Always clear the external object */ - - ACPI_MEMSET (ExternalObject, 0, sizeof (ACPI_OBJECT)); - - /* - * In general, the external object will be the same type as - * the internal object - */ - ExternalObject->Type = ACPI_GET_OBJECT_TYPE (InternalObject); - - /* However, only a limited number of external types are supported */ - - switch (ACPI_GET_OBJECT_TYPE (InternalObject)) - { - case ACPI_TYPE_STRING: - - ExternalObject->String.Pointer = (char *) DataSpace; - ExternalObject->String.Length = InternalObject->String.Length; - *BufferSpaceUsed = ACPI_ROUND_UP_TO_NATIVE_WORD ( - (ACPI_SIZE) InternalObject->String.Length + 1); - - ACPI_MEMCPY ((void *) DataSpace, - (void *) InternalObject->String.Pointer, - (ACPI_SIZE) InternalObject->String.Length + 1); - break; - - - case ACPI_TYPE_BUFFER: - - ExternalObject->Buffer.Pointer = DataSpace; - ExternalObject->Buffer.Length = InternalObject->Buffer.Length; - *BufferSpaceUsed = ACPI_ROUND_UP_TO_NATIVE_WORD ( - InternalObject->String.Length); - - ACPI_MEMCPY ((void *) DataSpace, - (void *) InternalObject->Buffer.Pointer, - InternalObject->Buffer.Length); - break; - - - case ACPI_TYPE_INTEGER: - - ExternalObject->Integer.Value = InternalObject->Integer.Value; - break; - - - case ACPI_TYPE_LOCAL_REFERENCE: - - /* - * This is an object reference. Attempt to dereference it. - */ - switch (InternalObject->Reference.Opcode) - { - case AML_INT_NAMEPATH_OP: - - /* For namepath, return the object handle ("reference") */ - - default: - /* - * Use the object type of "Any" to indicate a reference - * to object containing a handle to an ACPI named object. - */ - ExternalObject->Type = ACPI_TYPE_ANY; - ExternalObject->Reference.Handle = InternalObject->Reference.Node; - break; - } - break; - - - case ACPI_TYPE_PROCESSOR: - - ExternalObject->Processor.ProcId = InternalObject->Processor.ProcId; - ExternalObject->Processor.PblkAddress = InternalObject->Processor.Address; - ExternalObject->Processor.PblkLength = InternalObject->Processor.Length; - break; - - - case ACPI_TYPE_POWER: - - ExternalObject->PowerResource.SystemLevel = - InternalObject->PowerResource.SystemLevel; - - ExternalObject->PowerResource.ResourceOrder = - InternalObject->PowerResource.ResourceOrder; - break; - - - default: - /* - * There is no corresponding external object type - */ - return_ACPI_STATUS (AE_SUPPORT); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCopyIelementToEelement - * - * PARAMETERS: ACPI_PKG_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Copy one package element to another package element - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiUtCopyIelementToEelement ( - UINT8 ObjectType, - ACPI_OPERAND_OBJECT *SourceObject, - ACPI_GENERIC_STATE *State, - void *Context) -{ - ACPI_STATUS Status = AE_OK; - ACPI_PKG_INFO *Info = (ACPI_PKG_INFO *) Context; - ACPI_SIZE ObjectSpace; - UINT32 ThisIndex; - ACPI_OBJECT *TargetObject; - - - ACPI_FUNCTION_ENTRY (); - - - ThisIndex = State->Pkg.Index; - TargetObject = (ACPI_OBJECT *) - &((ACPI_OBJECT *)(State->Pkg.DestObject))->Package.Elements[ThisIndex]; - - switch (ObjectType) - { - case ACPI_COPY_TYPE_SIMPLE: - - /* - * This is a simple or null object - */ - Status = AcpiUtCopyIsimpleToEsimple (SourceObject, - TargetObject, Info->FreeSpace, &ObjectSpace); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - break; - - - case ACPI_COPY_TYPE_PACKAGE: - - /* - * Build the package object - */ - TargetObject->Type = ACPI_TYPE_PACKAGE; - TargetObject->Package.Count = SourceObject->Package.Count; - TargetObject->Package.Elements = - ACPI_CAST_PTR (ACPI_OBJECT, Info->FreeSpace); - - /* - * Pass the new package object back to the package walk routine - */ - State->Pkg.ThisTargetObj = TargetObject; - - /* - * Save space for the array of objects (Package elements) - * update the buffer length counter - */ - ObjectSpace = ACPI_ROUND_UP_TO_NATIVE_WORD ( - (ACPI_SIZE) TargetObject->Package.Count * - sizeof (ACPI_OBJECT)); - break; - - - default: - return (AE_BAD_PARAMETER); - } - - Info->FreeSpace += ObjectSpace; - Info->Length += ObjectSpace; - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCopyIpackageToEpackage - * - * PARAMETERS: InternalObject - Pointer to the object we are returning - * Buffer - Where the object is returned - * SpaceUsed - Where the object length is returned - * - * RETURN: Status - * - * DESCRIPTION: This function is called to place a package object in a user - * buffer. A package object by definition contains other objects. - * - * The buffer is assumed to have sufficient space for the object. - * The caller must have verified the buffer length needed using the - * AcpiUtGetObjectSize function before calling this function. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiUtCopyIpackageToEpackage ( - ACPI_OPERAND_OBJECT *InternalObject, - UINT8 *Buffer, - ACPI_SIZE *SpaceUsed) -{ - ACPI_OBJECT *ExternalObject; - ACPI_STATUS Status; - ACPI_PKG_INFO Info; - - - ACPI_FUNCTION_TRACE (UtCopyIpackageToEpackage); - - - /* - * First package at head of the buffer - */ - ExternalObject = ACPI_CAST_PTR (ACPI_OBJECT, Buffer); - - /* - * Free space begins right after the first package - */ - Info.Length = ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); - Info.FreeSpace = Buffer + ACPI_ROUND_UP_TO_NATIVE_WORD ( - sizeof (ACPI_OBJECT)); - Info.ObjectSpace = 0; - Info.NumPackages = 1; - - ExternalObject->Type = ACPI_GET_OBJECT_TYPE (InternalObject); - ExternalObject->Package.Count = InternalObject->Package.Count; - ExternalObject->Package.Elements = ACPI_CAST_PTR (ACPI_OBJECT, - Info.FreeSpace); - - /* - * Leave room for an array of ACPI_OBJECTS in the buffer - * and move the free space past it - */ - Info.Length += (ACPI_SIZE) ExternalObject->Package.Count * - ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); - Info.FreeSpace += ExternalObject->Package.Count * - ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); - - Status = AcpiUtWalkPackageTree (InternalObject, ExternalObject, - AcpiUtCopyIelementToEelement, &Info); - - *SpaceUsed = Info.Length; - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCopyIobjectToEobject - * - * PARAMETERS: InternalObject - The internal object to be converted - * BufferPtr - Where the object is returned - * - * RETURN: Status - * - * DESCRIPTION: This function is called to build an API object to be returned to - * the caller. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtCopyIobjectToEobject ( - ACPI_OPERAND_OBJECT *InternalObject, - ACPI_BUFFER *RetBuffer) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (UtCopyIobjectToEobject); - - - if (ACPI_GET_OBJECT_TYPE (InternalObject) == ACPI_TYPE_PACKAGE) - { - /* - * Package object: Copy all subobjects (including - * nested packages) - */ - Status = AcpiUtCopyIpackageToEpackage (InternalObject, - RetBuffer->Pointer, &RetBuffer->Length); - } - else - { - /* - * Build a simple object (no nested objects) - */ - Status = AcpiUtCopyIsimpleToEsimple (InternalObject, - ACPI_CAST_PTR (ACPI_OBJECT, RetBuffer->Pointer), - ACPI_ADD_PTR (UINT8, RetBuffer->Pointer, - ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT))), - &RetBuffer->Length); - /* - * build simple does not include the object size in the length - * so we add it in here - */ - RetBuffer->Length += sizeof (ACPI_OBJECT); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCopyEsimpleToIsimple - * - * PARAMETERS: ExternalObject - The external object to be converted - * RetInternalObject - Where the internal object is returned - * - * RETURN: Status - * - * DESCRIPTION: This function copies an external object to an internal one. - * NOTE: Pointers can be copied, we don't need to copy data. - * (The pointers have to be valid in our address space no matter - * what we do with them!) - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiUtCopyEsimpleToIsimple ( - ACPI_OBJECT *ExternalObject, - ACPI_OPERAND_OBJECT **RetInternalObject) -{ - ACPI_OPERAND_OBJECT *InternalObject; - - - ACPI_FUNCTION_TRACE (UtCopyEsimpleToIsimple); - - - /* - * Simple types supported are: String, Buffer, Integer - */ - switch (ExternalObject->Type) - { - case ACPI_TYPE_STRING: - case ACPI_TYPE_BUFFER: - case ACPI_TYPE_INTEGER: - - InternalObject = AcpiUtCreateInternalObject ( - (UINT8) ExternalObject->Type); - if (!InternalObject) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - break; - - default: - /* All other types are not supported */ - - return_ACPI_STATUS (AE_SUPPORT); - } - - - /* Must COPY string and buffer contents */ - - switch (ExternalObject->Type) - { - case ACPI_TYPE_STRING: - - InternalObject->String.Pointer = - ACPI_ALLOCATE_ZEROED ((ACPI_SIZE) ExternalObject->String.Length + 1); - if (!InternalObject->String.Pointer) - { - goto ErrorExit; - } - - ACPI_MEMCPY (InternalObject->String.Pointer, - ExternalObject->String.Pointer, - ExternalObject->String.Length); - - InternalObject->String.Length = ExternalObject->String.Length; - break; - - - case ACPI_TYPE_BUFFER: - - InternalObject->Buffer.Pointer = - ACPI_ALLOCATE_ZEROED (ExternalObject->Buffer.Length); - if (!InternalObject->Buffer.Pointer) - { - goto ErrorExit; - } - - ACPI_MEMCPY (InternalObject->Buffer.Pointer, - ExternalObject->Buffer.Pointer, - ExternalObject->Buffer.Length); - - InternalObject->Buffer.Length = ExternalObject->Buffer.Length; - break; - - - case ACPI_TYPE_INTEGER: - - InternalObject->Integer.Value = ExternalObject->Integer.Value; - break; - - default: - /* Other types can't get here */ - break; - } - - *RetInternalObject = InternalObject; - return_ACPI_STATUS (AE_OK); - - -ErrorExit: - AcpiUtRemoveReference (InternalObject); - return_ACPI_STATUS (AE_NO_MEMORY); -} - - -#ifdef ACPI_FUTURE_IMPLEMENTATION -/* Code to convert packages that are parameters to control methods */ - -/******************************************************************************* - * - * FUNCTION: AcpiUtCopyEpackageToIpackage - * - * PARAMETERS: *InternalObject - Pointer to the object we are returning - * *Buffer - Where the object is returned - * *SpaceUsed - Where the length of the object is returned - * - * RETURN: Status - * - * DESCRIPTION: This function is called to place a package object in a user - * buffer. A package object by definition contains other objects. - * - * The buffer is assumed to have sufficient space for the object. - * The caller must have verified the buffer length needed using the - * AcpiUtGetObjectSize function before calling this function. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiUtCopyEpackageToIpackage ( - ACPI_OPERAND_OBJECT *InternalObject, - UINT8 *Buffer, - UINT32 *SpaceUsed) -{ - UINT8 *FreeSpace; - ACPI_OBJECT *ExternalObject; - UINT32 Length = 0; - UINT32 ThisIndex; - UINT32 ObjectSpace = 0; - ACPI_OPERAND_OBJECT *ThisInternalObj; - ACPI_OBJECT *ThisExternalObj; - - - ACPI_FUNCTION_TRACE (UtCopyEpackageToIpackage); - - - /* - * First package at head of the buffer - */ - ExternalObject = (ACPI_OBJECT *)Buffer; - - /* - * Free space begins right after the first package - */ - FreeSpace = Buffer + sizeof(ACPI_OBJECT); - - - ExternalObject->Type = ACPI_GET_OBJECT_TYPE (InternalObject); - ExternalObject->Package.Count = InternalObject->Package.Count; - ExternalObject->Package.Elements = (ACPI_OBJECT *)FreeSpace; - - /* - * Build an array of ACPI_OBJECTS in the buffer - * and move the free space past it - */ - FreeSpace += ExternalObject->Package.Count * sizeof(ACPI_OBJECT); - - - /* Call WalkPackage */ - -} - -#endif /* Future implementation */ - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCopyEobjectToIobject - * - * PARAMETERS: *InternalObject - The external object to be converted - * *BufferPtr - Where the internal object is returned - * - * RETURN: Status - the status of the call - * - * DESCRIPTION: Converts an external object to an internal object. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtCopyEobjectToIobject ( - ACPI_OBJECT *ExternalObject, - ACPI_OPERAND_OBJECT **InternalObject) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (UtCopyEobjectToIobject); - - - if (ExternalObject->Type == ACPI_TYPE_PACKAGE) - { - /* - * Packages as external input to control methods are not supported, - */ - ACPI_ERROR ((AE_INFO, - "Packages as parameters not implemented!")); - - return_ACPI_STATUS (AE_NOT_IMPLEMENTED); - } - - else - { - /* - * Build a simple object (no nested objects) - */ - Status = AcpiUtCopyEsimpleToIsimple (ExternalObject, InternalObject); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCopySimpleObject - * - * PARAMETERS: SourceDesc - The internal object to be copied - * DestDesc - New target object - * - * RETURN: Status - * - * DESCRIPTION: Simple copy of one internal object to another. Reference count - * of the destination object is preserved. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiUtCopySimpleObject ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT *DestDesc) -{ - UINT16 ReferenceCount; - ACPI_OPERAND_OBJECT *NextObject; - - - /* Save fields from destination that we don't want to overwrite */ - - ReferenceCount = DestDesc->Common.ReferenceCount; - NextObject = DestDesc->Common.NextObject; - - /* Copy the entire source object over the destination object*/ - - ACPI_MEMCPY ((char *) DestDesc, (char *) SourceDesc, - sizeof (ACPI_OPERAND_OBJECT)); - - /* Restore the saved fields */ - - DestDesc->Common.ReferenceCount = ReferenceCount; - DestDesc->Common.NextObject = NextObject; - - /* New object is not static, regardless of source */ - - DestDesc->Common.Flags &= ~AOPOBJ_STATIC_POINTER; - - /* Handle the objects with extra data */ - - switch (ACPI_GET_OBJECT_TYPE (DestDesc)) - { - case ACPI_TYPE_BUFFER: - /* - * Allocate and copy the actual buffer if and only if: - * 1) There is a valid buffer pointer - * 2) The buffer has a length > 0 - */ - if ((SourceDesc->Buffer.Pointer) && - (SourceDesc->Buffer.Length)) - { - DestDesc->Buffer.Pointer = - ACPI_ALLOCATE (SourceDesc->Buffer.Length); - if (!DestDesc->Buffer.Pointer) - { - return (AE_NO_MEMORY); - } - - /* Copy the actual buffer data */ - - ACPI_MEMCPY (DestDesc->Buffer.Pointer, - SourceDesc->Buffer.Pointer, - SourceDesc->Buffer.Length); - } - break; - - case ACPI_TYPE_STRING: - /* - * Allocate and copy the actual string if and only if: - * 1) There is a valid string pointer - * (Pointer to a NULL string is allowed) - */ - if (SourceDesc->String.Pointer) - { - DestDesc->String.Pointer = - ACPI_ALLOCATE ((ACPI_SIZE) SourceDesc->String.Length + 1); - if (!DestDesc->String.Pointer) - { - return (AE_NO_MEMORY); - } - - /* Copy the actual string data */ - - ACPI_MEMCPY (DestDesc->String.Pointer, SourceDesc->String.Pointer, - (ACPI_SIZE) SourceDesc->String.Length + 1); - } - break; - - case ACPI_TYPE_LOCAL_REFERENCE: - /* - * We copied the reference object, so we now must add a reference - * to the object pointed to by the reference - */ - AcpiUtAddReference (SourceDesc->Reference.Object); - break; - - case ACPI_TYPE_REGION: - /* - * We copied the Region Handler, so we now must add a reference - */ - if (DestDesc->Region.Handler) - { - AcpiUtAddReference (DestDesc->Region.Handler); - } - break; - - default: - /* Nothing to do for other simple objects */ - break; - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCopyIelementToIelement - * - * PARAMETERS: ACPI_PKG_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Copy one package element to another package element - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiUtCopyIelementToIelement ( - UINT8 ObjectType, - ACPI_OPERAND_OBJECT *SourceObject, - ACPI_GENERIC_STATE *State, - void *Context) -{ - ACPI_STATUS Status = AE_OK; - UINT32 ThisIndex; - ACPI_OPERAND_OBJECT **ThisTargetPtr; - ACPI_OPERAND_OBJECT *TargetObject; - - - ACPI_FUNCTION_ENTRY (); - - - ThisIndex = State->Pkg.Index; - ThisTargetPtr = (ACPI_OPERAND_OBJECT **) - &State->Pkg.DestObject->Package.Elements[ThisIndex]; - - switch (ObjectType) - { - case ACPI_COPY_TYPE_SIMPLE: - - /* A null source object indicates a (legal) null package element */ - - if (SourceObject) - { - /* - * This is a simple object, just copy it - */ - TargetObject = AcpiUtCreateInternalObject ( - ACPI_GET_OBJECT_TYPE (SourceObject)); - if (!TargetObject) - { - return (AE_NO_MEMORY); - } - - Status = AcpiUtCopySimpleObject (SourceObject, TargetObject); - if (ACPI_FAILURE (Status)) - { - goto ErrorExit; - } - - *ThisTargetPtr = TargetObject; - } - else - { - /* Pass through a null element */ - - *ThisTargetPtr = NULL; - } - break; - - - case ACPI_COPY_TYPE_PACKAGE: - - /* - * This object is a package - go down another nesting level - * Create and build the package object - */ - TargetObject = AcpiUtCreateInternalObject (ACPI_TYPE_PACKAGE); - if (!TargetObject) - { - return (AE_NO_MEMORY); - } - - TargetObject->Package.Count = SourceObject->Package.Count; - TargetObject->Common.Flags = SourceObject->Common.Flags; - - /* - * Create the object array - */ - TargetObject->Package.Elements = ACPI_ALLOCATE_ZEROED ( - ((ACPI_SIZE) SourceObject->Package.Count + 1) * sizeof (void *)); - if (!TargetObject->Package.Elements) - { - Status = AE_NO_MEMORY; - goto ErrorExit; - } - - /* - * Pass the new package object back to the package walk routine - */ - State->Pkg.ThisTargetObj = TargetObject; - - /* - * Store the object pointer in the parent package object - */ - *ThisTargetPtr = TargetObject; - break; - - - default: - return (AE_BAD_PARAMETER); - } - - return (Status); - -ErrorExit: - AcpiUtRemoveReference (TargetObject); - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCopyIpackageToIpackage - * - * PARAMETERS: *SourceObj - Pointer to the source package object - * *DestObj - Where the internal object is returned - * - * RETURN: Status - the status of the call - * - * DESCRIPTION: This function is called to copy an internal package object - * into another internal package object. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiUtCopyIpackageToIpackage ( - ACPI_OPERAND_OBJECT *SourceObj, - ACPI_OPERAND_OBJECT *DestObj, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE (UtCopyIpackageToIpackage); - - - DestObj->Common.Type = ACPI_GET_OBJECT_TYPE (SourceObj); - DestObj->Common.Flags = SourceObj->Common.Flags; - DestObj->Package.Count = SourceObj->Package.Count; - - /* - * Create the object array and walk the source package tree - */ - DestObj->Package.Elements = ACPI_ALLOCATE_ZEROED ( - ((ACPI_SIZE) SourceObj->Package.Count + 1) * - sizeof (void *)); - if (!DestObj->Package.Elements) - { - ACPI_ERROR ((AE_INFO, "Package allocation failure")); - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* - * Copy the package element-by-element by walking the package "tree". - * This handles nested packages of arbitrary depth. - */ - Status = AcpiUtWalkPackageTree (SourceObj, DestObj, - AcpiUtCopyIelementToIelement, WalkState); - if (ACPI_FAILURE (Status)) - { - /* On failure, delete the destination package object */ - - AcpiUtRemoveReference (DestObj); - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCopyIobjectToIobject - * - * PARAMETERS: WalkState - Current walk state - * SourceDesc - The internal object to be copied - * DestDesc - Where the copied object is returned - * - * RETURN: Status - * - * DESCRIPTION: Copy an internal object to a new internal object - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtCopyIobjectToIobject ( - ACPI_OPERAND_OBJECT *SourceDesc, - ACPI_OPERAND_OBJECT **DestDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE (UtCopyIobjectToIobject); - - - /* Create the top level object */ - - *DestDesc = AcpiUtCreateInternalObject (ACPI_GET_OBJECT_TYPE (SourceDesc)); - if (!*DestDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Copy the object and possible subobjects */ - - if (ACPI_GET_OBJECT_TYPE (SourceDesc) == ACPI_TYPE_PACKAGE) - { - Status = AcpiUtCopyIpackageToIpackage (SourceDesc, *DestDesc, - WalkState); - } - else - { - Status = AcpiUtCopySimpleObject (SourceDesc, *DestDesc); - } - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/utilities/utdebug.c b/sys/contrib/dev/acpica-unix-20061109/utilities/utdebug.c deleted file mode 100644 index 4cb018aed2..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/utilities/utdebug.c +++ /dev/null @@ -1,807 +0,0 @@ -/****************************************************************************** - * - * Module Name: utdebug - Debug print routines - * $Revision: 1.132 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __UTDEBUG_C__ - -#include "acpi.h" - -#define _COMPONENT ACPI_UTILITIES - ACPI_MODULE_NAME ("utdebug") - - -#ifdef ACPI_DEBUG_OUTPUT - -static UINT32 AcpiGbl_PrevThreadId = 0xFFFFFFFF; -static char *AcpiGbl_FnEntryStr = "----Entry"; -static char *AcpiGbl_FnExitStr = "----Exit-"; - -/* Local prototypes */ - -static const char * -AcpiUtTrimFunctionName ( - const char *FunctionName); - - -/******************************************************************************* - * - * FUNCTION: AcpiUtInitStackPtrTrace - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Save the current CPU stack pointer at subsystem startup - * - ******************************************************************************/ - -void -AcpiUtInitStackPtrTrace ( - void) -{ - UINT32 CurrentSp; - - - AcpiGbl_EntryStackPointer = ACPI_PTR_DIFF (&CurrentSp, NULL); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtTrackStackPtr - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Save the current CPU stack pointer - * - ******************************************************************************/ - -void -AcpiUtTrackStackPtr ( - void) -{ - ACPI_SIZE CurrentSp; - - - CurrentSp = ACPI_PTR_DIFF (&CurrentSp, NULL); - - if (CurrentSp < AcpiGbl_LowestStackPointer) - { - AcpiGbl_LowestStackPointer = CurrentSp; - } - - if (AcpiGbl_NestingLevel > AcpiGbl_DeepestNesting) - { - AcpiGbl_DeepestNesting = AcpiGbl_NestingLevel; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtTrimFunctionName - * - * PARAMETERS: FunctionName - Ascii string containing a procedure name - * - * RETURN: Updated pointer to the function name - * - * DESCRIPTION: Remove the "Acpi" prefix from the function name, if present. - * This allows compiler macros such as __FUNCTION__ to be used - * with no change to the debug output. - * - ******************************************************************************/ - -static const char * -AcpiUtTrimFunctionName ( - const char *FunctionName) -{ - - /* All Function names are longer than 4 chars, check is safe */ - - if (*(ACPI_CAST_PTR (UINT32, FunctionName)) == ACPI_PREFIX_MIXED) - { - /* This is the case where the original source has not been modified */ - - return (FunctionName + 4); - } - - if (*(ACPI_CAST_PTR (UINT32, FunctionName)) == ACPI_PREFIX_LOWER) - { - /* This is the case where the source has been 'linuxized' */ - - return (FunctionName + 5); - } - - return (FunctionName); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtDebugPrint - * - * PARAMETERS: RequestedDebugLevel - Requested debug print level - * LineNumber - Caller's line number (for error output) - * FunctionName - Caller's procedure name - * ModuleName - Caller's module name - * ComponentId - Caller's component ID - * Format - Printf format field - * ... - Optional printf arguments - * - * RETURN: None - * - * DESCRIPTION: Print error message with prefix consisting of the module name, - * line number, and component ID. - * - ******************************************************************************/ - -void ACPI_INTERNAL_VAR_XFACE -AcpiUtDebugPrint ( - UINT32 RequestedDebugLevel, - UINT32 LineNumber, - const char *FunctionName, - char *ModuleName, - UINT32 ComponentId, - char *Format, - ...) -{ - ACPI_THREAD_ID ThreadId; - va_list args; - - - /* - * Stay silent if the debug level or component ID is disabled - */ - if (!(RequestedDebugLevel & AcpiDbgLevel) || - !(ComponentId & AcpiDbgLayer)) - { - return; - } - - /* - * Thread tracking and context switch notification - */ - ThreadId = AcpiOsGetThreadId (); - if (ThreadId != AcpiGbl_PrevThreadId) - { - if (ACPI_LV_THREADS & AcpiDbgLevel) - { - AcpiOsPrintf ( - "\n**** Context Switch from TID %X to TID %X ****\n\n", - AcpiGbl_PrevThreadId, ThreadId); - } - - AcpiGbl_PrevThreadId = ThreadId; - } - - /* - * Display the module name, current line number, thread ID (if requested), - * current procedure nesting level, and the current procedure name - */ - AcpiOsPrintf ("%8s-%04ld ", ModuleName, LineNumber); - - if (ACPI_LV_THREADS & AcpiDbgLevel) - { - AcpiOsPrintf ("[%04lX] ", ThreadId); - } - - AcpiOsPrintf ("[%02ld] %-22.22s: ", - AcpiGbl_NestingLevel, AcpiUtTrimFunctionName (FunctionName)); - - va_start (args, Format); - AcpiOsVprintf (Format, args); -} - -ACPI_EXPORT_SYMBOL (AcpiUtDebugPrint) - - -/******************************************************************************* - * - * FUNCTION: AcpiUtDebugPrintRaw - * - * PARAMETERS: RequestedDebugLevel - Requested debug print level - * LineNumber - Caller's line number - * FunctionName - Caller's procedure name - * ModuleName - Caller's module name - * ComponentId - Caller's component ID - * Format - Printf format field - * ... - Optional printf arguments - * - * RETURN: None - * - * DESCRIPTION: Print message with no headers. Has same interface as - * DebugPrint so that the same macros can be used. - * - ******************************************************************************/ - -void ACPI_INTERNAL_VAR_XFACE -AcpiUtDebugPrintRaw ( - UINT32 RequestedDebugLevel, - UINT32 LineNumber, - const char *FunctionName, - char *ModuleName, - UINT32 ComponentId, - char *Format, - ...) -{ - va_list args; - - - if (!(RequestedDebugLevel & AcpiDbgLevel) || - !(ComponentId & AcpiDbgLayer)) - { - return; - } - - va_start (args, Format); - AcpiOsVprintf (Format, args); -} - -ACPI_EXPORT_SYMBOL (AcpiUtDebugPrintRaw) - - -/******************************************************************************* - * - * FUNCTION: AcpiUtTrace - * - * PARAMETERS: LineNumber - Caller's line number - * FunctionName - Caller's procedure name - * ModuleName - Caller's module name - * ComponentId - Caller's component ID - * - * RETURN: None - * - * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is - * set in DebugLevel - * - ******************************************************************************/ - -void -AcpiUtTrace ( - UINT32 LineNumber, - const char *FunctionName, - char *ModuleName, - UINT32 ComponentId) -{ - - AcpiGbl_NestingLevel++; - AcpiUtTrackStackPtr (); - - AcpiUtDebugPrint (ACPI_LV_FUNCTIONS, - LineNumber, FunctionName, ModuleName, ComponentId, - "%s\n", AcpiGbl_FnEntryStr); -} - -ACPI_EXPORT_SYMBOL (AcpiUtTrace) - - -/******************************************************************************* - * - * FUNCTION: AcpiUtTracePtr - * - * PARAMETERS: LineNumber - Caller's line number - * FunctionName - Caller's procedure name - * ModuleName - Caller's module name - * ComponentId - Caller's component ID - * Pointer - Pointer to display - * - * RETURN: None - * - * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is - * set in DebugLevel - * - ******************************************************************************/ - -void -AcpiUtTracePtr ( - UINT32 LineNumber, - const char *FunctionName, - char *ModuleName, - UINT32 ComponentId, - void *Pointer) -{ - AcpiGbl_NestingLevel++; - AcpiUtTrackStackPtr (); - - AcpiUtDebugPrint (ACPI_LV_FUNCTIONS, - LineNumber, FunctionName, ModuleName, ComponentId, - "%s %p\n", AcpiGbl_FnEntryStr, Pointer); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtTraceStr - * - * PARAMETERS: LineNumber - Caller's line number - * FunctionName - Caller's procedure name - * ModuleName - Caller's module name - * ComponentId - Caller's component ID - * String - Additional string to display - * - * RETURN: None - * - * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is - * set in DebugLevel - * - ******************************************************************************/ - -void -AcpiUtTraceStr ( - UINT32 LineNumber, - const char *FunctionName, - char *ModuleName, - UINT32 ComponentId, - char *String) -{ - - AcpiGbl_NestingLevel++; - AcpiUtTrackStackPtr (); - - AcpiUtDebugPrint (ACPI_LV_FUNCTIONS, - LineNumber, FunctionName, ModuleName, ComponentId, - "%s %s\n", AcpiGbl_FnEntryStr, String); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtTraceU32 - * - * PARAMETERS: LineNumber - Caller's line number - * FunctionName - Caller's procedure name - * ModuleName - Caller's module name - * ComponentId - Caller's component ID - * Integer - Integer to display - * - * RETURN: None - * - * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is - * set in DebugLevel - * - ******************************************************************************/ - -void -AcpiUtTraceU32 ( - UINT32 LineNumber, - const char *FunctionName, - char *ModuleName, - UINT32 ComponentId, - UINT32 Integer) -{ - - AcpiGbl_NestingLevel++; - AcpiUtTrackStackPtr (); - - AcpiUtDebugPrint (ACPI_LV_FUNCTIONS, - LineNumber, FunctionName, ModuleName, ComponentId, - "%s %08X\n", AcpiGbl_FnEntryStr, Integer); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtExit - * - * PARAMETERS: LineNumber - Caller's line number - * FunctionName - Caller's procedure name - * ModuleName - Caller's module name - * ComponentId - Caller's component ID - * - * RETURN: None - * - * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is - * set in DebugLevel - * - ******************************************************************************/ - -void -AcpiUtExit ( - UINT32 LineNumber, - const char *FunctionName, - char *ModuleName, - UINT32 ComponentId) -{ - - AcpiUtDebugPrint (ACPI_LV_FUNCTIONS, - LineNumber, FunctionName, ModuleName, ComponentId, - "%s\n", AcpiGbl_FnExitStr); - - AcpiGbl_NestingLevel--; -} - -ACPI_EXPORT_SYMBOL (AcpiUtExit) - - -/******************************************************************************* - * - * FUNCTION: AcpiUtStatusExit - * - * PARAMETERS: LineNumber - Caller's line number - * FunctionName - Caller's procedure name - * ModuleName - Caller's module name - * ComponentId - Caller's component ID - * Status - Exit status code - * - * RETURN: None - * - * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is - * set in DebugLevel. Prints exit status also. - * - ******************************************************************************/ - -void -AcpiUtStatusExit ( - UINT32 LineNumber, - const char *FunctionName, - char *ModuleName, - UINT32 ComponentId, - ACPI_STATUS Status) -{ - - if (ACPI_SUCCESS (Status)) - { - AcpiUtDebugPrint (ACPI_LV_FUNCTIONS, - LineNumber, FunctionName, ModuleName, ComponentId, - "%s %s\n", AcpiGbl_FnExitStr, - AcpiFormatException (Status)); - } - else - { - AcpiUtDebugPrint (ACPI_LV_FUNCTIONS, - LineNumber, FunctionName, ModuleName, ComponentId, - "%s ****Exception****: %s\n", AcpiGbl_FnExitStr, - AcpiFormatException (Status)); - } - - AcpiGbl_NestingLevel--; -} - -ACPI_EXPORT_SYMBOL (AcpiUtStatusExit) - - -/******************************************************************************* - * - * FUNCTION: AcpiUtValueExit - * - * PARAMETERS: LineNumber - Caller's line number - * FunctionName - Caller's procedure name - * ModuleName - Caller's module name - * ComponentId - Caller's component ID - * Value - Value to be printed with exit msg - * - * RETURN: None - * - * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is - * set in DebugLevel. Prints exit value also. - * - ******************************************************************************/ - -void -AcpiUtValueExit ( - UINT32 LineNumber, - const char *FunctionName, - char *ModuleName, - UINT32 ComponentId, - ACPI_INTEGER Value) -{ - - AcpiUtDebugPrint (ACPI_LV_FUNCTIONS, - LineNumber, FunctionName, ModuleName, ComponentId, - "%s %8.8X%8.8X\n", AcpiGbl_FnExitStr, - ACPI_FORMAT_UINT64 (Value)); - - AcpiGbl_NestingLevel--; -} - -ACPI_EXPORT_SYMBOL (AcpiUtValueExit) - - -/******************************************************************************* - * - * FUNCTION: AcpiUtPtrExit - * - * PARAMETERS: LineNumber - Caller's line number - * FunctionName - Caller's procedure name - * ModuleName - Caller's module name - * ComponentId - Caller's component ID - * Ptr - Pointer to display - * - * RETURN: None - * - * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is - * set in DebugLevel. Prints exit value also. - * - ******************************************************************************/ - -void -AcpiUtPtrExit ( - UINT32 LineNumber, - const char *FunctionName, - char *ModuleName, - UINT32 ComponentId, - UINT8 *Ptr) -{ - - AcpiUtDebugPrint (ACPI_LV_FUNCTIONS, - LineNumber, FunctionName, ModuleName, ComponentId, - "%s %p\n", AcpiGbl_FnExitStr, Ptr); - - AcpiGbl_NestingLevel--; -} - -#endif - - -/******************************************************************************* - * - * FUNCTION: AcpiUtDumpBuffer - * - * PARAMETERS: Buffer - Buffer to dump - * Count - Amount to dump, in bytes - * Display - BYTE, WORD, DWORD, or QWORD display - * ComponentID - Caller's component ID - * - * RETURN: None - * - * DESCRIPTION: Generic dump buffer in both hex and ascii. - * - ******************************************************************************/ - -void -AcpiUtDumpBuffer2 ( - UINT8 *Buffer, - UINT32 Count, - UINT32 Display) -{ - ACPI_NATIVE_UINT i = 0; - ACPI_NATIVE_UINT j; - UINT32 Temp32; - UINT8 BufChar; - - - if ((Count < 4) || (Count & 0x01)) - { - Display = DB_BYTE_DISPLAY; - } - - /* Nasty little dump buffer routine! */ - - while (i < Count) - { - /* Print current offset */ - - AcpiOsPrintf ("%6.4X: ", (UINT32) i); - - /* Print 16 hex chars */ - - for (j = 0; j < 16;) - { - if (i + j >= Count) - { - /* Dump fill spaces */ - - AcpiOsPrintf ("%*s", ((Display * 2) + 1), " "); - j += (ACPI_NATIVE_UINT) Display; - continue; - } - - switch (Display) - { - case DB_BYTE_DISPLAY: - default: /* Default is BYTE display */ - - AcpiOsPrintf ("%02X ", Buffer[i + j]); - break; - - - case DB_WORD_DISPLAY: - - ACPI_MOVE_16_TO_32 (&Temp32, &Buffer[i + j]); - AcpiOsPrintf ("%04X ", Temp32); - break; - - - case DB_DWORD_DISPLAY: - - ACPI_MOVE_32_TO_32 (&Temp32, &Buffer[i + j]); - AcpiOsPrintf ("%08X ", Temp32); - break; - - - case DB_QWORD_DISPLAY: - - ACPI_MOVE_32_TO_32 (&Temp32, &Buffer[i + j]); - AcpiOsPrintf ("%08X", Temp32); - - ACPI_MOVE_32_TO_32 (&Temp32, &Buffer[i + j + 4]); - AcpiOsPrintf ("%08X ", Temp32); - break; - } - - j += (ACPI_NATIVE_UINT) Display; - } - - /* - * Print the ASCII equivalent characters but watch out for the bad - * unprintable ones (printable chars are 0x20 through 0x7E) - */ - AcpiOsPrintf (" "); - for (j = 0; j < 16; j++) - { - if (i + j >= Count) - { - AcpiOsPrintf ("\n"); - return; - } - - BufChar = Buffer[i + j]; - if (ACPI_IS_PRINT (BufChar)) - { - AcpiOsPrintf ("%c", BufChar); - } - else - { - AcpiOsPrintf ("."); - } - } - - /* Done with that line. */ - - AcpiOsPrintf ("\n"); - i += 16; - } - - return; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtDumpBuffer - * - * PARAMETERS: Buffer - Buffer to dump - * Count - Amount to dump, in bytes - * Display - BYTE, WORD, DWORD, or QWORD display - * ComponentID - Caller's component ID - * - * RETURN: None - * - * DESCRIPTION: Generic dump buffer in both hex and ascii. - * - ******************************************************************************/ - -void -AcpiUtDumpBuffer ( - UINT8 *Buffer, - UINT32 Count, - UINT32 Display, - UINT32 ComponentId) -{ - - /* Only dump the buffer if tracing is enabled */ - - if (!((ACPI_LV_TABLES & AcpiDbgLevel) && - (ComponentId & AcpiDbgLayer))) - { - return; - } - - AcpiUtDumpBuffer2 (Buffer, Count, Display); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/utilities/utdelete.c b/sys/contrib/dev/acpica-unix-20061109/utilities/utdelete.c deleted file mode 100644 index c85ea669be..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/utilities/utdelete.c +++ /dev/null @@ -1,775 +0,0 @@ -/******************************************************************************* - * - * Module Name: utdelete - object deletion and reference count utilities - * $Revision: 1.121 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __UTDELETE_C__ - -#include "acpi.h" -#include "acinterp.h" -#include "acnamesp.h" -#include "acevents.h" -#include "amlcode.h" - -#define _COMPONENT ACPI_UTILITIES - ACPI_MODULE_NAME ("utdelete") - -/* Local prototypes */ - -static void -AcpiUtDeleteInternalObj ( - ACPI_OPERAND_OBJECT *Object); - -static void -AcpiUtUpdateRefCount ( - ACPI_OPERAND_OBJECT *Object, - UINT32 Action); - - -/******************************************************************************* - * - * FUNCTION: AcpiUtDeleteInternalObj - * - * PARAMETERS: Object - Object to be deleted - * - * RETURN: None - * - * DESCRIPTION: Low level object deletion, after reference counts have been - * updated (All reference counts, including sub-objects!) - * - ******************************************************************************/ - -static void -AcpiUtDeleteInternalObj ( - ACPI_OPERAND_OBJECT *Object) -{ - void *ObjPointer = NULL; - ACPI_OPERAND_OBJECT *HandlerDesc; - ACPI_OPERAND_OBJECT *SecondDesc; - ACPI_OPERAND_OBJECT *NextDesc; - - - ACPI_FUNCTION_TRACE_PTR (UtDeleteInternalObj, Object); - - - if (!Object) - { - return_VOID; - } - - /* - * Must delete or free any pointers within the object that are not - * actual ACPI objects (for example, a raw buffer pointer). - */ - switch (ACPI_GET_OBJECT_TYPE (Object)) - { - case ACPI_TYPE_STRING: - - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "**** String %p, ptr %p\n", - Object, Object->String.Pointer)); - - /* Free the actual string buffer */ - - if (!(Object->Common.Flags & AOPOBJ_STATIC_POINTER)) - { - /* But only if it is NOT a pointer into an ACPI table */ - - ObjPointer = Object->String.Pointer; - } - break; - - - case ACPI_TYPE_BUFFER: - - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "**** Buffer %p, ptr %p\n", - Object, Object->Buffer.Pointer)); - - /* Free the actual buffer */ - - if (!(Object->Common.Flags & AOPOBJ_STATIC_POINTER)) - { - /* But only if it is NOT a pointer into an ACPI table */ - - ObjPointer = Object->Buffer.Pointer; - } - break; - - - case ACPI_TYPE_PACKAGE: - - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, " **** Package of count %X\n", - Object->Package.Count)); - - /* - * Elements of the package are not handled here, they are deleted - * separately - */ - - /* Free the (variable length) element pointer array */ - - ObjPointer = Object->Package.Elements; - break; - - - case ACPI_TYPE_DEVICE: - - if (Object->Device.GpeBlock) - { - (void) AcpiEvDeleteGpeBlock (Object->Device.GpeBlock); - } - - /* Walk the handler list for this device */ - - HandlerDesc = Object->Device.Handler; - while (HandlerDesc) - { - NextDesc = HandlerDesc->AddressSpace.Next; - AcpiUtRemoveReference (HandlerDesc); - HandlerDesc = NextDesc; - } - break; - - - case ACPI_TYPE_MUTEX: - - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, - "***** Mutex %p, OS Mutex %p\n", - Object, Object->Mutex.OsMutex)); - - if (Object->Mutex.OsMutex == AcpiGbl_GlobalLockMutex) - { - /* Global Lock has extra semaphore */ - - (void) AcpiOsDeleteSemaphore (AcpiGbl_GlobalLockSemaphore); - AcpiGbl_GlobalLockSemaphore = NULL; - - AcpiOsDeleteMutex (Object->Mutex.OsMutex); - AcpiGbl_GlobalLockMutex = NULL; - } - else - { - AcpiExUnlinkMutex (Object); - AcpiOsDeleteMutex (Object->Mutex.OsMutex); - } - break; - - - case ACPI_TYPE_EVENT: - - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, - "***** Event %p, OS Semaphore %p\n", - Object, Object->Event.OsSemaphore)); - - (void) AcpiOsDeleteSemaphore (Object->Event.OsSemaphore); - Object->Event.OsSemaphore = NULL; - break; - - - case ACPI_TYPE_METHOD: - - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, - "***** Method %p\n", Object)); - - /* Delete the method mutex if it exists */ - - if (Object->Method.Mutex) - { - AcpiOsDeleteMutex (Object->Method.Mutex->Mutex.OsMutex); - AcpiUtDeleteObjectDesc (Object->Method.Mutex); - Object->Method.Mutex = NULL; - } - break; - - - case ACPI_TYPE_REGION: - - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, - "***** Region %p\n", Object)); - - SecondDesc = AcpiNsGetSecondaryObject (Object); - if (SecondDesc) - { - /* - * Free the RegionContext if and only if the handler is one of the - * default handlers -- and therefore, we created the context object - * locally, it was not created by an external caller. - */ - HandlerDesc = Object->Region.Handler; - if (HandlerDesc) - { - if (HandlerDesc->AddressSpace.HandlerFlags & - ACPI_ADDR_HANDLER_DEFAULT_INSTALLED) - { - /* Deactivate region and free region context */ - - if (HandlerDesc->AddressSpace.Setup) - { - (void) HandlerDesc->AddressSpace.Setup (Object, - ACPI_REGION_DEACTIVATE, - HandlerDesc->AddressSpace.Context, - &SecondDesc->Extra.RegionContext); - } - } - - AcpiUtRemoveReference (HandlerDesc); - } - - /* Now we can free the Extra object */ - - AcpiUtDeleteObjectDesc (SecondDesc); - } - break; - - - case ACPI_TYPE_BUFFER_FIELD: - - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, - "***** Buffer Field %p\n", Object)); - - SecondDesc = AcpiNsGetSecondaryObject (Object); - if (SecondDesc) - { - AcpiUtDeleteObjectDesc (SecondDesc); - } - break; - - - default: - break; - } - - /* Free any allocated memory (pointer within the object) found above */ - - if (ObjPointer) - { - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Deleting Object Subptr %p\n", - ObjPointer)); - ACPI_FREE (ObjPointer); - } - - /* Now the object can be safely deleted */ - - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Deleting Object %p [%s]\n", - Object, AcpiUtGetObjectTypeName (Object))); - - AcpiUtDeleteObjectDesc (Object); - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtDeleteInternalObjectList - * - * PARAMETERS: ObjList - Pointer to the list to be deleted - * - * RETURN: None - * - * DESCRIPTION: This function deletes an internal object list, including both - * simple objects and package objects - * - ******************************************************************************/ - -void -AcpiUtDeleteInternalObjectList ( - ACPI_OPERAND_OBJECT **ObjList) -{ - ACPI_OPERAND_OBJECT **InternalObj; - - - ACPI_FUNCTION_TRACE (UtDeleteInternalObjectList); - - - /* Walk the null-terminated internal list */ - - for (InternalObj = ObjList; *InternalObj; InternalObj++) - { - AcpiUtRemoveReference (*InternalObj); - } - - /* Free the combined parameter pointer list and object array */ - - ACPI_FREE (ObjList); - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtUpdateRefCount - * - * PARAMETERS: Object - Object whose ref count is to be updated - * Action - What to do - * - * RETURN: New ref count - * - * DESCRIPTION: Modify the ref count and return it. - * - ******************************************************************************/ - -static void -AcpiUtUpdateRefCount ( - ACPI_OPERAND_OBJECT *Object, - UINT32 Action) -{ - UINT16 Count; - UINT16 NewCount; - - - ACPI_FUNCTION_NAME (UtUpdateRefCount); - - - if (!Object) - { - return; - } - - Count = Object->Common.ReferenceCount; - NewCount = Count; - - /* - * Perform the reference count action (increment, decrement, force delete) - */ - switch (Action) - { - case REF_INCREMENT: - - NewCount++; - Object->Common.ReferenceCount = NewCount; - - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, - "Obj %p Refs=%X, [Incremented]\n", - Object, NewCount)); - break; - - case REF_DECREMENT: - - if (Count < 1) - { - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, - "Obj %p Refs=%X, can't decrement! (Set to 0)\n", - Object, NewCount)); - - NewCount = 0; - } - else - { - NewCount--; - - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, - "Obj %p Refs=%X, [Decremented]\n", - Object, NewCount)); - } - - if (ACPI_GET_OBJECT_TYPE (Object) == ACPI_TYPE_METHOD) - { - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, - "Method Obj %p Refs=%X, [Decremented]\n", Object, NewCount)); - } - - Object->Common.ReferenceCount = NewCount; - if (NewCount == 0) - { - AcpiUtDeleteInternalObj (Object); - } - break; - - case REF_FORCE_DELETE: - - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, - "Obj %p Refs=%X, Force delete! (Set to 0)\n", Object, Count)); - - NewCount = 0; - Object->Common.ReferenceCount = NewCount; - AcpiUtDeleteInternalObj (Object); - break; - - default: - - ACPI_ERROR ((AE_INFO, "Unknown action (%X)", Action)); - break; - } - - /* - * Sanity check the reference count, for debug purposes only. - * (A deleted object will have a huge reference count) - */ - if (Count > ACPI_MAX_REFERENCE_COUNT) - { - ACPI_WARNING ((AE_INFO, - "Large Reference Count (%X) in object %p", Count, Object)); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtUpdateObjectReference - * - * PARAMETERS: Object - Increment ref count for this object - * and all sub-objects - * Action - Either REF_INCREMENT or REF_DECREMENT or - * REF_FORCE_DELETE - * - * RETURN: Status - * - * DESCRIPTION: Increment the object reference count - * - * Object references are incremented when: - * 1) An object is attached to a Node (namespace object) - * 2) An object is copied (all subobjects must be incremented) - * - * Object references are decremented when: - * 1) An object is detached from an Node - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtUpdateObjectReference ( - ACPI_OPERAND_OBJECT *Object, - UINT16 Action) -{ - ACPI_STATUS Status = AE_OK; - ACPI_GENERIC_STATE *StateList = NULL; - ACPI_OPERAND_OBJECT *NextObject = NULL; - ACPI_GENERIC_STATE *State; - ACPI_NATIVE_UINT i; - - - ACPI_FUNCTION_TRACE_PTR (UtUpdateObjectReference, Object); - - - while (Object) - { - /* Make sure that this isn't a namespace handle */ - - if (ACPI_GET_DESCRIPTOR_TYPE (Object) == ACPI_DESC_TYPE_NAMED) - { - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, - "Object %p is NS handle\n", Object)); - return_ACPI_STATUS (AE_OK); - } - - /* - * All sub-objects must have their reference count incremented also. - * Different object types have different subobjects. - */ - switch (ACPI_GET_OBJECT_TYPE (Object)) - { - case ACPI_TYPE_DEVICE: - case ACPI_TYPE_PROCESSOR: - case ACPI_TYPE_POWER: - case ACPI_TYPE_THERMAL: - - /* Update the notify objects for these types (if present) */ - - AcpiUtUpdateRefCount (Object->CommonNotify.SystemNotify, Action); - AcpiUtUpdateRefCount (Object->CommonNotify.DeviceNotify, Action); - break; - - case ACPI_TYPE_PACKAGE: - /* - * We must update all the sub-objects of the package, - * each of whom may have their own sub-objects. - */ - for (i = 0; i < Object->Package.Count; i++) - { - /* - * Push each element onto the stack for later processing. - * Note: There can be null elements within the package, - * these are simply ignored - */ - Status = AcpiUtCreateUpdateStateAndPush ( - Object->Package.Elements[i], Action, &StateList); - if (ACPI_FAILURE (Status)) - { - goto ErrorExit; - } - } - break; - - case ACPI_TYPE_BUFFER_FIELD: - - NextObject = Object->BufferField.BufferObj; - break; - - case ACPI_TYPE_LOCAL_REGION_FIELD: - - NextObject = Object->Field.RegionObj; - break; - - case ACPI_TYPE_LOCAL_BANK_FIELD: - - NextObject = Object->BankField.BankObj; - Status = AcpiUtCreateUpdateStateAndPush ( - Object->BankField.RegionObj, Action, &StateList); - if (ACPI_FAILURE (Status)) - { - goto ErrorExit; - } - break; - - case ACPI_TYPE_LOCAL_INDEX_FIELD: - - NextObject = Object->IndexField.IndexObj; - Status = AcpiUtCreateUpdateStateAndPush ( - Object->IndexField.DataObj, Action, &StateList); - if (ACPI_FAILURE (Status)) - { - goto ErrorExit; - } - break; - - case ACPI_TYPE_LOCAL_REFERENCE: - /* - * The target of an Index (a package, string, or buffer) must track - * changes to the ref count of the index. - */ - if (Object->Reference.Opcode == AML_INDEX_OP) - { - NextObject = Object->Reference.Object; - } - break; - - case ACPI_TYPE_REGION: - default: - break; /* No subobjects for all other types */ - } - - /* - * Now we can update the count in the main object. This can only - * happen after we update the sub-objects in case this causes the - * main object to be deleted. - */ - AcpiUtUpdateRefCount (Object, Action); - Object = NULL; - - /* Move on to the next object to be updated */ - - if (NextObject) - { - Object = NextObject; - NextObject = NULL; - } - else if (StateList) - { - State = AcpiUtPopGenericState (&StateList); - Object = State->Update.Object; - AcpiUtDeleteGenericState (State); - } - } - - return_ACPI_STATUS (AE_OK); - -ErrorExit: - - ACPI_EXCEPTION ((AE_INFO, Status, - "Could not update object reference count")); - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtAddReference - * - * PARAMETERS: Object - Object whose reference count is to be - * incremented - * - * RETURN: None - * - * DESCRIPTION: Add one reference to an ACPI object - * - ******************************************************************************/ - -void -AcpiUtAddReference ( - ACPI_OPERAND_OBJECT *Object) -{ - - ACPI_FUNCTION_TRACE_PTR (UtAddReference, Object); - - - /* Ensure that we have a valid object */ - - if (!AcpiUtValidInternalObject (Object)) - { - return_VOID; - } - - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, - "Obj %p Current Refs=%X [To Be Incremented]\n", - Object, Object->Common.ReferenceCount)); - - /* Increment the reference count */ - - (void) AcpiUtUpdateObjectReference (Object, REF_INCREMENT); - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtRemoveReference - * - * PARAMETERS: Object - Object whose ref count will be decremented - * - * RETURN: None - * - * DESCRIPTION: Decrement the reference count of an ACPI internal object - * - ******************************************************************************/ - -void -AcpiUtRemoveReference ( - ACPI_OPERAND_OBJECT *Object) -{ - - ACPI_FUNCTION_TRACE_PTR (UtRemoveReference, Object); - - - /* - * Allow a NULL pointer to be passed in, just ignore it. This saves - * each caller from having to check. Also, ignore NS nodes. - * - */ - if (!Object || - (ACPI_GET_DESCRIPTOR_TYPE (Object) == ACPI_DESC_TYPE_NAMED)) - - { - return_VOID; - } - - /* Ensure that we have a valid object */ - - if (!AcpiUtValidInternalObject (Object)) - { - return_VOID; - } - - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, - "Obj %p Current Refs=%X [To Be Decremented]\n", - Object, Object->Common.ReferenceCount)); - - /* - * Decrement the reference count, and only actually delete the object - * if the reference count becomes 0. (Must also decrement the ref count - * of all subobjects!) - */ - (void) AcpiUtUpdateObjectReference (Object, REF_DECREMENT); - return_VOID; -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/utilities/uteval.c b/sys/contrib/dev/acpica-unix-20061109/utilities/uteval.c deleted file mode 100644 index ab747d452f..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/utilities/uteval.c +++ /dev/null @@ -1,880 +0,0 @@ -/****************************************************************************** - * - * Module Name: uteval - Object evaluation - * $Revision: 1.70 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __UTEVAL_C__ - -#include "acpi.h" -#include "acnamesp.h" -#include "acinterp.h" - - -#define _COMPONENT ACPI_UTILITIES - ACPI_MODULE_NAME ("uteval") - -/* Local prototypes */ - -static void -AcpiUtCopyIdString ( - char *Destination, - char *Source, - ACPI_SIZE MaxLength); - -static ACPI_STATUS -AcpiUtTranslateOneCid ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_COMPATIBLE_ID *OneCid); - - -/* - * Strings supported by the _OSI predefined (internal) method. - */ -static const char *AcpiInterfacesSupported[] = -{ - /* Operating System Vendor Strings */ - - "Linux", - "Windows 2000", - "Windows 2001", - "Windows 2001 SP0", - "Windows 2001 SP1", - "Windows 2001 SP2", - "Windows 2001 SP3", - "Windows 2001 SP4", - "Windows 2001.1", - "Windows 2001.1 SP1", /* Added 03/2006 */ - "Windows 2006", /* Added 03/2006 */ - - /* Feature Group Strings */ - - "Extended Address Space Descriptor" - - /* - * All "optional" feature group strings (features that are implemented - * by the host) should be implemented in the host version of - * AcpiOsValidateInterface and should not be added here. - */ -}; - - -/******************************************************************************* - * - * FUNCTION: AcpiUtOsiImplementation - * - * PARAMETERS: WalkState - Current walk state - * - * RETURN: Status - * - * DESCRIPTION: Implementation of the _OSI predefined control method - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtOsiImplementation ( - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *StringDesc; - ACPI_OPERAND_OBJECT *ReturnDesc; - ACPI_NATIVE_UINT i; - - - ACPI_FUNCTION_TRACE (UtOsiImplementation); - - - /* Validate the string input argument */ - - StringDesc = WalkState->Arguments[0].Object; - if (!StringDesc || (StringDesc->Common.Type != ACPI_TYPE_STRING)) - { - return_ACPI_STATUS (AE_TYPE); - } - - /* Create a return object */ - - ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); - if (!ReturnDesc) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Default return value is SUPPORTED */ - - ReturnDesc->Integer.Value = ACPI_UINT32_MAX; - WalkState->ReturnDesc = ReturnDesc; - - /* Compare input string to static table of supported interfaces */ - - for (i = 0; i < ACPI_ARRAY_LENGTH (AcpiInterfacesSupported); i++) - { - if (!ACPI_STRCMP (StringDesc->String.Pointer, AcpiInterfacesSupported[i])) - { - /* The interface is supported */ - - return_ACPI_STATUS (AE_CTRL_TERMINATE); - } - } - - /* - * Did not match the string in the static table, call the host OSL to - * check for a match with one of the optional strings (such as - * "Module Device", "3.0 Thermal Model", etc.) - */ - Status = AcpiOsValidateInterface (StringDesc->String.Pointer); - if (ACPI_SUCCESS (Status)) - { - /* The interface is supported */ - - return_ACPI_STATUS (AE_CTRL_TERMINATE); - } - - /* The interface is not supported */ - - ReturnDesc->Integer.Value = 0; - return_ACPI_STATUS (AE_CTRL_TERMINATE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtEvaluateObject - * - * PARAMETERS: PrefixNode - Starting node - * Path - Path to object from starting node - * ExpectedReturnTypes - Bitmap of allowed return types - * ReturnDesc - Where a return value is stored - * - * RETURN: Status - * - * DESCRIPTION: Evaluates a namespace object and verifies the type of the - * return object. Common code that simplifies accessing objects - * that have required return objects of fixed types. - * - * NOTE: Internal function, no parameter validation - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtEvaluateObject ( - ACPI_NAMESPACE_NODE *PrefixNode, - char *Path, - UINT32 ExpectedReturnBtypes, - ACPI_OPERAND_OBJECT **ReturnDesc) -{ - ACPI_EVALUATE_INFO *Info; - ACPI_STATUS Status; - UINT32 ReturnBtype; - - - ACPI_FUNCTION_TRACE (UtEvaluateObject); - - - /* Allocate the evaluation information block */ - - Info = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EVALUATE_INFO)); - if (!Info) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - Info->PrefixNode = PrefixNode; - Info->Pathname = Path; - Info->ParameterType = ACPI_PARAM_ARGS; - - /* Evaluate the object/method */ - - Status = AcpiNsEvaluate (Info); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_NOT_FOUND) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s.%s] was not found\n", - AcpiUtGetNodeName (PrefixNode), Path)); - } - else - { - ACPI_ERROR_METHOD ("Method execution failed", - PrefixNode, Path, Status); - } - - goto Cleanup; - } - - /* Did we get a return object? */ - - if (!Info->ReturnObject) - { - if (ExpectedReturnBtypes) - { - ACPI_ERROR_METHOD ("No object was returned from", - PrefixNode, Path, AE_NOT_EXIST); - - Status = AE_NOT_EXIST; - } - - goto Cleanup; - } - - /* Map the return object type to the bitmapped type */ - - switch (ACPI_GET_OBJECT_TYPE (Info->ReturnObject)) - { - case ACPI_TYPE_INTEGER: - ReturnBtype = ACPI_BTYPE_INTEGER; - break; - - case ACPI_TYPE_BUFFER: - ReturnBtype = ACPI_BTYPE_BUFFER; - break; - - case ACPI_TYPE_STRING: - ReturnBtype = ACPI_BTYPE_STRING; - break; - - case ACPI_TYPE_PACKAGE: - ReturnBtype = ACPI_BTYPE_PACKAGE; - break; - - default: - ReturnBtype = 0; - break; - } - - if ((AcpiGbl_EnableInterpreterSlack) && - (!ExpectedReturnBtypes)) - { - /* - * We received a return object, but one was not expected. This can - * happen frequently if the "implicit return" feature is enabled. - * Just delete the return object and return AE_OK. - */ - AcpiUtRemoveReference (Info->ReturnObject); - goto Cleanup; - } - - /* Is the return object one of the expected types? */ - - if (!(ExpectedReturnBtypes & ReturnBtype)) - { - ACPI_ERROR_METHOD ("Return object type is incorrect", - PrefixNode, Path, AE_TYPE); - - ACPI_ERROR ((AE_INFO, - "Type returned from %s was incorrect: %s, expected Btypes: %X", - Path, AcpiUtGetObjectTypeName (Info->ReturnObject), - ExpectedReturnBtypes)); - - /* On error exit, we must delete the return object */ - - AcpiUtRemoveReference (Info->ReturnObject); - Status = AE_TYPE; - goto Cleanup; - } - - /* Object type is OK, return it */ - - *ReturnDesc = Info->ReturnObject; - -Cleanup: - ACPI_FREE (Info); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtEvaluateNumericObject - * - * PARAMETERS: ObjectName - Object name to be evaluated - * DeviceNode - Node for the device - * Address - Where the value is returned - * - * RETURN: Status - * - * DESCRIPTION: Evaluates a numeric namespace object for a selected device - * and stores result in *Address. - * - * NOTE: Internal function, no parameter validation - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtEvaluateNumericObject ( - char *ObjectName, - ACPI_NAMESPACE_NODE *DeviceNode, - ACPI_INTEGER *Address) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (UtEvaluateNumericObject); - - - Status = AcpiUtEvaluateObject (DeviceNode, ObjectName, - ACPI_BTYPE_INTEGER, &ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Get the returned Integer */ - - *Address = ObjDesc->Integer.Value; - - /* On exit, we must delete the return object */ - - AcpiUtRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCopyIdString - * - * PARAMETERS: Destination - Where to copy the string - * Source - Source string - * MaxLength - Length of the destination buffer - * - * RETURN: None - * - * DESCRIPTION: Copies an ID string for the _HID, _CID, and _UID methods. - * Performs removal of a leading asterisk if present -- workaround - * for a known issue on a bunch of machines. - * - ******************************************************************************/ - -static void -AcpiUtCopyIdString ( - char *Destination, - char *Source, - ACPI_SIZE MaxLength) -{ - - /* - * Workaround for ID strings that have a leading asterisk. This construct - * is not allowed by the ACPI specification (ID strings must be - * alphanumeric), but enough existing machines have this embedded in their - * ID strings that the following code is useful. - */ - if (*Source == '*') - { - Source++; - } - - /* Do the actual copy */ - - ACPI_STRNCPY (Destination, Source, MaxLength); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtExecute_HID - * - * PARAMETERS: DeviceNode - Node for the device - * Hid - Where the HID is returned - * - * RETURN: Status - * - * DESCRIPTION: Executes the _HID control method that returns the hardware - * ID of the device. - * - * NOTE: Internal function, no parameter validation - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtExecute_HID ( - ACPI_NAMESPACE_NODE *DeviceNode, - ACPI_DEVICE_ID *Hid) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (UtExecute_HID); - - - Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__HID, - ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING, &ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_INTEGER) - { - /* Convert the Numeric HID to string */ - - AcpiExEisaIdToString ((UINT32) ObjDesc->Integer.Value, Hid->Value); - } - else - { - /* Copy the String HID from the returned object */ - - AcpiUtCopyIdString (Hid->Value, ObjDesc->String.Pointer, - sizeof (Hid->Value)); - } - - /* On exit, we must delete the return object */ - - AcpiUtRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtTranslateOneCid - * - * PARAMETERS: ObjDesc - _CID object, must be integer or string - * OneCid - Where the CID string is returned - * - * RETURN: Status - * - * DESCRIPTION: Return a numeric or string _CID value as a string. - * (Compatible ID) - * - * NOTE: Assumes a maximum _CID string length of - * ACPI_MAX_CID_LENGTH. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiUtTranslateOneCid ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_COMPATIBLE_ID *OneCid) -{ - - - switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) - { - case ACPI_TYPE_INTEGER: - - /* Convert the Numeric CID to string */ - - AcpiExEisaIdToString ((UINT32) ObjDesc->Integer.Value, OneCid->Value); - return (AE_OK); - - case ACPI_TYPE_STRING: - - if (ObjDesc->String.Length > ACPI_MAX_CID_LENGTH) - { - return (AE_AML_STRING_LIMIT); - } - - /* Copy the String CID from the returned object */ - - AcpiUtCopyIdString (OneCid->Value, ObjDesc->String.Pointer, - ACPI_MAX_CID_LENGTH); - return (AE_OK); - - default: - - return (AE_TYPE); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtExecute_CID - * - * PARAMETERS: DeviceNode - Node for the device - * ReturnCidList - Where the CID list is returned - * - * RETURN: Status - * - * DESCRIPTION: Executes the _CID control method that returns one or more - * compatible hardware IDs for the device. - * - * NOTE: Internal function, no parameter validation - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtExecute_CID ( - ACPI_NAMESPACE_NODE *DeviceNode, - ACPI_COMPATIBLE_ID_LIST **ReturnCidList) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - UINT32 Count; - UINT32 Size; - ACPI_COMPATIBLE_ID_LIST *CidList; - ACPI_NATIVE_UINT i; - - - ACPI_FUNCTION_TRACE (UtExecute_CID); - - - /* Evaluate the _CID method for this device */ - - Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__CID, - ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_PACKAGE, - &ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Get the number of _CIDs returned */ - - Count = 1; - if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_PACKAGE) - { - Count = ObjDesc->Package.Count; - } - - /* Allocate a worst-case buffer for the _CIDs */ - - Size = (((Count - 1) * sizeof (ACPI_COMPATIBLE_ID)) + - sizeof (ACPI_COMPATIBLE_ID_LIST)); - - CidList = ACPI_ALLOCATE_ZEROED ((ACPI_SIZE) Size); - if (!CidList) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - /* Init CID list */ - - CidList->Count = Count; - CidList->Size = Size; - - /* - * A _CID can return either a single compatible ID or a package of - * compatible IDs. Each compatible ID can be one of the following: - * 1) Integer (32 bit compressed EISA ID) or - * 2) String (PCI ID format, e.g. "PCI\VEN_vvvv&DEV_dddd&SUBSYS_ssssssss") - */ - - /* The _CID object can be either a single CID or a package (list) of CIDs */ - - if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_PACKAGE) - { - /* Translate each package element */ - - for (i = 0; i < Count; i++) - { - Status = AcpiUtTranslateOneCid (ObjDesc->Package.Elements[i], - &CidList->Id[i]); - if (ACPI_FAILURE (Status)) - { - break; - } - } - } - else - { - /* Only one CID, translate to a string */ - - Status = AcpiUtTranslateOneCid (ObjDesc, CidList->Id); - } - - /* Cleanup on error */ - - if (ACPI_FAILURE (Status)) - { - ACPI_FREE (CidList); - } - else - { - *ReturnCidList = CidList; - } - - /* On exit, we must delete the _CID return object */ - - AcpiUtRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtExecute_UID - * - * PARAMETERS: DeviceNode - Node for the device - * Uid - Where the UID is returned - * - * RETURN: Status - * - * DESCRIPTION: Executes the _UID control method that returns the hardware - * ID of the device. - * - * NOTE: Internal function, no parameter validation - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtExecute_UID ( - ACPI_NAMESPACE_NODE *DeviceNode, - ACPI_DEVICE_ID *Uid) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (UtExecute_UID); - - - Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__UID, - ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING, &ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - if (ACPI_GET_OBJECT_TYPE (ObjDesc) == ACPI_TYPE_INTEGER) - { - /* Convert the Numeric UID to string */ - - AcpiExUnsignedIntegerToString (ObjDesc->Integer.Value, Uid->Value); - } - else - { - /* Copy the String UID from the returned object */ - - AcpiUtCopyIdString (Uid->Value, ObjDesc->String.Pointer, - sizeof (Uid->Value)); - } - - /* On exit, we must delete the return object */ - - AcpiUtRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtExecute_STA - * - * PARAMETERS: DeviceNode - Node for the device - * Flags - Where the status flags are returned - * - * RETURN: Status - * - * DESCRIPTION: Executes _STA for selected device and stores results in - * *Flags. - * - * NOTE: Internal function, no parameter validation - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtExecute_STA ( - ACPI_NAMESPACE_NODE *DeviceNode, - UINT32 *Flags) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (UtExecute_STA); - - - Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__STA, - ACPI_BTYPE_INTEGER, &ObjDesc); - if (ACPI_FAILURE (Status)) - { - if (AE_NOT_FOUND == Status) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "_STA on %4.4s was not found, assuming device is present\n", - AcpiUtGetNodeName (DeviceNode))); - - *Flags = ACPI_UINT32_MAX; - Status = AE_OK; - } - - return_ACPI_STATUS (Status); - } - - /* Extract the status flags */ - - *Flags = (UINT32) ObjDesc->Integer.Value; - - /* On exit, we must delete the return object */ - - AcpiUtRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtExecute_Sxds - * - * PARAMETERS: DeviceNode - Node for the device - * Flags - Where the status flags are returned - * - * RETURN: Status - * - * DESCRIPTION: Executes _STA for selected device and stores results in - * *Flags. - * - * NOTE: Internal function, no parameter validation - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtExecute_Sxds ( - ACPI_NAMESPACE_NODE *DeviceNode, - UINT8 *Highest) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_STATUS Status; - UINT32 i; - - - ACPI_FUNCTION_TRACE (UtExecute_Sxds); - - - for (i = 0; i < 4; i++) - { - Highest[i] = 0xFF; - Status = AcpiUtEvaluateObject (DeviceNode, - ACPI_CAST_PTR (char, AcpiGbl_HighestDstateNames[i]), - ACPI_BTYPE_INTEGER, &ObjDesc); - if (ACPI_FAILURE (Status)) - { - if (Status != AE_NOT_FOUND) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "%s on Device %4.4s, %s\n", - ACPI_CAST_PTR (char, AcpiGbl_HighestDstateNames[i]), - AcpiUtGetNodeName (DeviceNode), - AcpiFormatException (Status))); - - return_ACPI_STATUS (Status); - } - } - else - { - /* Extract the Dstate value */ - - Highest[i] = (UINT8) ObjDesc->Integer.Value; - - /* Delete the return object */ - - AcpiUtRemoveReference (ObjDesc); - } - } - - return_ACPI_STATUS (AE_OK); -} diff --git a/sys/contrib/dev/acpica-unix-20061109/utilities/utglobal.c b/sys/contrib/dev/acpica-unix-20061109/utilities/utglobal.c deleted file mode 100644 index d93d8a2067..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/utilities/utglobal.c +++ /dev/null @@ -1,838 +0,0 @@ -/****************************************************************************** - * - * Module Name: utglobal - Global variables for the ACPI subsystem - * $Revision: 1.247 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __UTGLOBAL_C__ -#define DEFINE_ACPI_GLOBALS - -#include "acpi.h" -#include "acnamesp.h" - -ACPI_EXPORT_SYMBOL (AcpiGbl_FADT) - -#define _COMPONENT ACPI_UTILITIES - ACPI_MODULE_NAME ("utglobal") - - -/******************************************************************************* - * - * Static global variable initialization. - * - ******************************************************************************/ - -/* - * We want the debug switches statically initialized so they - * are already set when the debugger is entered. - */ - -/* Debug switch - level and trace mask */ - -#ifdef ACPI_DEBUG_OUTPUT -UINT32 AcpiDbgLevel = ACPI_DEBUG_DEFAULT; -#else -UINT32 AcpiDbgLevel = ACPI_NORMAL_DEFAULT; -#endif - -/* Debug switch - layer (component) mask */ - -UINT32 AcpiDbgLayer = ACPI_COMPONENT_DEFAULT; -UINT32 AcpiGbl_NestingLevel = 0; - -/* Debugger globals */ - -BOOLEAN AcpiGbl_DbTerminateThreads = FALSE; -BOOLEAN AcpiGbl_AbortMethod = FALSE; -BOOLEAN AcpiGbl_MethodExecuting = FALSE; - -/* System flags */ - -UINT32 AcpiGbl_StartupFlags = 0; - -/* System starts uninitialized */ - -BOOLEAN AcpiGbl_Shutdown = TRUE; - -const char *AcpiGbl_SleepStateNames[ACPI_S_STATE_COUNT] = -{ - "\\_S0_", - "\\_S1_", - "\\_S2_", - "\\_S3_", - "\\_S4_", - "\\_S5_" -}; - -const char *AcpiGbl_HighestDstateNames[4] = -{ - "_S1D", - "_S2D", - "_S3D", - "_S4D" -}; - - -/******************************************************************************* - * - * FUNCTION: AcpiFormatException - * - * PARAMETERS: Status - The ACPI_STATUS code to be formatted - * - * RETURN: A string containing the exception text. A valid pointer is - * always returned. - * - * DESCRIPTION: This function translates an ACPI exception into an ASCII string - * It is here instead of utxface.c so it is always present. - * - ******************************************************************************/ - -const char * -AcpiFormatException ( - ACPI_STATUS Status) -{ - const char *Exception = NULL; - - - ACPI_FUNCTION_ENTRY (); - - - Exception = AcpiUtValidateException (Status); - if (!Exception) - { - /* Exception code was not recognized */ - - ACPI_ERROR ((AE_INFO, - "Unknown exception code: 0x%8.8X", Status)); - - Exception = "UNKNOWN_STATUS_CODE"; - } - - return (ACPI_CAST_PTR (const char, Exception)); -} - -ACPI_EXPORT_SYMBOL (AcpiFormatException) - - -/******************************************************************************* - * - * Namespace globals - * - ******************************************************************************/ - -/* - * Predefined ACPI Names (Built-in to the Interpreter) - * - * NOTES: - * 1) _SB_ is defined to be a device to allow \_SB_._INI to be run - * during the initialization sequence. - * 2) _TZ_ is defined to be a thermal zone in order to allow ASL code to - * perform a Notify() operation on it. - */ -const ACPI_PREDEFINED_NAMES AcpiGbl_PreDefinedNames[] = -{ - {"_GPE", ACPI_TYPE_LOCAL_SCOPE, NULL}, - {"_PR_", ACPI_TYPE_LOCAL_SCOPE, NULL}, - {"_SB_", ACPI_TYPE_DEVICE, NULL}, - {"_SI_", ACPI_TYPE_LOCAL_SCOPE, NULL}, - {"_TZ_", ACPI_TYPE_THERMAL, NULL}, - {"_REV", ACPI_TYPE_INTEGER, (char *) ACPI_CA_SUPPORT_LEVEL}, - {"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME}, - {"_GL_", ACPI_TYPE_MUTEX, (char *) 1}, - -#if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY) - {"_OSI", ACPI_TYPE_METHOD, (char *) 1}, -#endif - - /* Table terminator */ - - {NULL, ACPI_TYPE_ANY, NULL} -}; - -/* - * Properties of the ACPI Object Types, both internal and external. - * The table is indexed by values of ACPI_OBJECT_TYPE - */ -const UINT8 AcpiGbl_NsProperties[] = -{ - ACPI_NS_NORMAL, /* 00 Any */ - ACPI_NS_NORMAL, /* 01 Number */ - ACPI_NS_NORMAL, /* 02 String */ - ACPI_NS_NORMAL, /* 03 Buffer */ - ACPI_NS_NORMAL, /* 04 Package */ - ACPI_NS_NORMAL, /* 05 FieldUnit */ - ACPI_NS_NEWSCOPE, /* 06 Device */ - ACPI_NS_NORMAL, /* 07 Event */ - ACPI_NS_NEWSCOPE, /* 08 Method */ - ACPI_NS_NORMAL, /* 09 Mutex */ - ACPI_NS_NORMAL, /* 10 Region */ - ACPI_NS_NEWSCOPE, /* 11 Power */ - ACPI_NS_NEWSCOPE, /* 12 Processor */ - ACPI_NS_NEWSCOPE, /* 13 Thermal */ - ACPI_NS_NORMAL, /* 14 BufferField */ - ACPI_NS_NORMAL, /* 15 DdbHandle */ - ACPI_NS_NORMAL, /* 16 Debug Object */ - ACPI_NS_NORMAL, /* 17 DefField */ - ACPI_NS_NORMAL, /* 18 BankField */ - ACPI_NS_NORMAL, /* 19 IndexField */ - ACPI_NS_NORMAL, /* 20 Reference */ - ACPI_NS_NORMAL, /* 21 Alias */ - ACPI_NS_NORMAL, /* 22 MethodAlias */ - ACPI_NS_NORMAL, /* 23 Notify */ - ACPI_NS_NORMAL, /* 24 Address Handler */ - ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 25 Resource Desc */ - ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 26 Resource Field */ - ACPI_NS_NEWSCOPE, /* 27 Scope */ - ACPI_NS_NORMAL, /* 28 Extra */ - ACPI_NS_NORMAL, /* 29 Data */ - ACPI_NS_NORMAL /* 30 Invalid */ -}; - - -/* Hex to ASCII conversion table */ - -static const char AcpiGbl_HexToAscii[] = -{ - '0','1','2','3','4','5','6','7', - '8','9','A','B','C','D','E','F' -}; - - -/******************************************************************************* - * - * FUNCTION: AcpiUtHexToAsciiChar - * - * PARAMETERS: Integer - Contains the hex digit - * Position - bit position of the digit within the - * integer (multiple of 4) - * - * RETURN: The converted Ascii character - * - * DESCRIPTION: Convert a hex digit to an Ascii character - * - ******************************************************************************/ - -char -AcpiUtHexToAsciiChar ( - ACPI_INTEGER Integer, - UINT32 Position) -{ - - return (AcpiGbl_HexToAscii[(Integer >> Position) & 0xF]); -} - - -/****************************************************************************** - * - * Event and Hardware globals - * - ******************************************************************************/ - -ACPI_BIT_REGISTER_INFO AcpiGbl_BitRegisterInfo[ACPI_NUM_BITREG] = -{ - /* Name Parent Register Register Bit Position Register Bit Mask */ - - /* ACPI_BITREG_TIMER_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_TIMER_STATUS, ACPI_BITMASK_TIMER_STATUS}, - /* ACPI_BITREG_BUS_MASTER_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_BUS_MASTER_STATUS, ACPI_BITMASK_BUS_MASTER_STATUS}, - /* ACPI_BITREG_GLOBAL_LOCK_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_GLOBAL_LOCK_STATUS, ACPI_BITMASK_GLOBAL_LOCK_STATUS}, - /* ACPI_BITREG_POWER_BUTTON_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_POWER_BUTTON_STATUS, ACPI_BITMASK_POWER_BUTTON_STATUS}, - /* ACPI_BITREG_SLEEP_BUTTON_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_SLEEP_BUTTON_STATUS, ACPI_BITMASK_SLEEP_BUTTON_STATUS}, - /* ACPI_BITREG_RT_CLOCK_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_RT_CLOCK_STATUS, ACPI_BITMASK_RT_CLOCK_STATUS}, - /* ACPI_BITREG_WAKE_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_WAKE_STATUS, ACPI_BITMASK_WAKE_STATUS}, - /* ACPI_BITREG_PCIEXP_WAKE_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_PCIEXP_WAKE_STATUS, ACPI_BITMASK_PCIEXP_WAKE_STATUS}, - - /* ACPI_BITREG_TIMER_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_TIMER_ENABLE, ACPI_BITMASK_TIMER_ENABLE}, - /* ACPI_BITREG_GLOBAL_LOCK_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_GLOBAL_LOCK_ENABLE, ACPI_BITMASK_GLOBAL_LOCK_ENABLE}, - /* ACPI_BITREG_POWER_BUTTON_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_POWER_BUTTON_ENABLE, ACPI_BITMASK_POWER_BUTTON_ENABLE}, - /* ACPI_BITREG_SLEEP_BUTTON_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE, ACPI_BITMASK_SLEEP_BUTTON_ENABLE}, - /* ACPI_BITREG_RT_CLOCK_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_RT_CLOCK_ENABLE, ACPI_BITMASK_RT_CLOCK_ENABLE}, - /* ACPI_BITREG_WAKE_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, 0, 0}, - /* ACPI_BITREG_PCIEXP_WAKE_DISABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_PCIEXP_WAKE_DISABLE, ACPI_BITMASK_PCIEXP_WAKE_DISABLE}, - - /* ACPI_BITREG_SCI_ENABLE */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_SCI_ENABLE, ACPI_BITMASK_SCI_ENABLE}, - /* ACPI_BITREG_BUS_MASTER_RLD */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_BUS_MASTER_RLD, ACPI_BITMASK_BUS_MASTER_RLD}, - /* ACPI_BITREG_GLOBAL_LOCK_RELEASE */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_GLOBAL_LOCK_RELEASE, ACPI_BITMASK_GLOBAL_LOCK_RELEASE}, - /* ACPI_BITREG_SLEEP_TYPE_A */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_SLEEP_TYPE_X, ACPI_BITMASK_SLEEP_TYPE_X}, - /* ACPI_BITREG_SLEEP_TYPE_B */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_SLEEP_TYPE_X, ACPI_BITMASK_SLEEP_TYPE_X}, - /* ACPI_BITREG_SLEEP_ENABLE */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_SLEEP_ENABLE, ACPI_BITMASK_SLEEP_ENABLE}, - - /* ACPI_BITREG_ARB_DIS */ {ACPI_REGISTER_PM2_CONTROL, ACPI_BITPOSITION_ARB_DISABLE, ACPI_BITMASK_ARB_DISABLE} -}; - - -ACPI_FIXED_EVENT_INFO AcpiGbl_FixedEventInfo[ACPI_NUM_FIXED_EVENTS] = -{ - /* ACPI_EVENT_PMTIMER */ {ACPI_BITREG_TIMER_STATUS, ACPI_BITREG_TIMER_ENABLE, ACPI_BITMASK_TIMER_STATUS, ACPI_BITMASK_TIMER_ENABLE}, - /* ACPI_EVENT_GLOBAL */ {ACPI_BITREG_GLOBAL_LOCK_STATUS, ACPI_BITREG_GLOBAL_LOCK_ENABLE, ACPI_BITMASK_GLOBAL_LOCK_STATUS, ACPI_BITMASK_GLOBAL_LOCK_ENABLE}, - /* ACPI_EVENT_POWER_BUTTON */ {ACPI_BITREG_POWER_BUTTON_STATUS, ACPI_BITREG_POWER_BUTTON_ENABLE, ACPI_BITMASK_POWER_BUTTON_STATUS, ACPI_BITMASK_POWER_BUTTON_ENABLE}, - /* ACPI_EVENT_SLEEP_BUTTON */ {ACPI_BITREG_SLEEP_BUTTON_STATUS, ACPI_BITREG_SLEEP_BUTTON_ENABLE, ACPI_BITMASK_SLEEP_BUTTON_STATUS, ACPI_BITMASK_SLEEP_BUTTON_ENABLE}, - /* ACPI_EVENT_RTC */ {ACPI_BITREG_RT_CLOCK_STATUS, ACPI_BITREG_RT_CLOCK_ENABLE, ACPI_BITMASK_RT_CLOCK_STATUS, ACPI_BITMASK_RT_CLOCK_ENABLE}, -}; - -/******************************************************************************* - * - * FUNCTION: AcpiUtGetRegionName - * - * PARAMETERS: None. - * - * RETURN: Status - * - * DESCRIPTION: Translate a Space ID into a name string (Debug only) - * - ******************************************************************************/ - -/* Region type decoding */ - -const char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] = -{ - "SystemMemory", - "SystemIO", - "PCI_Config", - "EmbeddedControl", - "SMBus", - "CMOS", - "PCIBARTarget", - "DataTable" -}; - - -char * -AcpiUtGetRegionName ( - UINT8 SpaceId) -{ - - if (SpaceId >= ACPI_USER_REGION_BEGIN) - { - return ("UserDefinedRegion"); - } - else if (SpaceId >= ACPI_NUM_PREDEFINED_REGIONS) - { - return ("InvalidSpaceId"); - } - - return (ACPI_CAST_PTR (char, AcpiGbl_RegionTypes[SpaceId])); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtGetEventName - * - * PARAMETERS: None. - * - * RETURN: Status - * - * DESCRIPTION: Translate a Event ID into a name string (Debug only) - * - ******************************************************************************/ - -/* Event type decoding */ - -static const char *AcpiGbl_EventTypes[ACPI_NUM_FIXED_EVENTS] = -{ - "PM_Timer", - "GlobalLock", - "PowerButton", - "SleepButton", - "RealTimeClock", -}; - - -char * -AcpiUtGetEventName ( - UINT32 EventId) -{ - - if (EventId > ACPI_EVENT_MAX) - { - return ("InvalidEventID"); - } - - return (ACPI_CAST_PTR (char, AcpiGbl_EventTypes[EventId])); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtGetTypeName - * - * PARAMETERS: None. - * - * RETURN: Status - * - * DESCRIPTION: Translate a Type ID into a name string (Debug only) - * - ******************************************************************************/ - -/* - * Elements of AcpiGbl_NsTypeNames below must match - * one-to-one with values of ACPI_OBJECT_TYPE - * - * The type ACPI_TYPE_ANY (Untyped) is used as a "don't care" when searching; - * when stored in a table it really means that we have thus far seen no - * evidence to indicate what type is actually going to be stored for this entry. - */ -static const char AcpiGbl_BadType[] = "UNDEFINED"; - -/* Printable names of the ACPI object types */ - -static const char *AcpiGbl_NsTypeNames[] = -{ - /* 00 */ "Untyped", - /* 01 */ "Integer", - /* 02 */ "String", - /* 03 */ "Buffer", - /* 04 */ "Package", - /* 05 */ "FieldUnit", - /* 06 */ "Device", - /* 07 */ "Event", - /* 08 */ "Method", - /* 09 */ "Mutex", - /* 10 */ "Region", - /* 11 */ "Power", - /* 12 */ "Processor", - /* 13 */ "Thermal", - /* 14 */ "BufferField", - /* 15 */ "DdbHandle", - /* 16 */ "DebugObject", - /* 17 */ "RegionField", - /* 18 */ "BankField", - /* 19 */ "IndexField", - /* 20 */ "Reference", - /* 21 */ "Alias", - /* 22 */ "MethodAlias", - /* 23 */ "Notify", - /* 24 */ "AddrHandler", - /* 25 */ "ResourceDesc", - /* 26 */ "ResourceFld", - /* 27 */ "Scope", - /* 28 */ "Extra", - /* 29 */ "Data", - /* 30 */ "Invalid" -}; - - -char * -AcpiUtGetTypeName ( - ACPI_OBJECT_TYPE Type) -{ - - if (Type > ACPI_TYPE_INVALID) - { - return (ACPI_CAST_PTR (char, AcpiGbl_BadType)); - } - - return (ACPI_CAST_PTR (char, AcpiGbl_NsTypeNames[Type])); -} - - -char * -AcpiUtGetObjectTypeName ( - ACPI_OPERAND_OBJECT *ObjDesc) -{ - - if (!ObjDesc) - { - return ("[NULL Object Descriptor]"); - } - - return (AcpiUtGetTypeName (ACPI_GET_OBJECT_TYPE (ObjDesc))); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtGetNodeName - * - * PARAMETERS: Object - A namespace node - * - * RETURN: Pointer to a string - * - * DESCRIPTION: Validate the node and return the node's ACPI name. - * - ******************************************************************************/ - -char * -AcpiUtGetNodeName ( - void *Object) -{ - ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) Object; - - - /* Must return a string of exactly 4 characters == ACPI_NAME_SIZE */ - - if (!Object) - { - return ("NULL"); - } - - /* Check for Root node */ - - if ((Object == ACPI_ROOT_OBJECT) || - (Object == AcpiGbl_RootNode)) - { - return ("\"\\\" "); - } - - /* Descriptor must be a namespace node */ - - if (ACPI_GET_DESCRIPTOR_TYPE (Node) != ACPI_DESC_TYPE_NAMED) - { - return ("####"); - } - - /* Name must be a valid ACPI name */ - - if (!AcpiUtValidAcpiName (Node->Name.Integer)) - { - Node->Name.Integer = AcpiUtRepairName (Node->Name.Ascii); - } - - /* Return the name */ - - return (Node->Name.Ascii); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtGetDescriptorName - * - * PARAMETERS: Object - An ACPI object - * - * RETURN: Pointer to a string - * - * DESCRIPTION: Validate object and return the descriptor type - * - ******************************************************************************/ - -/* Printable names of object descriptor types */ - -static const char *AcpiGbl_DescTypeNames[] = -{ - /* 00 */ "Invalid", - /* 01 */ "Cached", - /* 02 */ "State-Generic", - /* 03 */ "State-Update", - /* 04 */ "State-Package", - /* 05 */ "State-Control", - /* 06 */ "State-RootParseScope", - /* 07 */ "State-ParseScope", - /* 08 */ "State-WalkScope", - /* 09 */ "State-Result", - /* 10 */ "State-Notify", - /* 11 */ "State-Thread", - /* 12 */ "Walk", - /* 13 */ "Parser", - /* 14 */ "Operand", - /* 15 */ "Node" -}; - - -char * -AcpiUtGetDescriptorName ( - void *Object) -{ - - if (!Object) - { - return ("NULL OBJECT"); - } - - if (ACPI_GET_DESCRIPTOR_TYPE (Object) > ACPI_DESC_TYPE_MAX) - { - return (ACPI_CAST_PTR (char, AcpiGbl_BadType)); - } - - return (ACPI_CAST_PTR (char, - AcpiGbl_DescTypeNames[ACPI_GET_DESCRIPTOR_TYPE (Object)])); - -} - - -#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) -/* - * Strings and procedures used for debug only - */ - -/******************************************************************************* - * - * FUNCTION: AcpiUtGetMutexName - * - * PARAMETERS: MutexId - The predefined ID for this mutex. - * - * RETURN: String containing the name of the mutex. Always returns a valid - * pointer. - * - * DESCRIPTION: Translate a mutex ID into a name string (Debug only) - * - ******************************************************************************/ - -char * -AcpiUtGetMutexName ( - UINT32 MutexId) -{ - - if (MutexId > ACPI_MAX_MUTEX) - { - return ("Invalid Mutex ID"); - } - - return (AcpiGbl_MutexNames[MutexId]); -} -#endif - - -/******************************************************************************* - * - * FUNCTION: AcpiUtValidObjectType - * - * PARAMETERS: Type - Object type to be validated - * - * RETURN: TRUE if valid object type, FALSE otherwise - * - * DESCRIPTION: Validate an object type - * - ******************************************************************************/ - -BOOLEAN -AcpiUtValidObjectType ( - ACPI_OBJECT_TYPE Type) -{ - - if (Type > ACPI_TYPE_LOCAL_MAX) - { - /* Note: Assumes all TYPEs are contiguous (external/local) */ - - return (FALSE); - } - - return (TRUE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtInitGlobals - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Init library globals. All globals that require specific - * initialization should be initialized here! - * - ******************************************************************************/ - -void -AcpiUtInitGlobals ( - void) -{ - ACPI_STATUS Status; - UINT32 i; - - - ACPI_FUNCTION_TRACE (UtInitGlobals); - - - /* Create all memory caches */ - - Status = AcpiUtCreateCaches (); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Mutex locked flags */ - - for (i = 0; i < ACPI_NUM_MUTEX; i++) - { - AcpiGbl_MutexInfo[i].Mutex = NULL; - AcpiGbl_MutexInfo[i].ThreadId = ACPI_MUTEX_NOT_ACQUIRED; - AcpiGbl_MutexInfo[i].UseCount = 0; - } - - for (i = 0; i < ACPI_NUM_OWNERID_MASKS; i++) - { - AcpiGbl_OwnerIdMask[i] = 0; - } - AcpiGbl_OwnerIdMask[ACPI_NUM_OWNERID_MASKS - 1] = 0x80000000; /* Last ID is never valid */ - - /* GPE support */ - - AcpiGpeCount = 0; - AcpiGbl_GpeXruptListHead = NULL; - AcpiGbl_GpeFadtBlocks[0] = NULL; - AcpiGbl_GpeFadtBlocks[1] = NULL; - - /* Global notify handlers */ - - AcpiGbl_SystemNotify.Handler = NULL; - AcpiGbl_DeviceNotify.Handler = NULL; - AcpiGbl_ExceptionHandler = NULL; - AcpiGbl_InitHandler = NULL; - - /* Global Lock support */ - - AcpiGbl_GlobalLockSemaphore = NULL; - AcpiGbl_GlobalLockMutex = NULL; - AcpiGbl_GlobalLockAcquired = FALSE; - AcpiGbl_GlobalLockHandle = 0; - - /* Miscellaneous variables */ - - AcpiGbl_CmSingleStep = FALSE; - AcpiGbl_DbTerminateThreads = FALSE; - AcpiGbl_Shutdown = FALSE; - AcpiGbl_NsLookupCount = 0; - AcpiGbl_PsFindCount = 0; - AcpiGbl_AcpiHardwarePresent = TRUE; - AcpiGbl_LastOwnerIdIndex = 0; - AcpiGbl_NextOwnerIdOffset = 0; - AcpiGbl_TraceMethodName = 0; - AcpiGbl_TraceDbgLevel = 0; - AcpiGbl_TraceDbgLayer = 0; - AcpiGbl_DebuggerConfiguration = DEBUGGER_THREADING; - AcpiGbl_DbOutputFlags = ACPI_DB_CONSOLE_OUTPUT; - - /* Hardware oriented */ - - AcpiGbl_EventsInitialized = FALSE; - AcpiGbl_SystemAwakeAndRunning = TRUE; - - /* Namespace */ - - AcpiGbl_RootNode = NULL; - AcpiGbl_RootNodeStruct.Name.Integer = ACPI_ROOT_NAME; - AcpiGbl_RootNodeStruct.DescriptorType = ACPI_DESC_TYPE_NAMED; - AcpiGbl_RootNodeStruct.Type = ACPI_TYPE_DEVICE; - AcpiGbl_RootNodeStruct.Child = NULL; - AcpiGbl_RootNodeStruct.Peer = NULL; - AcpiGbl_RootNodeStruct.Object = NULL; - AcpiGbl_RootNodeStruct.Flags = ANOBJ_END_OF_PEER_LIST; - - -#ifdef ACPI_DEBUG_OUTPUT - AcpiGbl_LowestStackPointer = ACPI_SIZE_MAX; -#endif - - return_VOID; -} - -/* Public globals */ - -ACPI_EXPORT_SYMBOL (AcpiDbgLevel) -ACPI_EXPORT_SYMBOL (AcpiDbgLayer) -ACPI_EXPORT_SYMBOL (AcpiGpeCount) - - diff --git a/sys/contrib/dev/acpica-unix-20061109/utilities/utinit.c b/sys/contrib/dev/acpica-unix-20061109/utilities/utinit.c deleted file mode 100644 index b30f240eda..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/utilities/utinit.c +++ /dev/null @@ -1,241 +0,0 @@ -/****************************************************************************** - * - * Module Name: utinit - Common ACPI subsystem initialization - * $Revision: 1.134 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __UTINIT_C__ - -#include "acpi.h" -#include "acnamesp.h" -#include "acevents.h" -#include "actables.h" - -#define _COMPONENT ACPI_UTILITIES - ACPI_MODULE_NAME ("utinit") - -/* Local prototypes */ - -static void AcpiUtTerminate ( - void); - - -/****************************************************************************** - * - * FUNCTION: AcpiUtTerminate - * - * PARAMETERS: none - * - * RETURN: none - * - * DESCRIPTION: Free global memory - * - ******************************************************************************/ - -static void -AcpiUtTerminate ( - void) -{ - ACPI_GPE_BLOCK_INFO *GpeBlock; - ACPI_GPE_BLOCK_INFO *NextGpeBlock; - ACPI_GPE_XRUPT_INFO *GpeXruptInfo; - ACPI_GPE_XRUPT_INFO *NextGpeXruptInfo; - - - ACPI_FUNCTION_TRACE (UtTerminate); - - - /* Free global GPE blocks and related info structures */ - - GpeXruptInfo = AcpiGbl_GpeXruptListHead; - while (GpeXruptInfo) - { - GpeBlock = GpeXruptInfo->GpeBlockListHead; - while (GpeBlock) - { - NextGpeBlock = GpeBlock->Next; - ACPI_FREE (GpeBlock->EventInfo); - ACPI_FREE (GpeBlock->RegisterInfo); - ACPI_FREE (GpeBlock); - - GpeBlock = NextGpeBlock; - } - NextGpeXruptInfo = GpeXruptInfo->Next; - ACPI_FREE (GpeXruptInfo); - GpeXruptInfo = NextGpeXruptInfo; - } - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtSubsystemShutdown - * - * PARAMETERS: none - * - * RETURN: none - * - * DESCRIPTION: Shutdown the various subsystems. Don't delete the mutex - * objects here -- because the AML debugger may be still running. - * - ******************************************************************************/ - -void -AcpiUtSubsystemShutdown ( - void) -{ - - ACPI_FUNCTION_TRACE (UtSubsystemShutdown); - - /* Just exit if subsystem is already shutdown */ - - if (AcpiGbl_Shutdown) - { - ACPI_ERROR ((AE_INFO, - "ACPI Subsystem is already terminated")); - return_VOID; - } - - /* Subsystem appears active, go ahead and shut it down */ - - AcpiGbl_Shutdown = TRUE; - AcpiGbl_StartupFlags = 0; - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Shutting down ACPI Subsystem\n")); - - /* Close the AcpiEvent Handling */ - - AcpiEvTerminate (); - - /* Close the Namespace */ - - AcpiNsTerminate (); - - /* Delete the ACPI tables */ - - AcpiTbTerminate (); - - /* Close the globals */ - - AcpiUtTerminate (); - - /* Purge the local caches */ - - (void) AcpiUtDeleteCaches (); - return_VOID; -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/utilities/utmath.c b/sys/contrib/dev/acpica-unix-20061109/utilities/utmath.c deleted file mode 100644 index 0cb9e0782e..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/utilities/utmath.c +++ /dev/null @@ -1,431 +0,0 @@ -/******************************************************************************* - * - * Module Name: utmath - Integer math support routines - * $Revision: 1.21 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __UTMATH_C__ - -#include "acpi.h" - - -#define _COMPONENT ACPI_UTILITIES - ACPI_MODULE_NAME ("utmath") - -/* - * Support for double-precision integer divide. This code is included here - * in order to support kernel environments where the double-precision math - * library is not available. - */ - -#ifndef ACPI_USE_NATIVE_DIVIDE -/******************************************************************************* - * - * FUNCTION: AcpiUtShortDivide - * - * PARAMETERS: Dividend - 64-bit dividend - * Divisor - 32-bit divisor - * OutQuotient - Pointer to where the quotient is returned - * OutRemainder - Pointer to where the remainder is returned - * - * RETURN: Status (Checks for divide-by-zero) - * - * DESCRIPTION: Perform a short (maximum 64 bits divided by 32 bits) - * divide and modulo. The result is a 64-bit quotient and a - * 32-bit remainder. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtShortDivide ( - ACPI_INTEGER Dividend, - UINT32 Divisor, - ACPI_INTEGER *OutQuotient, - UINT32 *OutRemainder) -{ - UINT64_OVERLAY DividendOvl; - UINT64_OVERLAY Quotient; - UINT32 Remainder32; - - - ACPI_FUNCTION_TRACE (UtShortDivide); - - - /* Always check for a zero divisor */ - - if (Divisor == 0) - { - ACPI_ERROR ((AE_INFO, "Divide by zero")); - return_ACPI_STATUS (AE_AML_DIVIDE_BY_ZERO); - } - - DividendOvl.Full = Dividend; - - /* - * The quotient is 64 bits, the remainder is always 32 bits, - * and is generated by the second divide. - */ - ACPI_DIV_64_BY_32 (0, DividendOvl.Part.Hi, Divisor, - Quotient.Part.Hi, Remainder32); - ACPI_DIV_64_BY_32 (Remainder32, DividendOvl.Part.Lo, Divisor, - Quotient.Part.Lo, Remainder32); - - /* Return only what was requested */ - - if (OutQuotient) - { - *OutQuotient = Quotient.Full; - } - if (OutRemainder) - { - *OutRemainder = Remainder32; - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtDivide - * - * PARAMETERS: InDividend - Dividend - * InDivisor - Divisor - * OutQuotient - Pointer to where the quotient is returned - * OutRemainder - Pointer to where the remainder is returned - * - * RETURN: Status (Checks for divide-by-zero) - * - * DESCRIPTION: Perform a divide and modulo. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtDivide ( - ACPI_INTEGER InDividend, - ACPI_INTEGER InDivisor, - ACPI_INTEGER *OutQuotient, - ACPI_INTEGER *OutRemainder) -{ - UINT64_OVERLAY Dividend; - UINT64_OVERLAY Divisor; - UINT64_OVERLAY Quotient; - UINT64_OVERLAY Remainder; - UINT64_OVERLAY NormalizedDividend; - UINT64_OVERLAY NormalizedDivisor; - UINT32 Partial1; - UINT64_OVERLAY Partial2; - UINT64_OVERLAY Partial3; - - - ACPI_FUNCTION_TRACE (UtDivide); - - - /* Always check for a zero divisor */ - - if (InDivisor == 0) - { - ACPI_ERROR ((AE_INFO, "Divide by zero")); - return_ACPI_STATUS (AE_AML_DIVIDE_BY_ZERO); - } - - Divisor.Full = InDivisor; - Dividend.Full = InDividend; - if (Divisor.Part.Hi == 0) - { - /* - * 1) Simplest case is where the divisor is 32 bits, we can - * just do two divides - */ - Remainder.Part.Hi = 0; - - /* - * The quotient is 64 bits, the remainder is always 32 bits, - * and is generated by the second divide. - */ - ACPI_DIV_64_BY_32 (0, Dividend.Part.Hi, Divisor.Part.Lo, - Quotient.Part.Hi, Partial1); - ACPI_DIV_64_BY_32 (Partial1, Dividend.Part.Lo, Divisor.Part.Lo, - Quotient.Part.Lo, Remainder.Part.Lo); - } - - else - { - /* - * 2) The general case where the divisor is a full 64 bits - * is more difficult - */ - Quotient.Part.Hi = 0; - NormalizedDividend = Dividend; - NormalizedDivisor = Divisor; - - /* Normalize the operands (shift until the divisor is < 32 bits) */ - - do - { - ACPI_SHIFT_RIGHT_64 (NormalizedDivisor.Part.Hi, - NormalizedDivisor.Part.Lo); - ACPI_SHIFT_RIGHT_64 (NormalizedDividend.Part.Hi, - NormalizedDividend.Part.Lo); - - } while (NormalizedDivisor.Part.Hi != 0); - - /* Partial divide */ - - ACPI_DIV_64_BY_32 (NormalizedDividend.Part.Hi, - NormalizedDividend.Part.Lo, - NormalizedDivisor.Part.Lo, - Quotient.Part.Lo, Partial1); - - /* - * The quotient is always 32 bits, and simply requires adjustment. - * The 64-bit remainder must be generated. - */ - Partial1 = Quotient.Part.Lo * Divisor.Part.Hi; - Partial2.Full = (ACPI_INTEGER) Quotient.Part.Lo * Divisor.Part.Lo; - Partial3.Full = (ACPI_INTEGER) Partial2.Part.Hi + Partial1; - - Remainder.Part.Hi = Partial3.Part.Lo; - Remainder.Part.Lo = Partial2.Part.Lo; - - if (Partial3.Part.Hi == 0) - { - if (Partial3.Part.Lo >= Dividend.Part.Hi) - { - if (Partial3.Part.Lo == Dividend.Part.Hi) - { - if (Partial2.Part.Lo > Dividend.Part.Lo) - { - Quotient.Part.Lo--; - Remainder.Full -= Divisor.Full; - } - } - else - { - Quotient.Part.Lo--; - Remainder.Full -= Divisor.Full; - } - } - - Remainder.Full = Remainder.Full - Dividend.Full; - Remainder.Part.Hi = (UINT32) -((INT32) Remainder.Part.Hi); - Remainder.Part.Lo = (UINT32) -((INT32) Remainder.Part.Lo); - - if (Remainder.Part.Lo) - { - Remainder.Part.Hi--; - } - } - } - - /* Return only what was requested */ - - if (OutQuotient) - { - *OutQuotient = Quotient.Full; - } - if (OutRemainder) - { - *OutRemainder = Remainder.Full; - } - - return_ACPI_STATUS (AE_OK); -} - -#else - -/******************************************************************************* - * - * FUNCTION: AcpiUtShortDivide, AcpiUtDivide - * - * PARAMETERS: See function headers above - * - * DESCRIPTION: Native versions of the UtDivide functions. Use these if either - * 1) The target is a 64-bit platform and therefore 64-bit - * integer math is supported directly by the machine. - * 2) The target is a 32-bit or 16-bit platform, and the - * double-precision integer math library is available to - * perform the divide. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtShortDivide ( - ACPI_INTEGER InDividend, - UINT32 Divisor, - ACPI_INTEGER *OutQuotient, - UINT32 *OutRemainder) -{ - - ACPI_FUNCTION_TRACE (UtShortDivide); - - - /* Always check for a zero divisor */ - - if (Divisor == 0) - { - ACPI_ERROR ((AE_INFO, "Divide by zero")); - return_ACPI_STATUS (AE_AML_DIVIDE_BY_ZERO); - } - - /* Return only what was requested */ - - if (OutQuotient) - { - *OutQuotient = InDividend / Divisor; - } - if (OutRemainder) - { - *OutRemainder = (UINT32) InDividend % Divisor; - } - - return_ACPI_STATUS (AE_OK); -} - -ACPI_STATUS -AcpiUtDivide ( - ACPI_INTEGER InDividend, - ACPI_INTEGER InDivisor, - ACPI_INTEGER *OutQuotient, - ACPI_INTEGER *OutRemainder) -{ - ACPI_FUNCTION_TRACE (UtDivide); - - - /* Always check for a zero divisor */ - - if (InDivisor == 0) - { - ACPI_ERROR ((AE_INFO, "Divide by zero")); - return_ACPI_STATUS (AE_AML_DIVIDE_BY_ZERO); - } - - - /* Return only what was requested */ - - if (OutQuotient) - { - *OutQuotient = InDividend / InDivisor; - } - if (OutRemainder) - { - *OutRemainder = InDividend % InDivisor; - } - - return_ACPI_STATUS (AE_OK); -} - -#endif - - diff --git a/sys/contrib/dev/acpica-unix-20061109/utilities/utmisc.c b/sys/contrib/dev/acpica-unix-20061109/utilities/utmisc.c deleted file mode 100644 index 11e9d4f615..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/utilities/utmisc.c +++ /dev/null @@ -1,1309 +0,0 @@ -/******************************************************************************* - * - * Module Name: utmisc - common utility procedures - * $Revision: 1.150 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __UTMISC_C__ - -#include "acpi.h" -#include "acnamesp.h" - - -#define _COMPONENT ACPI_UTILITIES - ACPI_MODULE_NAME ("utmisc") - - -/******************************************************************************* - * - * FUNCTION: AcpiUtValidateException - * - * PARAMETERS: Status - The ACPI_STATUS code to be formatted - * - * RETURN: A string containing the exception text. NULL if exception is - * not valid. - * - * DESCRIPTION: This function validates and translates an ACPI exception into - * an ASCII string. - * - ******************************************************************************/ - -const char * -AcpiUtValidateException ( - ACPI_STATUS Status) -{ - ACPI_STATUS SubStatus; - const char *Exception = NULL; - - - ACPI_FUNCTION_ENTRY (); - - - /* - * Status is composed of two parts, a "type" and an actual code - */ - SubStatus = (Status & ~AE_CODE_MASK); - - switch (Status & AE_CODE_MASK) - { - case AE_CODE_ENVIRONMENTAL: - - if (SubStatus <= AE_CODE_ENV_MAX) - { - Exception = AcpiGbl_ExceptionNames_Env [SubStatus]; - } - break; - - case AE_CODE_PROGRAMMER: - - if (SubStatus <= AE_CODE_PGM_MAX) - { - Exception = AcpiGbl_ExceptionNames_Pgm [SubStatus -1]; - } - break; - - case AE_CODE_ACPI_TABLES: - - if (SubStatus <= AE_CODE_TBL_MAX) - { - Exception = AcpiGbl_ExceptionNames_Tbl [SubStatus -1]; - } - break; - - case AE_CODE_AML: - - if (SubStatus <= AE_CODE_AML_MAX) - { - Exception = AcpiGbl_ExceptionNames_Aml [SubStatus -1]; - } - break; - - case AE_CODE_CONTROL: - - if (SubStatus <= AE_CODE_CTRL_MAX) - { - Exception = AcpiGbl_ExceptionNames_Ctrl [SubStatus -1]; - } - break; - - default: - break; - } - - return (ACPI_CAST_PTR (const char, Exception)); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtIsAmlTable - * - * PARAMETERS: Table - An ACPI table - * - * RETURN: TRUE if table contains executable AML; FALSE otherwise - * - * DESCRIPTION: Check ACPI Signature for a table that contains AML code. - * Currently, these are DSDT,SSDT,PSDT. All other table types are - * data tables that do not contain AML code. - * - ******************************************************************************/ - -BOOLEAN -AcpiUtIsAmlTable ( - ACPI_TABLE_HEADER *Table) -{ - - /* These are the only tables that contain executable AML */ - - if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT) || - ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_PSDT) || - ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_SSDT)) - { - return (TRUE); - } - - return (FALSE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtAllocateOwnerId - * - * PARAMETERS: OwnerId - Where the new owner ID is returned - * - * RETURN: Status - * - * DESCRIPTION: Allocate a table or method owner ID. The owner ID is used to - * track objects created by the table or method, to be deleted - * when the method exits or the table is unloaded. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtAllocateOwnerId ( - ACPI_OWNER_ID *OwnerId) -{ - ACPI_NATIVE_UINT i; - ACPI_NATIVE_UINT j; - ACPI_NATIVE_UINT k; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (UtAllocateOwnerId); - - - /* Guard against multiple allocations of ID to the same location */ - - if (*OwnerId) - { - ACPI_ERROR ((AE_INFO, "Owner ID [%2.2X] already exists", *OwnerId)); - return_ACPI_STATUS (AE_ALREADY_EXISTS); - } - - /* Mutex for the global ID mask */ - - Status = AcpiUtAcquireMutex (ACPI_MTX_CACHES); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Find a free owner ID, cycle through all possible IDs on repeated - * allocations. (ACPI_NUM_OWNERID_MASKS + 1) because first index may have - * to be scanned twice. - */ - for (i = 0, j = AcpiGbl_LastOwnerIdIndex; - i < (ACPI_NUM_OWNERID_MASKS + 1); - i++, j++) - { - if (j >= ACPI_NUM_OWNERID_MASKS) - { - j = 0; /* Wraparound to start of mask array */ - } - - for (k = AcpiGbl_NextOwnerIdOffset; k < 32; k++) - { - if (AcpiGbl_OwnerIdMask[j] == ACPI_UINT32_MAX) - { - /* There are no free IDs in this mask */ - - break; - } - - if (!(AcpiGbl_OwnerIdMask[j] & (1 << k))) - { - /* - * Found a free ID. The actual ID is the bit index plus one, - * making zero an invalid Owner ID. Save this as the last ID - * allocated and update the global ID mask. - */ - AcpiGbl_OwnerIdMask[j] |= (1 << k); - - AcpiGbl_LastOwnerIdIndex = (UINT8) j; - AcpiGbl_NextOwnerIdOffset = (UINT8) (k + 1); - - /* - * Construct encoded ID from the index and bit position - * - * Note: Last [j].k (bit 255) is never used and is marked - * permanently allocated (prevents +1 overflow) - */ - *OwnerId = (ACPI_OWNER_ID) ((k + 1) + ACPI_MUL_32 (j)); - - ACPI_DEBUG_PRINT ((ACPI_DB_VALUES, - "Allocated OwnerId: %2.2X\n", (unsigned int) *OwnerId)); - goto Exit; - } - } - - AcpiGbl_NextOwnerIdOffset = 0; - } - - /* - * All OwnerIds have been allocated. This typically should - * not happen since the IDs are reused after deallocation. The IDs are - * allocated upon table load (one per table) and method execution, and - * they are released when a table is unloaded or a method completes - * execution. - * - * If this error happens, there may be very deep nesting of invoked control - * methods, or there may be a bug where the IDs are not released. - */ - Status = AE_OWNER_ID_LIMIT; - ACPI_ERROR ((AE_INFO, - "Could not allocate new OwnerId (255 max), AE_OWNER_ID_LIMIT")); - -Exit: - (void) AcpiUtReleaseMutex (ACPI_MTX_CACHES); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtReleaseOwnerId - * - * PARAMETERS: OwnerIdPtr - Pointer to a previously allocated OwnerID - * - * RETURN: None. No error is returned because we are either exiting a - * control method or unloading a table. Either way, we would - * ignore any error anyway. - * - * DESCRIPTION: Release a table or method owner ID. Valid IDs are 1 - 255 - * - ******************************************************************************/ - -void -AcpiUtReleaseOwnerId ( - ACPI_OWNER_ID *OwnerIdPtr) -{ - ACPI_OWNER_ID OwnerId = *OwnerIdPtr; - ACPI_STATUS Status; - ACPI_NATIVE_UINT Index; - UINT32 Bit; - - - ACPI_FUNCTION_TRACE_U32 (UtReleaseOwnerId, OwnerId); - - - /* Always clear the input OwnerId (zero is an invalid ID) */ - - *OwnerIdPtr = 0; - - /* Zero is not a valid OwnerID */ - - if (OwnerId == 0) - { - ACPI_ERROR ((AE_INFO, "Invalid OwnerId: %2.2X", OwnerId)); - return_VOID; - } - - /* Mutex for the global ID mask */ - - Status = AcpiUtAcquireMutex (ACPI_MTX_CACHES); - if (ACPI_FAILURE (Status)) - { - return_VOID; - } - - /* Normalize the ID to zero */ - - OwnerId--; - - /* Decode ID to index/offset pair */ - - Index = ACPI_DIV_32 (OwnerId); - Bit = 1 << ACPI_MOD_32 (OwnerId); - - /* Free the owner ID only if it is valid */ - - if (AcpiGbl_OwnerIdMask[Index] & Bit) - { - AcpiGbl_OwnerIdMask[Index] ^= Bit; - } - else - { - ACPI_ERROR ((AE_INFO, - "Release of non-allocated OwnerId: %2.2X", OwnerId + 1)); - } - - (void) AcpiUtReleaseMutex (ACPI_MTX_CACHES); - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtStrupr (strupr) - * - * PARAMETERS: SrcString - The source string to convert - * - * RETURN: None - * - * DESCRIPTION: Convert string to uppercase - * - * NOTE: This is not a POSIX function, so it appears here, not in utclib.c - * - ******************************************************************************/ - -void -AcpiUtStrupr ( - char *SrcString) -{ - char *String; - - - ACPI_FUNCTION_ENTRY (); - - - if (!SrcString) - { - return; - } - - /* Walk entire string, uppercasing the letters */ - - for (String = SrcString; *String; String++) - { - *String = (char) ACPI_TOUPPER (*String); - } - - return; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtPrintString - * - * PARAMETERS: String - Null terminated ASCII string - * MaxLength - Maximum output length - * - * RETURN: None - * - * DESCRIPTION: Dump an ASCII string with support for ACPI-defined escape - * sequences. - * - ******************************************************************************/ - -void -AcpiUtPrintString ( - char *String, - UINT8 MaxLength) -{ - UINT32 i; - - - if (!String) - { - AcpiOsPrintf ("<\"NULL STRING PTR\">"); - return; - } - - AcpiOsPrintf ("\""); - for (i = 0; String[i] && (i < MaxLength); i++) - { - /* Escape sequences */ - - switch (String[i]) - { - case 0x07: - AcpiOsPrintf ("\\a"); /* BELL */ - break; - - case 0x08: - AcpiOsPrintf ("\\b"); /* BACKSPACE */ - break; - - case 0x0C: - AcpiOsPrintf ("\\f"); /* FORMFEED */ - break; - - case 0x0A: - AcpiOsPrintf ("\\n"); /* LINEFEED */ - break; - - case 0x0D: - AcpiOsPrintf ("\\r"); /* CARRIAGE RETURN*/ - break; - - case 0x09: - AcpiOsPrintf ("\\t"); /* HORIZONTAL TAB */ - break; - - case 0x0B: - AcpiOsPrintf ("\\v"); /* VERTICAL TAB */ - break; - - case '\'': /* Single Quote */ - case '\"': /* Double Quote */ - case '\\': /* Backslash */ - AcpiOsPrintf ("\\%c", (int) String[i]); - break; - - default: - - /* Check for printable character or hex escape */ - - if (ACPI_IS_PRINT (String[i])) - { - /* This is a normal character */ - - AcpiOsPrintf ("%c", (int) String[i]); - } - else - { - /* All others will be Hex escapes */ - - AcpiOsPrintf ("\\x%2.2X", (INT32) String[i]); - } - break; - } - } - AcpiOsPrintf ("\""); - - if (i == MaxLength && String[i]) - { - AcpiOsPrintf ("..."); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtDwordByteSwap - * - * PARAMETERS: Value - Value to be converted - * - * RETURN: UINT32 integer with bytes swapped - * - * DESCRIPTION: Convert a 32-bit value to big-endian (swap the bytes) - * - ******************************************************************************/ - -UINT32 -AcpiUtDwordByteSwap ( - UINT32 Value) -{ - union - { - UINT32 Value; - UINT8 Bytes[4]; - } Out; - union - { - UINT32 Value; - UINT8 Bytes[4]; - } In; - - - ACPI_FUNCTION_ENTRY (); - - - In.Value = Value; - - Out.Bytes[0] = In.Bytes[3]; - Out.Bytes[1] = In.Bytes[2]; - Out.Bytes[2] = In.Bytes[1]; - Out.Bytes[3] = In.Bytes[0]; - - return (Out.Value); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtSetIntegerWidth - * - * PARAMETERS: Revision From DSDT header - * - * RETURN: None - * - * DESCRIPTION: Set the global integer bit width based upon the revision - * of the DSDT. For Revision 1 and 0, Integers are 32 bits. - * For Revision 2 and above, Integers are 64 bits. Yes, this - * makes a difference. - * - ******************************************************************************/ - -void -AcpiUtSetIntegerWidth ( - UINT8 Revision) -{ - - if (Revision < 2) - { - /* 32-bit case */ - - AcpiGbl_IntegerBitWidth = 32; - AcpiGbl_IntegerNybbleWidth = 8; - AcpiGbl_IntegerByteWidth = 4; - } - else - { - /* 64-bit case (ACPI 2.0+) */ - - AcpiGbl_IntegerBitWidth = 64; - AcpiGbl_IntegerNybbleWidth = 16; - AcpiGbl_IntegerByteWidth = 8; - } -} - - -#ifdef ACPI_DEBUG_OUTPUT -/******************************************************************************* - * - * FUNCTION: AcpiUtDisplayInitPathname - * - * PARAMETERS: Type - Object type of the node - * ObjHandle - Handle whose pathname will be displayed - * Path - Additional path string to be appended. - * (NULL if no extra path) - * - * RETURN: ACPI_STATUS - * - * DESCRIPTION: Display full pathname of an object, DEBUG ONLY - * - ******************************************************************************/ - -void -AcpiUtDisplayInitPathname ( - UINT8 Type, - ACPI_NAMESPACE_NODE *ObjHandle, - char *Path) -{ - ACPI_STATUS Status; - ACPI_BUFFER Buffer; - - - ACPI_FUNCTION_ENTRY (); - - - /* Only print the path if the appropriate debug level is enabled */ - - if (!(AcpiDbgLevel & ACPI_LV_INIT_NAMES)) - { - return; - } - - /* Get the full pathname to the node */ - - Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - Status = AcpiNsHandleToPathname (ObjHandle, &Buffer); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Print what we're doing */ - - switch (Type) - { - case ACPI_TYPE_METHOD: - AcpiOsPrintf ("Executing "); - break; - - default: - AcpiOsPrintf ("Initializing "); - break; - } - - /* Print the object type and pathname */ - - AcpiOsPrintf ("%-12s %s", - AcpiUtGetTypeName (Type), (char *) Buffer.Pointer); - - /* Extra path is used to append names like _STA, _INI, etc. */ - - if (Path) - { - AcpiOsPrintf (".%s", Path); - } - AcpiOsPrintf ("\n"); - - ACPI_FREE (Buffer.Pointer); -} -#endif - - -/******************************************************************************* - * - * FUNCTION: AcpiUtValidAcpiChar - * - * PARAMETERS: Char - The character to be examined - * Position - Byte position (0-3) - * - * RETURN: TRUE if the character is valid, FALSE otherwise - * - * DESCRIPTION: Check for a valid ACPI character. Must be one of: - * 1) Upper case alpha - * 2) numeric - * 3) underscore - * - * We allow a '!' as the last character because of the ASF! table - * - ******************************************************************************/ - -BOOLEAN -AcpiUtValidAcpiChar ( - char Character, - ACPI_NATIVE_UINT Position) -{ - - if (!((Character >= 'A' && Character <= 'Z') || - (Character >= '0' && Character <= '9') || - (Character == '_'))) - { - /* Allow a '!' in the last position */ - - if (Character == '!' && Position == 3) - { - return (TRUE); - } - - return (FALSE); - } - - return (TRUE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtValidAcpiName - * - * PARAMETERS: Name - The name to be examined - * - * RETURN: TRUE if the name is valid, FALSE otherwise - * - * DESCRIPTION: Check for a valid ACPI name. Each character must be one of: - * 1) Upper case alpha - * 2) numeric - * 3) underscore - * - ******************************************************************************/ - -BOOLEAN -AcpiUtValidAcpiName ( - UINT32 Name) -{ - ACPI_NATIVE_UINT i; - - - ACPI_FUNCTION_ENTRY (); - - - for (i = 0; i < ACPI_NAME_SIZE; i++) - { - if (!AcpiUtValidAcpiChar ((ACPI_CAST_PTR (char, &Name))[i], i)) - { - return (FALSE); - } - } - - return (TRUE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtRepairName - * - * PARAMETERS: Name - The ACPI name to be repaired - * - * RETURN: Repaired version of the name - * - * DESCRIPTION: Repair an ACPI name: Change invalid characters to '*' and - * return the new name. - * - ******************************************************************************/ - -ACPI_NAME -AcpiUtRepairName ( - char *Name) -{ - ACPI_NATIVE_UINT i; - char NewName[ACPI_NAME_SIZE]; - - - for (i = 0; i < ACPI_NAME_SIZE; i++) - { - NewName[i] = Name[i]; - - /* - * Replace a bad character with something printable, yet technically - * still invalid. This prevents any collisions with existing "good" - * names in the namespace. - */ - if (!AcpiUtValidAcpiChar (Name[i], i)) - { - NewName[i] = '*'; - } - } - - return (*(UINT32 *) NewName); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtStrtoul64 - * - * PARAMETERS: String - Null terminated string - * Base - Radix of the string: 16 or ACPI_ANY_BASE; - * ACPI_ANY_BASE means 'in behalf of ToInteger' - * RetInteger - Where the converted integer is returned - * - * RETURN: Status and Converted value - * - * DESCRIPTION: Convert a string into an unsigned value. Performs either a - * 32-bit or 64-bit conversion, depending on the current mode - * of the interpreter. - * NOTE: Does not support Octal strings, not needed. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtStrtoul64 ( - char *String, - UINT32 Base, - ACPI_INTEGER *RetInteger) -{ - UINT32 ThisDigit = 0; - ACPI_INTEGER ReturnValue = 0; - ACPI_INTEGER Quotient; - ACPI_INTEGER Dividend; - UINT32 ToIntegerOp = (Base == ACPI_ANY_BASE); - UINT32 Mode32 = (AcpiGbl_IntegerByteWidth == 4); - UINT8 ValidDigits = 0; - UINT8 SignOf0x = 0; - UINT8 Term = 0; - - - ACPI_FUNCTION_TRACE_STR (UtStroul64, String); - - - switch (Base) - { - case ACPI_ANY_BASE: - case 16: - break; - - default: - /* Invalid Base */ - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - if (!String) - { - goto ErrorExit; - } - - /* Skip over any white space in the buffer */ - - while ((*String) && (ACPI_IS_SPACE (*String) || *String == '\t')) - { - String++; - } - - if (ToIntegerOp) - { - /* - * Base equal to ACPI_ANY_BASE means 'ToInteger operation case'. - * We need to determine if it is decimal or hexadecimal. - */ - if ((*String == '0') && (ACPI_TOLOWER (*(String + 1)) == 'x')) - { - SignOf0x = 1; - Base = 16; - - /* Skip over the leading '0x' */ - String += 2; - } - else - { - Base = 10; - } - } - - /* Any string left? Check that '0x' is not followed by white space. */ - - if (!(*String) || ACPI_IS_SPACE (*String) || *String == '\t') - { - if (ToIntegerOp) - { - goto ErrorExit; - } - else - { - goto AllDone; - } - } - - /* - * Perform a 32-bit or 64-bit conversion, depending upon the current - * execution mode of the interpreter - */ - Dividend = (Mode32) ? ACPI_UINT32_MAX : ACPI_UINT64_MAX; - - /* Main loop: convert the string to a 32- or 64-bit integer */ - - while (*String) - { - if (ACPI_IS_DIGIT (*String)) - { - /* Convert ASCII 0-9 to Decimal value */ - - ThisDigit = ((UINT8) *String) - '0'; - } - else if (Base == 10) - { - /* Digit is out of range; possible in ToInteger case only */ - - Term = 1; - } - else - { - ThisDigit = (UINT8) ACPI_TOUPPER (*String); - if (ACPI_IS_XDIGIT ((char) ThisDigit)) - { - /* Convert ASCII Hex char to value */ - - ThisDigit = ThisDigit - 'A' + 10; - } - else - { - Term = 1; - } - } - - if (Term) - { - if (ToIntegerOp) - { - goto ErrorExit; - } - else - { - break; - } - } - else if ((ValidDigits == 0) && (ThisDigit == 0) && !SignOf0x) - { - /* Skip zeros */ - String++; - continue; - } - - ValidDigits++; - - if (SignOf0x && ((ValidDigits > 16) || ((ValidDigits > 8) && Mode32))) - { - /* - * This is ToInteger operation case. - * No any restrictions for string-to-integer conversion, - * see ACPI spec. - */ - goto ErrorExit; - } - - /* Divide the digit into the correct position */ - - (void) AcpiUtShortDivide ((Dividend - (ACPI_INTEGER) ThisDigit), - Base, &Quotient, NULL); - - if (ReturnValue > Quotient) - { - if (ToIntegerOp) - { - goto ErrorExit; - } - else - { - break; - } - } - - ReturnValue *= Base; - ReturnValue += ThisDigit; - String++; - } - - /* All done, normal exit */ - -AllDone: - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Converted value: %8.8X%8.8X\n", - ACPI_FORMAT_UINT64 (ReturnValue))); - - *RetInteger = ReturnValue; - return_ACPI_STATUS (AE_OK); - - -ErrorExit: - /* Base was set/validated above */ - - if (Base == 10) - { - return_ACPI_STATUS (AE_BAD_DECIMAL_CONSTANT); - } - else - { - return_ACPI_STATUS (AE_BAD_HEX_CONSTANT); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCreateUpdateStateAndPush - * - * PARAMETERS: Object - Object to be added to the new state - * Action - Increment/Decrement - * StateList - List the state will be added to - * - * RETURN: Status - * - * DESCRIPTION: Create a new state and push it - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtCreateUpdateStateAndPush ( - ACPI_OPERAND_OBJECT *Object, - UINT16 Action, - ACPI_GENERIC_STATE **StateList) -{ - ACPI_GENERIC_STATE *State; - - - ACPI_FUNCTION_ENTRY (); - - - /* Ignore null objects; these are expected */ - - if (!Object) - { - return (AE_OK); - } - - State = AcpiUtCreateUpdateState (Object, Action); - if (!State) - { - return (AE_NO_MEMORY); - } - - AcpiUtPushGenericState (StateList, State); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtWalkPackageTree - * - * PARAMETERS: SourceObject - The package to walk - * TargetObject - Target object (if package is being copied) - * WalkCallback - Called once for each package element - * Context - Passed to the callback function - * - * RETURN: Status - * - * DESCRIPTION: Walk through a package - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtWalkPackageTree ( - ACPI_OPERAND_OBJECT *SourceObject, - void *TargetObject, - ACPI_PKG_CALLBACK WalkCallback, - void *Context) -{ - ACPI_STATUS Status = AE_OK; - ACPI_GENERIC_STATE *StateList = NULL; - ACPI_GENERIC_STATE *State; - UINT32 ThisIndex; - ACPI_OPERAND_OBJECT *ThisSourceObj; - - - ACPI_FUNCTION_TRACE (UtWalkPackageTree); - - - State = AcpiUtCreatePkgState (SourceObject, TargetObject, 0); - if (!State) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - while (State) - { - /* Get one element of the package */ - - ThisIndex = State->Pkg.Index; - ThisSourceObj = (ACPI_OPERAND_OBJECT *) - State->Pkg.SourceObject->Package.Elements[ThisIndex]; - - /* - * Check for: - * 1) An uninitialized package element. It is completely - * legal to declare a package and leave it uninitialized - * 2) Not an internal object - can be a namespace node instead - * 3) Any type other than a package. Packages are handled in else - * case below. - */ - if ((!ThisSourceObj) || - (ACPI_GET_DESCRIPTOR_TYPE (ThisSourceObj) != ACPI_DESC_TYPE_OPERAND) || - (ACPI_GET_OBJECT_TYPE (ThisSourceObj) != ACPI_TYPE_PACKAGE)) - { - Status = WalkCallback (ACPI_COPY_TYPE_SIMPLE, ThisSourceObj, - State, Context); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - State->Pkg.Index++; - while (State->Pkg.Index >= State->Pkg.SourceObject->Package.Count) - { - /* - * We've handled all of the objects at this level, This means - * that we have just completed a package. That package may - * have contained one or more packages itself. - * - * Delete this state and pop the previous state (package). - */ - AcpiUtDeleteGenericState (State); - State = AcpiUtPopGenericState (&StateList); - - /* Finished when there are no more states */ - - if (!State) - { - /* - * We have handled all of the objects in the top level - * package just add the length of the package objects - * and exit - */ - return_ACPI_STATUS (AE_OK); - } - - /* - * Go back up a level and move the index past the just - * completed package object. - */ - State->Pkg.Index++; - } - } - else - { - /* This is a subobject of type package */ - - Status = WalkCallback (ACPI_COPY_TYPE_PACKAGE, ThisSourceObj, - State, Context); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Push the current state and create a new one - * The callback above returned a new target package object. - */ - AcpiUtPushGenericState (&StateList, State); - State = AcpiUtCreatePkgState (ThisSourceObj, - State->Pkg.ThisTargetObj, 0); - if (!State) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - } - } - - /* We should never get here */ - - return_ACPI_STATUS (AE_AML_INTERNAL); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtError, AcpiUtWarning, AcpiUtInfo - * - * PARAMETERS: ModuleName - Caller's module name (for error output) - * LineNumber - Caller's line number (for error output) - * Format - Printf format string + additional args - * - * RETURN: None - * - * DESCRIPTION: Print message with module/line/version info - * - ******************************************************************************/ - -void ACPI_INTERNAL_VAR_XFACE -AcpiUtError ( - char *ModuleName, - UINT32 LineNumber, - char *Format, - ...) -{ - va_list args; - - - AcpiOsPrintf ("ACPI Error (%s-%04d): ", ModuleName, LineNumber); - - va_start (args, Format); - AcpiOsVprintf (Format, args); - AcpiOsPrintf (" [%X]\n", ACPI_CA_VERSION); -} - -void ACPI_INTERNAL_VAR_XFACE -AcpiUtException ( - char *ModuleName, - UINT32 LineNumber, - ACPI_STATUS Status, - char *Format, - ...) -{ - va_list args; - - - AcpiOsPrintf ("ACPI Exception (%s-%04d): %s, ", ModuleName, LineNumber, - AcpiFormatException (Status)); - - va_start (args, Format); - AcpiOsVprintf (Format, args); - AcpiOsPrintf (" [%X]\n", ACPI_CA_VERSION); -} - -void ACPI_INTERNAL_VAR_XFACE -AcpiUtWarning ( - char *ModuleName, - UINT32 LineNumber, - char *Format, - ...) -{ - va_list args; - - - AcpiOsPrintf ("ACPI Warning (%s-%04d): ", ModuleName, LineNumber); - - va_start (args, Format); - AcpiOsVprintf (Format, args); - AcpiOsPrintf (" [%X]\n", ACPI_CA_VERSION); -} - -void ACPI_INTERNAL_VAR_XFACE -AcpiUtInfo ( - char *ModuleName, - UINT32 LineNumber, - char *Format, - ...) -{ - va_list args; - - - /* - * Removed ModuleName, LineNumber, and acpica version, not needed - * for info output - */ - AcpiOsPrintf ("ACPI: "); - - va_start (args, Format); - AcpiOsVprintf (Format, args); - AcpiOsPrintf ("\n"); -} - diff --git a/sys/contrib/dev/acpica-unix-20061109/utilities/utmutex.c b/sys/contrib/dev/acpica-unix-20061109/utilities/utmutex.c deleted file mode 100644 index 53186ec8c5..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/utilities/utmutex.c +++ /dev/null @@ -1,464 +0,0 @@ -/******************************************************************************* - * - * Module Name: utmutex - local mutex support - * $Revision: 1.11 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __UTMUTEX_C__ - -#include "acpi.h" - -#define _COMPONENT ACPI_UTILITIES - ACPI_MODULE_NAME ("utmutex") - -/* Local prototypes */ - -static ACPI_STATUS -AcpiUtCreateMutex ( - ACPI_MUTEX_HANDLE MutexId); - -static ACPI_STATUS -AcpiUtDeleteMutex ( - ACPI_MUTEX_HANDLE MutexId); - - -/******************************************************************************* - * - * FUNCTION: AcpiUtMutexInitialize - * - * PARAMETERS: None. - * - * RETURN: Status - * - * DESCRIPTION: Create the system mutex objects. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtMutexInitialize ( - void) -{ - UINT32 i; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (UtMutexInitialize); - - - /* - * Create each of the predefined mutex objects - */ - for (i = 0; i < ACPI_NUM_MUTEX; i++) - { - Status = AcpiUtCreateMutex (i); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* Create the spinlocks for use at interrupt level */ - - Status = AcpiOsCreateLock (&AcpiGbl_GpeLock); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - Status = AcpiOsCreateLock (&AcpiGbl_HardwareLock); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtMutexTerminate - * - * PARAMETERS: None. - * - * RETURN: None. - * - * DESCRIPTION: Delete all of the system mutex objects. - * - ******************************************************************************/ - -void -AcpiUtMutexTerminate ( - void) -{ - UINT32 i; - - - ACPI_FUNCTION_TRACE (UtMutexTerminate); - - - /* - * Delete each predefined mutex object - */ - for (i = 0; i < ACPI_NUM_MUTEX; i++) - { - (void) AcpiUtDeleteMutex (i); - } - - /* Delete the spinlocks */ - - AcpiOsDeleteLock (AcpiGbl_GpeLock); - AcpiOsDeleteLock (AcpiGbl_HardwareLock); - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCreateMutex - * - * PARAMETERS: MutexID - ID of the mutex to be created - * - * RETURN: Status - * - * DESCRIPTION: Create a mutex object. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiUtCreateMutex ( - ACPI_MUTEX_HANDLE MutexId) -{ - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE_U32 (UtCreateMutex, MutexId); - - - if (MutexId > ACPI_MAX_MUTEX) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - if (!AcpiGbl_MutexInfo[MutexId].Mutex) - { - Status = AcpiOsCreateMutex (&AcpiGbl_MutexInfo[MutexId].Mutex); - AcpiGbl_MutexInfo[MutexId].ThreadId = ACPI_MUTEX_NOT_ACQUIRED; - AcpiGbl_MutexInfo[MutexId].UseCount = 0; - } - - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtDeleteMutex - * - * PARAMETERS: MutexID - ID of the mutex to be deleted - * - * RETURN: Status - * - * DESCRIPTION: Delete a mutex object. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiUtDeleteMutex ( - ACPI_MUTEX_HANDLE MutexId) -{ - - ACPI_FUNCTION_TRACE_U32 (UtDeleteMutex, MutexId); - - - if (MutexId > ACPI_MAX_MUTEX) - { - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - AcpiOsDeleteMutex (AcpiGbl_MutexInfo[MutexId].Mutex); - - AcpiGbl_MutexInfo[MutexId].Mutex = NULL; - AcpiGbl_MutexInfo[MutexId].ThreadId = ACPI_MUTEX_NOT_ACQUIRED; - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtAcquireMutex - * - * PARAMETERS: MutexID - ID of the mutex to be acquired - * - * RETURN: Status - * - * DESCRIPTION: Acquire a mutex object. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtAcquireMutex ( - ACPI_MUTEX_HANDLE MutexId) -{ - ACPI_STATUS Status; - ACPI_THREAD_ID ThisThreadId; - - - ACPI_FUNCTION_NAME (UtAcquireMutex); - - - if (MutexId > ACPI_MAX_MUTEX) - { - return (AE_BAD_PARAMETER); - } - - ThisThreadId = AcpiOsGetThreadId (); - -#ifdef ACPI_MUTEX_DEBUG - { - UINT32 i; - /* - * Mutex debug code, for internal debugging only. - * - * Deadlock prevention. Check if this thread owns any mutexes of value - * greater than or equal to this one. If so, the thread has violated - * the mutex ordering rule. This indicates a coding error somewhere in - * the ACPI subsystem code. - */ - for (i = MutexId; i < ACPI_MAX_MUTEX; i++) - { - if (AcpiGbl_MutexInfo[i].ThreadId == ThisThreadId) - { - if (i == MutexId) - { - ACPI_ERROR ((AE_INFO, - "Mutex [%s] already acquired by this thread [%X]", - AcpiUtGetMutexName (MutexId), ThisThreadId)); - - return (AE_ALREADY_ACQUIRED); - } - - ACPI_ERROR ((AE_INFO, - "Invalid acquire order: Thread %X owns [%s], wants [%s]", - ThisThreadId, AcpiUtGetMutexName (i), - AcpiUtGetMutexName (MutexId))); - - return (AE_ACQUIRE_DEADLOCK); - } - } - } -#endif - - ACPI_DEBUG_PRINT ((ACPI_DB_MUTEX, - "Thread %X attempting to acquire Mutex [%s]\n", - ThisThreadId, AcpiUtGetMutexName (MutexId))); - - Status = AcpiOsAcquireMutex (AcpiGbl_MutexInfo[MutexId].Mutex, - ACPI_WAIT_FOREVER); - if (ACPI_SUCCESS (Status)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_MUTEX, "Thread %X acquired Mutex [%s]\n", - ThisThreadId, AcpiUtGetMutexName (MutexId))); - - AcpiGbl_MutexInfo[MutexId].UseCount++; - AcpiGbl_MutexInfo[MutexId].ThreadId = ThisThreadId; - } - else - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Thread %X could not acquire Mutex [%X]", ThisThreadId, MutexId)); - } - - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtReleaseMutex - * - * PARAMETERS: MutexID - ID of the mutex to be released - * - * RETURN: Status - * - * DESCRIPTION: Release a mutex object. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtReleaseMutex ( - ACPI_MUTEX_HANDLE MutexId) -{ - ACPI_THREAD_ID ThisThreadId; - - - ACPI_FUNCTION_NAME (UtReleaseMutex); - - - ThisThreadId = AcpiOsGetThreadId (); - ACPI_DEBUG_PRINT ((ACPI_DB_MUTEX, - "Thread %X releasing Mutex [%s]\n", ThisThreadId, - AcpiUtGetMutexName (MutexId))); - - if (MutexId > ACPI_MAX_MUTEX) - { - return (AE_BAD_PARAMETER); - } - - /* - * Mutex must be acquired in order to release it! - */ - if (AcpiGbl_MutexInfo[MutexId].ThreadId == ACPI_MUTEX_NOT_ACQUIRED) - { - ACPI_ERROR ((AE_INFO, - "Mutex [%X] is not acquired, cannot release", MutexId)); - - return (AE_NOT_ACQUIRED); - } - -#ifdef ACPI_MUTEX_DEBUG - { - UINT32 i; - /* - * Mutex debug code, for internal debugging only. - * - * Deadlock prevention. Check if this thread owns any mutexes of value - * greater than this one. If so, the thread has violated the mutex - * ordering rule. This indicates a coding error somewhere in - * the ACPI subsystem code. - */ - for (i = MutexId; i < ACPI_MAX_MUTEX; i++) - { - if (AcpiGbl_MutexInfo[i].ThreadId == ThisThreadId) - { - if (i == MutexId) - { - continue; - } - - ACPI_ERROR ((AE_INFO, - "Invalid release order: owns [%s], releasing [%s]", - AcpiUtGetMutexName (i), AcpiUtGetMutexName (MutexId))); - - return (AE_RELEASE_DEADLOCK); - } - } - } -#endif - - /* Mark unlocked FIRST */ - - AcpiGbl_MutexInfo[MutexId].ThreadId = ACPI_MUTEX_NOT_ACQUIRED; - - AcpiOsReleaseMutex (AcpiGbl_MutexInfo[MutexId].Mutex); - return (AE_OK); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/utilities/utobject.c b/sys/contrib/dev/acpica-unix-20061109/utilities/utobject.c deleted file mode 100644 index 6d7a058e5a..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/utilities/utobject.c +++ /dev/null @@ -1,764 +0,0 @@ -/****************************************************************************** - * - * Module Name: utobject - ACPI object create/delete/size/cache routines - * $Revision: 1.103 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define __UTOBJECT_C__ - -#include "acpi.h" -#include "acnamesp.h" -#include "amlcode.h" - - -#define _COMPONENT ACPI_UTILITIES - ACPI_MODULE_NAME ("utobject") - -/* Local prototypes */ - -static ACPI_STATUS -AcpiUtGetSimpleObjectSize ( - ACPI_OPERAND_OBJECT *Obj, - ACPI_SIZE *ObjLength); - -static ACPI_STATUS -AcpiUtGetPackageObjectSize ( - ACPI_OPERAND_OBJECT *Obj, - ACPI_SIZE *ObjLength); - -static ACPI_STATUS -AcpiUtGetElementLength ( - UINT8 ObjectType, - ACPI_OPERAND_OBJECT *SourceObject, - ACPI_GENERIC_STATE *State, - void *Context); - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCreateInternalObjectDbg - * - * PARAMETERS: ModuleName - Source file name of caller - * LineNumber - Line number of caller - * ComponentId - Component type of caller - * Type - ACPI Type of the new object - * - * RETURN: A new internal object, null on failure - * - * DESCRIPTION: Create and initialize a new internal object. - * - * NOTE: We always allocate the worst-case object descriptor because - * these objects are cached, and we want them to be - * one-size-satisifies-any-request. This in itself may not be - * the most memory efficient, but the efficiency of the object - * cache should more than make up for this! - * - ******************************************************************************/ - -ACPI_OPERAND_OBJECT * -AcpiUtCreateInternalObjectDbg ( - char *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId, - ACPI_OBJECT_TYPE Type) -{ - ACPI_OPERAND_OBJECT *Object; - ACPI_OPERAND_OBJECT *SecondObject; - - - ACPI_FUNCTION_TRACE_STR (UtCreateInternalObjectDbg, - AcpiUtGetTypeName (Type)); - - - /* Allocate the raw object descriptor */ - - Object = AcpiUtAllocateObjectDescDbg (ModuleName, LineNumber, ComponentId); - if (!Object) - { - return_PTR (NULL); - } - - switch (Type) - { - case ACPI_TYPE_REGION: - case ACPI_TYPE_BUFFER_FIELD: - - /* These types require a secondary object */ - - SecondObject = AcpiUtAllocateObjectDescDbg (ModuleName, - LineNumber, ComponentId); - if (!SecondObject) - { - AcpiUtDeleteObjectDesc (Object); - return_PTR (NULL); - } - - SecondObject->Common.Type = ACPI_TYPE_LOCAL_EXTRA; - SecondObject->Common.ReferenceCount = 1; - - /* Link the second object to the first */ - - Object->Common.NextObject = SecondObject; - break; - - default: - /* All others have no secondary object */ - break; - } - - /* Save the object type in the object descriptor */ - - Object->Common.Type = (UINT8) Type; - - /* Init the reference count */ - - Object->Common.ReferenceCount = 1; - - /* Any per-type initialization should go here */ - - return_PTR (Object); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCreateBufferObject - * - * PARAMETERS: BufferSize - Size of buffer to be created - * - * RETURN: Pointer to a new Buffer object, null on failure - * - * DESCRIPTION: Create a fully initialized buffer object - * - ******************************************************************************/ - -ACPI_OPERAND_OBJECT * -AcpiUtCreateBufferObject ( - ACPI_SIZE BufferSize) -{ - ACPI_OPERAND_OBJECT *BufferDesc; - UINT8 *Buffer = NULL; - - - ACPI_FUNCTION_TRACE_U32 (UtCreateBufferObject, BufferSize); - - - /* Create a new Buffer object */ - - BufferDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER); - if (!BufferDesc) - { - return_PTR (NULL); - } - - /* Create an actual buffer only if size > 0 */ - - if (BufferSize > 0) - { - /* Allocate the actual buffer */ - - Buffer = ACPI_ALLOCATE_ZEROED (BufferSize); - if (!Buffer) - { - ACPI_ERROR ((AE_INFO, "Could not allocate size %X", - (UINT32) BufferSize)); - AcpiUtRemoveReference (BufferDesc); - return_PTR (NULL); - } - } - - /* Complete buffer object initialization */ - - BufferDesc->Buffer.Flags |= AOPOBJ_DATA_VALID; - BufferDesc->Buffer.Pointer = Buffer; - BufferDesc->Buffer.Length = (UINT32) BufferSize; - - /* Return the new buffer descriptor */ - - return_PTR (BufferDesc); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCreateStringObject - * - * PARAMETERS: StringSize - Size of string to be created. Does not - * include NULL terminator, this is added - * automatically. - * - * RETURN: Pointer to a new String object - * - * DESCRIPTION: Create a fully initialized string object - * - ******************************************************************************/ - -ACPI_OPERAND_OBJECT * -AcpiUtCreateStringObject ( - ACPI_SIZE StringSize) -{ - ACPI_OPERAND_OBJECT *StringDesc; - char *String; - - - ACPI_FUNCTION_TRACE_U32 (UtCreateStringObject, StringSize); - - - /* Create a new String object */ - - StringDesc = AcpiUtCreateInternalObject (ACPI_TYPE_STRING); - if (!StringDesc) - { - return_PTR (NULL); - } - - /* - * Allocate the actual string buffer -- (Size + 1) for NULL terminator. - * NOTE: Zero-length strings are NULL terminated - */ - String = ACPI_ALLOCATE_ZEROED (StringSize + 1); - if (!String) - { - ACPI_ERROR ((AE_INFO, "Could not allocate size %X", - (UINT32) StringSize)); - AcpiUtRemoveReference (StringDesc); - return_PTR (NULL); - } - - /* Complete string object initialization */ - - StringDesc->String.Pointer = String; - StringDesc->String.Length = (UINT32) StringSize; - - /* Return the new string descriptor */ - - return_PTR (StringDesc); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtValidInternalObject - * - * PARAMETERS: Object - Object to be validated - * - * RETURN: TRUE if object is valid, FALSE otherwise - * - * DESCRIPTION: Validate a pointer to be an ACPI_OPERAND_OBJECT - * - ******************************************************************************/ - -BOOLEAN -AcpiUtValidInternalObject ( - void *Object) -{ - - ACPI_FUNCTION_NAME (UtValidInternalObject); - - - /* Check for a null pointer */ - - if (!Object) - { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "**** Null Object Ptr\n")); - return (FALSE); - } - - /* Check the descriptor type field */ - - switch (ACPI_GET_DESCRIPTOR_TYPE (Object)) - { - case ACPI_DESC_TYPE_OPERAND: - - /* The object appears to be a valid ACPI_OPERAND_OBJECT */ - - return (TRUE); - - default: - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "%p is not not an ACPI operand obj [%s]\n", - Object, AcpiUtGetDescriptorName (Object))); - break; - } - - return (FALSE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtAllocateObjectDescDbg - * - * PARAMETERS: ModuleName - Caller's module name (for error output) - * LineNumber - Caller's line number (for error output) - * ComponentId - Caller's component ID (for error output) - * - * RETURN: Pointer to newly allocated object descriptor. Null on error - * - * DESCRIPTION: Allocate a new object descriptor. Gracefully handle - * error conditions. - * - ******************************************************************************/ - -void * -AcpiUtAllocateObjectDescDbg ( - char *ModuleName, - UINT32 LineNumber, - UINT32 ComponentId) -{ - ACPI_OPERAND_OBJECT *Object; - - - ACPI_FUNCTION_TRACE (UtAllocateObjectDescDbg); - - - Object = AcpiOsAcquireObject (AcpiGbl_OperandCache); - if (!Object) - { - ACPI_ERROR ((ModuleName, LineNumber, - "Could not allocate an object descriptor")); - - return_PTR (NULL); - } - - /* Mark the descriptor type */ - - ACPI_SET_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_OPERAND); - - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "%p Size %X\n", - Object, (UINT32) sizeof (ACPI_OPERAND_OBJECT))); - - return_PTR (Object); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtDeleteObjectDesc - * - * PARAMETERS: Object - An Acpi internal object to be deleted - * - * RETURN: None. - * - * DESCRIPTION: Free an ACPI object descriptor or add it to the object cache - * - ******************************************************************************/ - -void -AcpiUtDeleteObjectDesc ( - ACPI_OPERAND_OBJECT *Object) -{ - ACPI_FUNCTION_TRACE_PTR (UtDeleteObjectDesc, Object); - - - /* Object must be an ACPI_OPERAND_OBJECT */ - - if (ACPI_GET_DESCRIPTOR_TYPE (Object) != ACPI_DESC_TYPE_OPERAND) - { - ACPI_ERROR ((AE_INFO, - "%p is not an ACPI Operand object [%s]", Object, - AcpiUtGetDescriptorName (Object))); - return_VOID; - } - - (void) AcpiOsReleaseObject (AcpiGbl_OperandCache, Object); - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtGetSimpleObjectSize - * - * PARAMETERS: InternalObject - An ACPI operand object - * ObjLength - Where the length is returned - * - * RETURN: Status - * - * DESCRIPTION: This function is called to determine the space required to - * contain a simple object for return to an external user. - * - * The length includes the object structure plus any additional - * needed space. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiUtGetSimpleObjectSize ( - ACPI_OPERAND_OBJECT *InternalObject, - ACPI_SIZE *ObjLength) -{ - ACPI_SIZE Length; - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE_PTR (UtGetSimpleObjectSize, InternalObject); - - - /* - * Handle a null object (Could be a uninitialized package - * element -- which is legal) - */ - if (!InternalObject) - { - *ObjLength = 0; - return_ACPI_STATUS (AE_OK); - } - - /* Start with the length of the Acpi object */ - - Length = sizeof (ACPI_OBJECT); - - if (ACPI_GET_DESCRIPTOR_TYPE (InternalObject) == ACPI_DESC_TYPE_NAMED) - { - /* Object is a named object (reference), just return the length */ - - *ObjLength = ACPI_ROUND_UP_TO_NATIVE_WORD (Length); - return_ACPI_STATUS (Status); - } - - /* - * The final length depends on the object type - * Strings and Buffers are packed right up against the parent object and - * must be accessed bytewise or there may be alignment problems on - * certain processors - */ - switch (ACPI_GET_OBJECT_TYPE (InternalObject)) - { - case ACPI_TYPE_STRING: - - Length += (ACPI_SIZE) InternalObject->String.Length + 1; - break; - - - case ACPI_TYPE_BUFFER: - - Length += (ACPI_SIZE) InternalObject->Buffer.Length; - break; - - - case ACPI_TYPE_INTEGER: - case ACPI_TYPE_PROCESSOR: - case ACPI_TYPE_POWER: - - /* - * No extra data for these types - */ - break; - - - case ACPI_TYPE_LOCAL_REFERENCE: - - switch (InternalObject->Reference.Opcode) - { - case AML_INT_NAMEPATH_OP: - - /* - * Get the actual length of the full pathname to this object. - * The reference will be converted to the pathname to the object - */ - Length += ACPI_ROUND_UP_TO_NATIVE_WORD ( - AcpiNsGetPathnameLength (InternalObject->Reference.Node)); - break; - - default: - - /* - * No other reference opcodes are supported. - * Notably, Locals and Args are not supported, but this may be - * required eventually. - */ - ACPI_ERROR ((AE_INFO, - "Unsupported Reference opcode=%X in object %p", - InternalObject->Reference.Opcode, InternalObject)); - Status = AE_TYPE; - break; - } - break; - - - default: - - ACPI_ERROR ((AE_INFO, "Unsupported type=%X in object %p", - ACPI_GET_OBJECT_TYPE (InternalObject), InternalObject)); - Status = AE_TYPE; - break; - } - - /* - * Account for the space required by the object rounded up to the next - * multiple of the machine word size. This keeps each object aligned - * on a machine word boundary. (preventing alignment faults on some - * machines.) - */ - *ObjLength = ACPI_ROUND_UP_TO_NATIVE_WORD (Length); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtGetElementLength - * - * PARAMETERS: ACPI_PKG_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Get the length of one package element. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiUtGetElementLength ( - UINT8 ObjectType, - ACPI_OPERAND_OBJECT *SourceObject, - ACPI_GENERIC_STATE *State, - void *Context) -{ - ACPI_STATUS Status = AE_OK; - ACPI_PKG_INFO *Info = (ACPI_PKG_INFO *) Context; - ACPI_SIZE ObjectSpace; - - - switch (ObjectType) - { - case ACPI_COPY_TYPE_SIMPLE: - - /* - * Simple object - just get the size (Null object/entry is handled - * here also) and sum it into the running package length - */ - Status = AcpiUtGetSimpleObjectSize (SourceObject, &ObjectSpace); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - Info->Length += ObjectSpace; - break; - - - case ACPI_COPY_TYPE_PACKAGE: - - /* Package object - nothing much to do here, let the walk handle it */ - - Info->NumPackages++; - State->Pkg.ThisTargetObj = NULL; - break; - - - default: - - /* No other types allowed */ - - return (AE_BAD_PARAMETER); - } - - return (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtGetPackageObjectSize - * - * PARAMETERS: InternalObject - An ACPI internal object - * ObjLength - Where the length is returned - * - * RETURN: Status - * - * DESCRIPTION: This function is called to determine the space required to - * contain a package object for return to an external user. - * - * This is moderately complex since a package contains other - * objects including packages. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiUtGetPackageObjectSize ( - ACPI_OPERAND_OBJECT *InternalObject, - ACPI_SIZE *ObjLength) -{ - ACPI_STATUS Status; - ACPI_PKG_INFO Info; - - - ACPI_FUNCTION_TRACE_PTR (UtGetPackageObjectSize, InternalObject); - - - Info.Length = 0; - Info.ObjectSpace = 0; - Info.NumPackages = 1; - - Status = AcpiUtWalkPackageTree (InternalObject, NULL, - AcpiUtGetElementLength, &Info); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * We have handled all of the objects in all levels of the package. - * just add the length of the package objects themselves. - * Round up to the next machine word. - */ - Info.Length += ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)) * - (ACPI_SIZE) Info.NumPackages; - - /* Return the total package length */ - - *ObjLength = Info.Length; - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtGetObjectSize - * - * PARAMETERS: InternalObject - An ACPI internal object - * ObjLength - Where the length will be returned - * - * RETURN: Status - * - * DESCRIPTION: This function is called to determine the space required to - * contain an object for return to an API user. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtGetObjectSize ( - ACPI_OPERAND_OBJECT *InternalObject, - ACPI_SIZE *ObjLength) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_ENTRY (); - - - if ((ACPI_GET_DESCRIPTOR_TYPE (InternalObject) == ACPI_DESC_TYPE_OPERAND) && - (ACPI_GET_OBJECT_TYPE (InternalObject) == ACPI_TYPE_PACKAGE)) - { - Status = AcpiUtGetPackageObjectSize (InternalObject, ObjLength); - } - else - { - Status = AcpiUtGetSimpleObjectSize (InternalObject, ObjLength); - } - - return (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/utilities/utresrc.c b/sys/contrib/dev/acpica-unix-20061109/utilities/utresrc.c deleted file mode 100644 index 87f0c15e8e..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/utilities/utresrc.c +++ /dev/null @@ -1,772 +0,0 @@ -/******************************************************************************* - * - * Module Name: utresrc - Resource managment utilities - * $Revision: 1.13 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __UTRESRC_C__ - -#include "acpi.h" -#include "amlresrc.h" - - -#define _COMPONENT ACPI_UTILITIES - ACPI_MODULE_NAME ("utresrc") - - -#if defined(ACPI_DISASSEMBLER) || defined (ACPI_DEBUGGER) - -/* - * Strings used to decode resource descriptors. - * Used by both the disasssembler and the debugger resource dump routines - */ -const char *AcpiGbl_BmDecode[] = -{ - "NotBusMaster", - "BusMaster" -}; - -const char *AcpiGbl_ConfigDecode[] = -{ - "0 - Good Configuration", - "1 - Acceptable Configuration", - "2 - Suboptimal Configuration", - "3 - ***Invalid Configuration***", -}; - -const char *AcpiGbl_ConsumeDecode[] = -{ - "ResourceProducer", - "ResourceConsumer" -}; - -const char *AcpiGbl_DecDecode[] = -{ - "PosDecode", - "SubDecode" -}; - -const char *AcpiGbl_HeDecode[] = -{ - "Level", - "Edge" -}; - -const char *AcpiGbl_IoDecode[] = -{ - "Decode10", - "Decode16" -}; - -const char *AcpiGbl_LlDecode[] = -{ - "ActiveHigh", - "ActiveLow" -}; - -const char *AcpiGbl_MaxDecode[] = -{ - "MaxNotFixed", - "MaxFixed" -}; - -const char *AcpiGbl_MemDecode[] = -{ - "NonCacheable", - "Cacheable", - "WriteCombining", - "Prefetchable" -}; - -const char *AcpiGbl_MinDecode[] = -{ - "MinNotFixed", - "MinFixed" -}; - -const char *AcpiGbl_MtpDecode[] = -{ - "AddressRangeMemory", - "AddressRangeReserved", - "AddressRangeACPI", - "AddressRangeNVS" -}; - -const char *AcpiGbl_RngDecode[] = -{ - "InvalidRanges", - "NonISAOnlyRanges", - "ISAOnlyRanges", - "EntireRange" -}; - -const char *AcpiGbl_RwDecode[] = -{ - "ReadOnly", - "ReadWrite" -}; - -const char *AcpiGbl_ShrDecode[] = -{ - "Exclusive", - "Shared" -}; - -const char *AcpiGbl_SizDecode[] = -{ - "Transfer8", - "Transfer8_16", - "Transfer16", - "InvalidSize" -}; - -const char *AcpiGbl_TrsDecode[] = -{ - "DenseTranslation", - "SparseTranslation" -}; - -const char *AcpiGbl_TtpDecode[] = -{ - "TypeStatic", - "TypeTranslation" -}; - -const char *AcpiGbl_TypDecode[] = -{ - "Compatibility", - "TypeA", - "TypeB", - "TypeF" -}; - -#endif - - -/* - * Base sizes of the raw AML resource descriptors, indexed by resource type. - * Zero indicates a reserved (and therefore invalid) resource type. - */ -const UINT8 AcpiGbl_ResourceAmlSizes[] = -{ - /* Small descriptors */ - - 0, - 0, - 0, - 0, - ACPI_AML_SIZE_SMALL (AML_RESOURCE_IRQ), - ACPI_AML_SIZE_SMALL (AML_RESOURCE_DMA), - ACPI_AML_SIZE_SMALL (AML_RESOURCE_START_DEPENDENT), - ACPI_AML_SIZE_SMALL (AML_RESOURCE_END_DEPENDENT), - ACPI_AML_SIZE_SMALL (AML_RESOURCE_IO), - ACPI_AML_SIZE_SMALL (AML_RESOURCE_FIXED_IO), - 0, - 0, - 0, - 0, - ACPI_AML_SIZE_SMALL (AML_RESOURCE_VENDOR_SMALL), - ACPI_AML_SIZE_SMALL (AML_RESOURCE_END_TAG), - - /* Large descriptors */ - - 0, - ACPI_AML_SIZE_LARGE (AML_RESOURCE_MEMORY24), - ACPI_AML_SIZE_LARGE (AML_RESOURCE_GENERIC_REGISTER), - 0, - ACPI_AML_SIZE_LARGE (AML_RESOURCE_VENDOR_LARGE), - ACPI_AML_SIZE_LARGE (AML_RESOURCE_MEMORY32), - ACPI_AML_SIZE_LARGE (AML_RESOURCE_FIXED_MEMORY32), - ACPI_AML_SIZE_LARGE (AML_RESOURCE_ADDRESS32), - ACPI_AML_SIZE_LARGE (AML_RESOURCE_ADDRESS16), - ACPI_AML_SIZE_LARGE (AML_RESOURCE_EXTENDED_IRQ), - ACPI_AML_SIZE_LARGE (AML_RESOURCE_ADDRESS64), - ACPI_AML_SIZE_LARGE (AML_RESOURCE_EXTENDED_ADDRESS64) -}; - - -/* - * Resource types, used to validate the resource length field. - * The length of fixed-length types must match exactly, variable - * lengths must meet the minimum required length, etc. - * Zero indicates a reserved (and therefore invalid) resource type. - */ -static const UINT8 AcpiGbl_ResourceTypes[] = -{ - /* Small descriptors */ - - 0, - 0, - 0, - 0, - ACPI_SMALL_VARIABLE_LENGTH, - ACPI_FIXED_LENGTH, - ACPI_SMALL_VARIABLE_LENGTH, - ACPI_FIXED_LENGTH, - ACPI_FIXED_LENGTH, - ACPI_FIXED_LENGTH, - 0, - 0, - 0, - 0, - ACPI_VARIABLE_LENGTH, - ACPI_FIXED_LENGTH, - - /* Large descriptors */ - - 0, - ACPI_FIXED_LENGTH, - ACPI_FIXED_LENGTH, - 0, - ACPI_VARIABLE_LENGTH, - ACPI_FIXED_LENGTH, - ACPI_FIXED_LENGTH, - ACPI_VARIABLE_LENGTH, - ACPI_VARIABLE_LENGTH, - ACPI_VARIABLE_LENGTH, - ACPI_VARIABLE_LENGTH, - ACPI_FIXED_LENGTH -}; - - -/******************************************************************************* - * - * FUNCTION: AcpiUtWalkAmlResources - * - * PARAMETERS: Aml - Pointer to the raw AML resource template - * AmlLength - Length of the entire template - * UserFunction - Called once for each descriptor found. If - * NULL, a pointer to the EndTag is returned - * Context - Passed to UserFunction - * - * RETURN: Status - * - * DESCRIPTION: Walk a raw AML resource list(buffer). User function called - * once for each resource found. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtWalkAmlResources ( - UINT8 *Aml, - ACPI_SIZE AmlLength, - ACPI_WALK_AML_CALLBACK UserFunction, - void *Context) -{ - ACPI_STATUS Status; - UINT8 *EndAml; - UINT8 ResourceIndex; - UINT32 Length; - UINT32 Offset = 0; - - - ACPI_FUNCTION_TRACE (UtWalkAmlResources); - - - /* The absolute minimum resource template is one EndTag descriptor */ - - if (AmlLength < sizeof (AML_RESOURCE_END_TAG)) - { - return_ACPI_STATUS (AE_AML_NO_RESOURCE_END_TAG); - } - - /* Point to the end of the resource template buffer */ - - EndAml = Aml + AmlLength; - - /* Walk the byte list, abort on any invalid descriptor type or length */ - - while (Aml < EndAml) - { - /* Validate the Resource Type and Resource Length */ - - Status = AcpiUtValidateResource (Aml, &ResourceIndex); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Get the length of this descriptor */ - - Length = AcpiUtGetDescriptorLength (Aml); - - /* Invoke the user function */ - - if (UserFunction) - { - Status = UserFunction (Aml, Length, Offset, ResourceIndex, Context); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - } - - /* An EndTag descriptor terminates this resource template */ - - if (AcpiUtGetResourceType (Aml) == ACPI_RESOURCE_NAME_END_TAG) - { - /* - * There must be at least one more byte in the buffer for - * the 2nd byte of the EndTag - */ - if ((Aml + 1) >= EndAml) - { - return_ACPI_STATUS (AE_AML_NO_RESOURCE_END_TAG); - } - - /* Return the pointer to the EndTag if requested */ - - if (!UserFunction) - { - *(void **) Context = Aml; - } - - /* Normal exit */ - - return_ACPI_STATUS (AE_OK); - } - - Aml += Length; - Offset += Length; - } - - /* Did not find an EndTag descriptor */ - - return (AE_AML_NO_RESOURCE_END_TAG); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtValidateResource - * - * PARAMETERS: Aml - Pointer to the raw AML resource descriptor - * ReturnIndex - Where the resource index is returned. NULL - * if the index is not required. - * - * RETURN: Status, and optionally the Index into the global resource tables - * - * DESCRIPTION: Validate an AML resource descriptor by checking the Resource - * Type and Resource Length. Returns an index into the global - * resource information/dispatch tables for later use. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtValidateResource ( - void *Aml, - UINT8 *ReturnIndex) -{ - UINT8 ResourceType; - UINT8 ResourceIndex; - ACPI_RS_LENGTH ResourceLength; - ACPI_RS_LENGTH MinimumResourceLength; - - - ACPI_FUNCTION_ENTRY (); - - - /* - * 1) Validate the ResourceType field (Byte 0) - */ - ResourceType = ACPI_GET8 (Aml); - - /* - * Byte 0 contains the descriptor name (Resource Type) - * Examine the large/small bit in the resource header - */ - if (ResourceType & ACPI_RESOURCE_NAME_LARGE) - { - /* Verify the large resource type (name) against the max */ - - if (ResourceType > ACPI_RESOURCE_NAME_LARGE_MAX) - { - return (AE_AML_INVALID_RESOURCE_TYPE); - } - - /* - * Large Resource Type -- bits 6:0 contain the name - * Translate range 0x80-0x8B to index range 0x10-0x1B - */ - ResourceIndex = (UINT8) (ResourceType - 0x70); - } - else - { - /* - * Small Resource Type -- bits 6:3 contain the name - * Shift range to index range 0x00-0x0F - */ - ResourceIndex = (UINT8) - ((ResourceType & ACPI_RESOURCE_NAME_SMALL_MASK) >> 3); - } - - /* Check validity of the resource type, zero indicates name is invalid */ - - if (!AcpiGbl_ResourceTypes[ResourceIndex]) - { - return (AE_AML_INVALID_RESOURCE_TYPE); - } - - - /* - * 2) Validate the ResourceLength field. This ensures that the length - * is at least reasonable, and guarantees that it is non-zero. - */ - ResourceLength = AcpiUtGetResourceLength (Aml); - MinimumResourceLength = AcpiGbl_ResourceAmlSizes[ResourceIndex]; - - /* Validate based upon the type of resource - fixed length or variable */ - - switch (AcpiGbl_ResourceTypes[ResourceIndex]) - { - case ACPI_FIXED_LENGTH: - - /* Fixed length resource, length must match exactly */ - - if (ResourceLength != MinimumResourceLength) - { - return (AE_AML_BAD_RESOURCE_LENGTH); - } - break; - - case ACPI_VARIABLE_LENGTH: - - /* Variable length resource, length must be at least the minimum */ - - if (ResourceLength < MinimumResourceLength) - { - return (AE_AML_BAD_RESOURCE_LENGTH); - } - break; - - case ACPI_SMALL_VARIABLE_LENGTH: - - /* Small variable length resource, length can be (Min) or (Min-1) */ - - if ((ResourceLength > MinimumResourceLength) || - (ResourceLength < (MinimumResourceLength - 1))) - { - return (AE_AML_BAD_RESOURCE_LENGTH); - } - break; - - default: - - /* Shouldn't happen (because of validation earlier), but be sure */ - - return (AE_AML_INVALID_RESOURCE_TYPE); - } - - /* Optionally return the resource table index */ - - if (ReturnIndex) - { - *ReturnIndex = ResourceIndex; - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtGetResourceType - * - * PARAMETERS: Aml - Pointer to the raw AML resource descriptor - * - * RETURN: The Resource Type with no extraneous bits (except the - * Large/Small descriptor bit -- this is left alone) - * - * DESCRIPTION: Extract the Resource Type/Name from the first byte of - * a resource descriptor. - * - ******************************************************************************/ - -UINT8 -AcpiUtGetResourceType ( - void *Aml) -{ - ACPI_FUNCTION_ENTRY (); - - - /* - * Byte 0 contains the descriptor name (Resource Type) - * Examine the large/small bit in the resource header - */ - if (ACPI_GET8 (Aml) & ACPI_RESOURCE_NAME_LARGE) - { - /* Large Resource Type -- bits 6:0 contain the name */ - - return (ACPI_GET8 (Aml)); - } - else - { - /* Small Resource Type -- bits 6:3 contain the name */ - - return ((UINT8) (ACPI_GET8 (Aml) & ACPI_RESOURCE_NAME_SMALL_MASK)); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtGetResourceLength - * - * PARAMETERS: Aml - Pointer to the raw AML resource descriptor - * - * RETURN: Byte Length - * - * DESCRIPTION: Get the "Resource Length" of a raw AML descriptor. By - * definition, this does not include the size of the descriptor - * header or the length field itself. - * - ******************************************************************************/ - -UINT16 -AcpiUtGetResourceLength ( - void *Aml) -{ - ACPI_RS_LENGTH ResourceLength; - - - ACPI_FUNCTION_ENTRY (); - - - /* - * Byte 0 contains the descriptor name (Resource Type) - * Examine the large/small bit in the resource header - */ - if (ACPI_GET8 (Aml) & ACPI_RESOURCE_NAME_LARGE) - { - /* Large Resource type -- bytes 1-2 contain the 16-bit length */ - - ACPI_MOVE_16_TO_16 (&ResourceLength, ACPI_ADD_PTR (UINT8, Aml, 1)); - - } - else - { - /* Small Resource type -- bits 2:0 of byte 0 contain the length */ - - ResourceLength = (UINT16) (ACPI_GET8 (Aml) & - ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK); - } - - return (ResourceLength); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtGetResourceHeaderLength - * - * PARAMETERS: Aml - Pointer to the raw AML resource descriptor - * - * RETURN: Length of the AML header (depends on large/small descriptor) - * - * DESCRIPTION: Get the length of the header for this resource. - * - ******************************************************************************/ - -UINT8 -AcpiUtGetResourceHeaderLength ( - void *Aml) -{ - ACPI_FUNCTION_ENTRY (); - - - /* Examine the large/small bit in the resource header */ - - if (ACPI_GET8 (Aml) & ACPI_RESOURCE_NAME_LARGE) - { - return (sizeof (AML_RESOURCE_LARGE_HEADER)); - } - else - { - return (sizeof (AML_RESOURCE_SMALL_HEADER)); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtGetDescriptorLength - * - * PARAMETERS: Aml - Pointer to the raw AML resource descriptor - * - * RETURN: Byte length - * - * DESCRIPTION: Get the total byte length of a raw AML descriptor, including the - * length of the descriptor header and the length field itself. - * Used to walk descriptor lists. - * - ******************************************************************************/ - -UINT32 -AcpiUtGetDescriptorLength ( - void *Aml) -{ - ACPI_FUNCTION_ENTRY (); - - - /* - * Get the Resource Length (does not include header length) and add - * the header length (depends on if this is a small or large resource) - */ - return (AcpiUtGetResourceLength (Aml) + - AcpiUtGetResourceHeaderLength (Aml)); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtGetResourceEndTag - * - * PARAMETERS: ObjDesc - The resource template buffer object - * EndTag - Where the pointer to the EndTag is returned - * - * RETURN: Status, pointer to the end tag - * - * DESCRIPTION: Find the EndTag resource descriptor in an AML resource template - * Note: allows a buffer length of zero. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtGetResourceEndTag ( - ACPI_OPERAND_OBJECT *ObjDesc, - UINT8 **EndTag) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (UtGetResourceEndTag); - - - /* Allow a buffer length of zero */ - - if (!ObjDesc->Buffer.Length) - { - *EndTag = ObjDesc->Buffer.Pointer; - return_ACPI_STATUS (AE_OK); - } - - /* Validate the template and get a pointer to the EndTag */ - - Status = AcpiUtWalkAmlResources (ObjDesc->Buffer.Pointer, - ObjDesc->Buffer.Length, NULL, EndTag); - - return_ACPI_STATUS (Status); -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/utilities/utstate.c b/sys/contrib/dev/acpica-unix-20061109/utilities/utstate.c deleted file mode 100644 index 7c9d72f125..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/utilities/utstate.c +++ /dev/null @@ -1,470 +0,0 @@ -/******************************************************************************* - * - * Module Name: utstate - state object support procedures - * $Revision: 1.7 $ - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __UTSTATE_C__ - -#include "acpi.h" - -#define _COMPONENT ACPI_UTILITIES - ACPI_MODULE_NAME ("utstate") - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCreatePkgStateAndPush - * - * PARAMETERS: Object - Object to be added to the new state - * Action - Increment/Decrement - * StateList - List the state will be added to - * - * RETURN: Status - * - * DESCRIPTION: Create a new state and push it - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtCreatePkgStateAndPush ( - void *InternalObject, - void *ExternalObject, - UINT16 Index, - ACPI_GENERIC_STATE **StateList) -{ - ACPI_GENERIC_STATE *State; - - - ACPI_FUNCTION_ENTRY (); - - - State = AcpiUtCreatePkgState (InternalObject, ExternalObject, Index); - if (!State) - { - return (AE_NO_MEMORY); - } - - AcpiUtPushGenericState (StateList, State); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtPushGenericState - * - * PARAMETERS: ListHead - Head of the state stack - * State - State object to push - * - * RETURN: None - * - * DESCRIPTION: Push a state object onto a state stack - * - ******************************************************************************/ - -void -AcpiUtPushGenericState ( - ACPI_GENERIC_STATE **ListHead, - ACPI_GENERIC_STATE *State) -{ - ACPI_FUNCTION_TRACE (UtPushGenericState); - - - /* Push the state object onto the front of the list (stack) */ - - State->Common.Next = *ListHead; - *ListHead = State; - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtPopGenericState - * - * PARAMETERS: ListHead - Head of the state stack - * - * RETURN: The popped state object - * - * DESCRIPTION: Pop a state object from a state stack - * - ******************************************************************************/ - -ACPI_GENERIC_STATE * -AcpiUtPopGenericState ( - ACPI_GENERIC_STATE **ListHead) -{ - ACPI_GENERIC_STATE *State; - - - ACPI_FUNCTION_TRACE (UtPopGenericState); - - - /* Remove the state object at the head of the list (stack) */ - - State = *ListHead; - if (State) - { - /* Update the list head */ - - *ListHead = State->Common.Next; - } - - return_PTR (State); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCreateGenericState - * - * PARAMETERS: None - * - * RETURN: The new state object. NULL on failure. - * - * DESCRIPTION: Create a generic state object. Attempt to obtain one from - * the global state cache; If none available, create a new one. - * - ******************************************************************************/ - -ACPI_GENERIC_STATE * -AcpiUtCreateGenericState ( - void) -{ - ACPI_GENERIC_STATE *State; - - - ACPI_FUNCTION_ENTRY (); - - - State = AcpiOsAcquireObject (AcpiGbl_StateCache); - if (State) - { - /* Initialize */ - State->Common.DescriptorType = ACPI_DESC_TYPE_STATE; - } - - return (State); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCreateThreadState - * - * PARAMETERS: None - * - * RETURN: New Thread State. NULL on failure - * - * DESCRIPTION: Create a "Thread State" - a flavor of the generic state used - * to track per-thread info during method execution - * - ******************************************************************************/ - -ACPI_THREAD_STATE * -AcpiUtCreateThreadState ( - void) -{ - ACPI_GENERIC_STATE *State; - - - ACPI_FUNCTION_TRACE (UtCreateThreadState); - - - /* Create the generic state object */ - - State = AcpiUtCreateGenericState (); - if (!State) - { - return_PTR (NULL); - } - - /* Init fields specific to the update struct */ - - State->Common.DescriptorType = ACPI_DESC_TYPE_STATE_THREAD; - State->Thread.ThreadId = AcpiOsGetThreadId (); - - /* Check for invalid thread ID - zero is very bad, it will break things */ - - if (!State->Thread.ThreadId) - { - ACPI_ERROR ((AE_INFO, "Invalid zero ID from AcpiOsGetThreadId")); - State->Thread.ThreadId = 1; - } - - return_PTR ((ACPI_THREAD_STATE *) State); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCreateUpdateState - * - * PARAMETERS: Object - Initial Object to be installed in the state - * Action - Update action to be performed - * - * RETURN: New state object, null on failure - * - * DESCRIPTION: Create an "Update State" - a flavor of the generic state used - * to update reference counts and delete complex objects such - * as packages. - * - ******************************************************************************/ - -ACPI_GENERIC_STATE * -AcpiUtCreateUpdateState ( - ACPI_OPERAND_OBJECT *Object, - UINT16 Action) -{ - ACPI_GENERIC_STATE *State; - - - ACPI_FUNCTION_TRACE_PTR (UtCreateUpdateState, Object); - - - /* Create the generic state object */ - - State = AcpiUtCreateGenericState (); - if (!State) - { - return_PTR (NULL); - } - - /* Init fields specific to the update struct */ - - State->Common.DescriptorType = ACPI_DESC_TYPE_STATE_UPDATE; - State->Update.Object = Object; - State->Update.Value = Action; - - return_PTR (State); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCreatePkgState - * - * PARAMETERS: Object - Initial Object to be installed in the state - * Action - Update action to be performed - * - * RETURN: New state object, null on failure - * - * DESCRIPTION: Create a "Package State" - * - ******************************************************************************/ - -ACPI_GENERIC_STATE * -AcpiUtCreatePkgState ( - void *InternalObject, - void *ExternalObject, - UINT16 Index) -{ - ACPI_GENERIC_STATE *State; - - - ACPI_FUNCTION_TRACE_PTR (UtCreatePkgState, InternalObject); - - - /* Create the generic state object */ - - State = AcpiUtCreateGenericState (); - if (!State) - { - return_PTR (NULL); - } - - /* Init fields specific to the update struct */ - - State->Common.DescriptorType = ACPI_DESC_TYPE_STATE_PACKAGE; - State->Pkg.SourceObject = (ACPI_OPERAND_OBJECT *) InternalObject; - State->Pkg.DestObject = ExternalObject; - State->Pkg.Index= Index; - State->Pkg.NumPackages = 1; - - return_PTR (State); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCreateControlState - * - * PARAMETERS: None - * - * RETURN: New state object, null on failure - * - * DESCRIPTION: Create a "Control State" - a flavor of the generic state used - * to support nested IF/WHILE constructs in the AML. - * - ******************************************************************************/ - -ACPI_GENERIC_STATE * -AcpiUtCreateControlState ( - void) -{ - ACPI_GENERIC_STATE *State; - - - ACPI_FUNCTION_TRACE (UtCreateControlState); - - - /* Create the generic state object */ - - State = AcpiUtCreateGenericState (); - if (!State) - { - return_PTR (NULL); - } - - /* Init fields specific to the control struct */ - - State->Common.DescriptorType = ACPI_DESC_TYPE_STATE_CONTROL; - State->Common.State = ACPI_CONTROL_CONDITIONAL_EXECUTING; - - return_PTR (State); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtDeleteGenericState - * - * PARAMETERS: State - The state object to be deleted - * - * RETURN: None - * - * DESCRIPTION: Release a state object to the state cache. NULL state objects - * are ignored. - * - ******************************************************************************/ - -void -AcpiUtDeleteGenericState ( - ACPI_GENERIC_STATE *State) -{ - ACPI_FUNCTION_TRACE (UtDeleteGenericState); - - - /* Ignore null state */ - - if (State) - { - (void) AcpiOsReleaseObject (AcpiGbl_StateCache, State); - } - return_VOID; -} - - diff --git a/sys/contrib/dev/acpica-unix-20061109/utilities/uttrack.c b/sys/contrib/dev/acpica-unix-20061109/utilities/uttrack.c deleted file mode 100644 index 4dbf0bf755..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/utilities/uttrack.c +++ /dev/null @@ -1,716 +0,0 @@ -/****************************************************************************** - * - * Module Name: uttrack - Memory allocation tracking routines (debug only) - * $Revision: 1.3 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -/* - * These procedures are used for tracking memory leaks in the subsystem, and - * they get compiled out when the ACPI_DBG_TRACK_ALLOCATIONS is not set. - * - * Each memory allocation is tracked via a doubly linked list. Each - * element contains the caller's component, module name, function name, and - * line number. AcpiUtAllocate and AcpiUtAllocateZeroed call - * AcpiUtTrackAllocation to add an element to the list; deletion - * occurs in the body of AcpiUtFree. - */ - -#define __UTTRACK_C__ - -#include "acpi.h" - -#ifdef ACPI_DBG_TRACK_ALLOCATIONS - -#define _COMPONENT ACPI_UTILITIES - ACPI_MODULE_NAME ("uttrack") - -/* Local prototypes */ - -static ACPI_DEBUG_MEM_BLOCK * -AcpiUtFindAllocation ( - void *Allocation); - -static ACPI_STATUS -AcpiUtTrackAllocation ( - ACPI_DEBUG_MEM_BLOCK *Address, - ACPI_SIZE Size, - UINT8 AllocType, - UINT32 Component, - char *Module, - UINT32 Line); - -static ACPI_STATUS -AcpiUtRemoveAllocation ( - ACPI_DEBUG_MEM_BLOCK *Address, - UINT32 Component, - char *Module, - UINT32 Line); - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCreateList - * - * PARAMETERS: CacheName - Ascii name for the cache - * ObjectSize - Size of each cached object - * ReturnCache - Where the new cache object is returned - * - * RETURN: Status - * - * DESCRIPTION: Create a local memory list for tracking purposed - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtCreateList ( - char *ListName, - UINT16 ObjectSize, - ACPI_MEMORY_LIST **ReturnCache) -{ - ACPI_MEMORY_LIST *Cache; - - - Cache = AcpiOsAllocate (sizeof (ACPI_MEMORY_LIST)); - if (!Cache) - { - return (AE_NO_MEMORY); - } - - ACPI_MEMSET (Cache, 0, sizeof (ACPI_MEMORY_LIST)); - - Cache->ListName = ListName; - Cache->ObjectSize = ObjectSize; - - *ReturnCache = Cache; - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtAllocateAndTrack - * - * PARAMETERS: Size - Size of the allocation - * Component - Component type of caller - * Module - Source file name of caller - * Line - Line number of caller - * - * RETURN: Address of the allocated memory on success, NULL on failure. - * - * DESCRIPTION: The subsystem's equivalent of malloc. - * - ******************************************************************************/ - -void * -AcpiUtAllocateAndTrack ( - ACPI_SIZE Size, - UINT32 Component, - char *Module, - UINT32 Line) -{ - ACPI_DEBUG_MEM_BLOCK *Allocation; - ACPI_STATUS Status; - - - Allocation = AcpiUtAllocate (Size + sizeof (ACPI_DEBUG_MEM_HEADER), - Component, Module, Line); - if (!Allocation) - { - return (NULL); - } - - Status = AcpiUtTrackAllocation (Allocation, Size, - ACPI_MEM_MALLOC, Component, Module, Line); - if (ACPI_FAILURE (Status)) - { - AcpiOsFree (Allocation); - return (NULL); - } - - AcpiGbl_GlobalList->TotalAllocated++; - AcpiGbl_GlobalList->CurrentTotalSize += (UINT32) Size; - - return ((void *) &Allocation->UserSpace); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtAllocateZeroedAndTrack - * - * PARAMETERS: Size - Size of the allocation - * Component - Component type of caller - * Module - Source file name of caller - * Line - Line number of caller - * - * RETURN: Address of the allocated memory on success, NULL on failure. - * - * DESCRIPTION: Subsystem equivalent of calloc. - * - ******************************************************************************/ - -void * -AcpiUtAllocateZeroedAndTrack ( - ACPI_SIZE Size, - UINT32 Component, - char *Module, - UINT32 Line) -{ - ACPI_DEBUG_MEM_BLOCK *Allocation; - ACPI_STATUS Status; - - - Allocation = AcpiUtAllocateZeroed (Size + sizeof (ACPI_DEBUG_MEM_HEADER), - Component, Module, Line); - if (!Allocation) - { - /* Report allocation error */ - - ACPI_ERROR ((Module, Line, - "Could not allocate size %X", (UINT32) Size)); - return (NULL); - } - - Status = AcpiUtTrackAllocation (Allocation, Size, - ACPI_MEM_CALLOC, Component, Module, Line); - if (ACPI_FAILURE (Status)) - { - AcpiOsFree (Allocation); - return (NULL); - } - - AcpiGbl_GlobalList->TotalAllocated++; - AcpiGbl_GlobalList->CurrentTotalSize += (UINT32) Size; - - return ((void *) &Allocation->UserSpace); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtFreeAndTrack - * - * PARAMETERS: Allocation - Address of the memory to deallocate - * Component - Component type of caller - * Module - Source file name of caller - * Line - Line number of caller - * - * RETURN: None - * - * DESCRIPTION: Frees the memory at Allocation - * - ******************************************************************************/ - -void -AcpiUtFreeAndTrack ( - void *Allocation, - UINT32 Component, - char *Module, - UINT32 Line) -{ - ACPI_DEBUG_MEM_BLOCK *DebugBlock; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE_PTR (UtFree, Allocation); - - - if (NULL == Allocation) - { - ACPI_ERROR ((Module, Line, - "Attempt to delete a NULL address")); - - return_VOID; - } - - DebugBlock = ACPI_CAST_PTR (ACPI_DEBUG_MEM_BLOCK, - (((char *) Allocation) - sizeof (ACPI_DEBUG_MEM_HEADER))); - - AcpiGbl_GlobalList->TotalFreed++; - AcpiGbl_GlobalList->CurrentTotalSize -= DebugBlock->Size; - - Status = AcpiUtRemoveAllocation (DebugBlock, - Component, Module, Line); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, "Could not free memory")); - } - - AcpiOsFree (DebugBlock); - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "%p freed\n", Allocation)); - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtFindAllocation - * - * PARAMETERS: Allocation - Address of allocated memory - * - * RETURN: A list element if found; NULL otherwise. - * - * DESCRIPTION: Searches for an element in the global allocation tracking list. - * - ******************************************************************************/ - -static ACPI_DEBUG_MEM_BLOCK * -AcpiUtFindAllocation ( - void *Allocation) -{ - ACPI_DEBUG_MEM_BLOCK *Element; - - - ACPI_FUNCTION_ENTRY (); - - - Element = AcpiGbl_GlobalList->ListHead; - - /* Search for the address. */ - - while (Element) - { - if (Element == Allocation) - { - return (Element); - } - - Element = Element->Next; - } - - return (NULL); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtTrackAllocation - * - * PARAMETERS: Allocation - Address of allocated memory - * Size - Size of the allocation - * AllocType - MEM_MALLOC or MEM_CALLOC - * Component - Component type of caller - * Module - Source file name of caller - * Line - Line number of caller - * - * RETURN: None. - * - * DESCRIPTION: Inserts an element into the global allocation tracking list. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiUtTrackAllocation ( - ACPI_DEBUG_MEM_BLOCK *Allocation, - ACPI_SIZE Size, - UINT8 AllocType, - UINT32 Component, - char *Module, - UINT32 Line) -{ - ACPI_MEMORY_LIST *MemList; - ACPI_DEBUG_MEM_BLOCK *Element; - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE_PTR (UtTrackAllocation, Allocation); - - - MemList = AcpiGbl_GlobalList; - Status = AcpiUtAcquireMutex (ACPI_MTX_MEMORY); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Search list for this address to make sure it is not already on the list. - * This will catch several kinds of problems. - */ - Element = AcpiUtFindAllocation (Allocation); - if (Element) - { - ACPI_ERROR ((AE_INFO, - "UtTrackAllocation: Allocation already present in list! (%p)", - Allocation)); - - ACPI_ERROR ((AE_INFO, "Element %p Address %p", - Element, Allocation)); - - goto UnlockAndExit; - } - - /* Fill in the instance data. */ - - Allocation->Size = (UINT32) Size; - Allocation->AllocType = AllocType; - Allocation->Component = Component; - Allocation->Line = Line; - - ACPI_STRNCPY (Allocation->Module, Module, ACPI_MAX_MODULE_NAME); - Allocation->Module[ACPI_MAX_MODULE_NAME-1] = 0; - - /* Insert at list head */ - - if (MemList->ListHead) - { - ((ACPI_DEBUG_MEM_BLOCK *)(MemList->ListHead))->Previous = Allocation; - } - - Allocation->Next = MemList->ListHead; - Allocation->Previous = NULL; - - MemList->ListHead = Allocation; - - -UnlockAndExit: - Status = AcpiUtReleaseMutex (ACPI_MTX_MEMORY); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtRemoveAllocation - * - * PARAMETERS: Allocation - Address of allocated memory - * Component - Component type of caller - * Module - Source file name of caller - * Line - Line number of caller - * - * RETURN: - * - * DESCRIPTION: Deletes an element from the global allocation tracking list. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiUtRemoveAllocation ( - ACPI_DEBUG_MEM_BLOCK *Allocation, - UINT32 Component, - char *Module, - UINT32 Line) -{ - ACPI_MEMORY_LIST *MemList; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (UtRemoveAllocation); - - - MemList = AcpiGbl_GlobalList; - if (NULL == MemList->ListHead) - { - /* No allocations! */ - - ACPI_ERROR ((Module, Line, - "Empty allocation list, nothing to free!")); - - return_ACPI_STATUS (AE_OK); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_MEMORY); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Unlink */ - - if (Allocation->Previous) - { - (Allocation->Previous)->Next = Allocation->Next; - } - else - { - MemList->ListHead = Allocation->Next; - } - - if (Allocation->Next) - { - (Allocation->Next)->Previous = Allocation->Previous; - } - - /* Mark the segment as deleted */ - - ACPI_MEMSET (&Allocation->UserSpace, 0xEA, Allocation->Size); - - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Freeing size 0%X\n", - Allocation->Size)); - - Status = AcpiUtReleaseMutex (ACPI_MTX_MEMORY); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtDumpAllocationInfo - * - * PARAMETERS: - * - * RETURN: None - * - * DESCRIPTION: Print some info about the outstanding allocations. - * - ******************************************************************************/ - -void -AcpiUtDumpAllocationInfo ( - void) -{ -/* - ACPI_MEMORY_LIST *MemList; -*/ - - ACPI_FUNCTION_TRACE (UtDumpAllocationInfo); - -/* - ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Current allocations", - MemList->CurrentCount, - ROUND_UP_TO_1K (MemList->CurrentSize))); - - ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Max concurrent allocations", - MemList->MaxConcurrentCount, - ROUND_UP_TO_1K (MemList->MaxConcurrentSize))); - - - ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Total (all) internal objects", - RunningObjectCount, - ROUND_UP_TO_1K (RunningObjectSize))); - - ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Total (all) allocations", - RunningAllocCount, - ROUND_UP_TO_1K (RunningAllocSize))); - - - ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Current Nodes", - AcpiGbl_CurrentNodeCount, - ROUND_UP_TO_1K (AcpiGbl_CurrentNodeSize))); - - ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Max Nodes", - AcpiGbl_MaxConcurrentNodeCount, - ROUND_UP_TO_1K ((AcpiGbl_MaxConcurrentNodeCount * - sizeof (ACPI_NAMESPACE_NODE))))); -*/ - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtDumpAllocations - * - * PARAMETERS: Component - Component(s) to dump info for. - * Module - Module to dump info for. NULL means all. - * - * RETURN: None - * - * DESCRIPTION: Print a list of all outstanding allocations. - * - ******************************************************************************/ - -void -AcpiUtDumpAllocations ( - UINT32 Component, - char *Module) -{ - ACPI_DEBUG_MEM_BLOCK *Element; - ACPI_DESCRIPTOR *Descriptor; - UINT32 NumOutstanding = 0; - - - ACPI_FUNCTION_TRACE (UtDumpAllocations); - - - /* - * Walk the allocation list. - */ - if (ACPI_FAILURE (AcpiUtAcquireMutex (ACPI_MTX_MEMORY))) - { - return; - } - - Element = AcpiGbl_GlobalList->ListHead; - while (Element) - { - if ((Element->Component & Component) && - ((Module == NULL) || (0 == ACPI_STRCMP (Module, Element->Module)))) - { - /* Ignore allocated objects that are in a cache */ - - Descriptor = ACPI_CAST_PTR (ACPI_DESCRIPTOR, &Element->UserSpace); - if (ACPI_GET_DESCRIPTOR_TYPE (Descriptor) != ACPI_DESC_TYPE_CACHED) - { - AcpiOsPrintf ("%p Len %04X %9.9s-%d [%s] ", - Descriptor, Element->Size, Element->Module, - Element->Line, AcpiUtGetDescriptorName (Descriptor)); - - /* Most of the elements will be Operand objects. */ - - switch (ACPI_GET_DESCRIPTOR_TYPE (Descriptor)) - { - case ACPI_DESC_TYPE_OPERAND: - AcpiOsPrintf ("%12.12s R%hd", - AcpiUtGetTypeName (Descriptor->Object.Common.Type), - Descriptor->Object.Common.ReferenceCount); - break; - - case ACPI_DESC_TYPE_PARSER: - AcpiOsPrintf ("AmlOpcode %04hX", - Descriptor->Op.Asl.AmlOpcode); - break; - - case ACPI_DESC_TYPE_NAMED: - AcpiOsPrintf ("%4.4s", - AcpiUtGetNodeName (&Descriptor->Node)); - break; - - default: - break; - } - - AcpiOsPrintf ( "\n"); - NumOutstanding++; - } - } - Element = Element->Next; - } - - (void) AcpiUtReleaseMutex (ACPI_MTX_MEMORY); - - /* Print summary */ - - if (!NumOutstanding) - { - ACPI_INFO ((AE_INFO, - "No outstanding allocations")); - } - else - { - ACPI_ERROR ((AE_INFO, - "%d(%X) Outstanding allocations", - NumOutstanding, NumOutstanding)); - } - - return_VOID; -} - -#endif /* ACPI_DBG_TRACK_ALLOCATIONS */ - diff --git a/sys/contrib/dev/acpica-unix-20061109/utilities/utxface.c b/sys/contrib/dev/acpica-unix-20061109/utilities/utxface.c deleted file mode 100644 index 591d986b7a..0000000000 --- a/sys/contrib/dev/acpica-unix-20061109/utilities/utxface.c +++ /dev/null @@ -1,638 +0,0 @@ -/****************************************************************************** - * - * Module Name: utxface - External interfaces for "global" ACPI functions - * $Revision: 1.124 $ - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - - -#define __UTXFACE_C__ - -#include "acpi.h" -#include "acevents.h" -#include "acnamesp.h" -#include "acdebug.h" - -#define _COMPONENT ACPI_UTILITIES - ACPI_MODULE_NAME ("utxface") - - -/******************************************************************************* - * - * FUNCTION: AcpiInitializeSubsystem - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Initializes all global variables. This is the first function - * called, so any early initialization belongs here. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiInitializeSubsystem ( - void) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (AcpiInitializeSubsystem); - - - AcpiGbl_StartupFlags = ACPI_SUBSYSTEM_INITIALIZE; - ACPI_DEBUG_EXEC (AcpiUtInitStackPtrTrace ()); - - /* Initialize the OS-Dependent layer */ - - Status = AcpiOsInitialize (); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, "During OSL initialization")); - return_ACPI_STATUS (Status); - } - - /* Initialize all globals used by the subsystem */ - - AcpiUtInitGlobals (); - - /* Create the default mutex objects */ - - Status = AcpiUtMutexInitialize (); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, "During Global Mutex creation")); - return_ACPI_STATUS (Status); - } - - /* - * Initialize the namespace manager and - * the root of the namespace tree - */ - Status = AcpiNsRootInitialize (); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, "During Namespace initialization")); - return_ACPI_STATUS (Status); - } - - /* If configured, initialize the AML debugger */ - - ACPI_DEBUGGER_EXEC (Status = AcpiDbInitialize ()); - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiInitializeSubsystem) - - -/******************************************************************************* - * - * FUNCTION: AcpiEnableSubsystem - * - * PARAMETERS: Flags - Init/enable Options - * - * RETURN: Status - * - * DESCRIPTION: Completes the subsystem initialization including hardware. - * Puts system into ACPI mode if it isn't already. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEnableSubsystem ( - UINT32 Flags) -{ - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE (AcpiEnableSubsystem); - - - /* Enable ACPI mode */ - - if (!(Flags & ACPI_NO_ACPI_ENABLE)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[Init] Going into ACPI mode\n")); - - AcpiGbl_OriginalMode = AcpiHwGetMode(); - - Status = AcpiEnable (); - if (ACPI_FAILURE (Status)) - { - ACPI_WARNING ((AE_INFO, "AcpiEnable failed")); - return_ACPI_STATUS (Status); - } - } - - /* - * Install the default OpRegion handlers. These are installed unless - * other handlers have already been installed via the - * InstallAddressSpaceHandler interface. - */ - if (!(Flags & ACPI_NO_ADDRESS_SPACE_INIT)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "[Init] Installing default address space handlers\n")); - - Status = AcpiEvInstallRegionHandlers (); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* - * Initialize ACPI Event handling (Fixed and General Purpose) - * - * Note1: We must have the hardware and events initialized before we can - * execute any control methods safely. Any control method can require - * ACPI hardware support, so the hardware must be fully initialized before - * any method execution! - * - * Note2: Fixed events are initialized and enabled here. GPEs are - * initialized, but cannot be enabled until after the hardware is - * completely initialized (SCI and GlobalLock activated) - */ - if (!(Flags & ACPI_NO_EVENT_INIT)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "[Init] Initializing ACPI events\n")); - - Status = AcpiEvInitializeEvents (); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* - * Install the SCI handler and Global Lock handler. This completes the - * hardware initialization. - */ - if (!(Flags & ACPI_NO_HANDLER_INIT)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "[Init] Installing SCI/GL handlers\n")); - - Status = AcpiEvInstallXruptHandlers (); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* - * Complete the GPE initialization for the GPE blocks defined in the FADT - * (GPE block 0 and 1). - * - * Note1: This is where the _PRW methods are executed for the GPEs. These - * methods can only be executed after the SCI and Global Lock handlers are - * installed and initialized. - * - * Note2: Currently, there seems to be no need to run the _REG methods - * before execution of the _PRW methods and enabling of the GPEs. - */ - if (!(Flags & ACPI_NO_EVENT_INIT)) - { - Status = AcpiEvInstallFadtGpes (); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - } - - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiEnableSubsystem) - - -/******************************************************************************* - * - * FUNCTION: AcpiInitializeObjects - * - * PARAMETERS: Flags - Init/enable Options - * - * RETURN: Status - * - * DESCRIPTION: Completes namespace initialization by initializing device - * objects and executing AML code for Regions, buffers, etc. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiInitializeObjects ( - UINT32 Flags) -{ - ACPI_STATUS Status = AE_OK; - - - ACPI_FUNCTION_TRACE (AcpiInitializeObjects); - - - /* - * Run all _REG methods - * - * Note: Any objects accessed by the _REG methods will be automatically - * initialized, even if they contain executable AML (see the call to - * AcpiNsInitializeObjects below). - */ - if (!(Flags & ACPI_NO_ADDRESS_SPACE_INIT)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "[Init] Executing _REG OpRegion methods\n")); - - Status = AcpiEvInitializeOpRegions (); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* - * Initialize the objects that remain uninitialized. This runs the - * executable AML that may be part of the declaration of these objects: - * OperationRegions, BufferFields, Buffers, and Packages. - */ - if (!(Flags & ACPI_NO_OBJECT_INIT)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "[Init] Completing Initialization of ACPI Objects\n")); - - Status = AcpiNsInitializeObjects (); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* - * Initialize all device objects in the namespace. This runs the device - * _STA and _INI methods. - */ - if (!(Flags & ACPI_NO_DEVICE_INIT)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "[Init] Initializing ACPI Devices\n")); - - Status = AcpiNsInitializeDevices (); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - /* - * Empty the caches (delete the cached objects) on the assumption that - * the table load filled them up more than they will be at runtime -- - * thus wasting non-paged memory. - */ - Status = AcpiPurgeCachedObjects (); - - AcpiGbl_StartupFlags |= ACPI_INITIALIZED_OK; - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiInitializeObjects) - - -/******************************************************************************* - * - * FUNCTION: AcpiTerminate - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Shutdown the ACPI subsystem. Release all resources. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiTerminate ( - void) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (AcpiTerminate); - - - /* Terminate the AML Debugger if present */ - - ACPI_DEBUGGER_EXEC(AcpiGbl_DbTerminateThreads = TRUE); - - /* Shutdown and free all resources */ - - AcpiUtSubsystemShutdown (); - - - /* Free the mutex objects */ - - AcpiUtMutexTerminate (); - - -#ifdef ACPI_DEBUGGER - - /* Shut down the debugger */ - - AcpiDbTerminate (); -#endif - - /* Now we can shutdown the OS-dependent layer */ - - Status = AcpiOsTerminate (); - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiTerminate) - - -/******************************************************************************* - * - * FUNCTION: AcpiSubsystemStatus - * - * PARAMETERS: None - * - * RETURN: Status of the ACPI subsystem - * - * DESCRIPTION: Other drivers that use the ACPI subsystem should call this - * before making any other calls, to ensure the subsystem - * initialized successfully. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiSubsystemStatus ( - void) -{ - - if (AcpiGbl_StartupFlags & ACPI_INITIALIZED_OK) - { - return (AE_OK); - } - else - { - return (AE_ERROR); - } -} - -ACPI_EXPORT_SYMBOL (AcpiSubsystemStatus) - - -/******************************************************************************* - * - * FUNCTION: AcpiGetSystemInfo - * - * PARAMETERS: OutBuffer - A buffer to receive the resources for the - * device - * - * RETURN: Status - the status of the call - * - * DESCRIPTION: This function is called to get information about the current - * state of the ACPI subsystem. It will return system information - * in the OutBuffer. - * - * If the function fails an appropriate status will be returned - * and the value of OutBuffer is undefined. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiGetSystemInfo ( - ACPI_BUFFER *OutBuffer) -{ - ACPI_SYSTEM_INFO *InfoPtr; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (AcpiGetSystemInfo); - - - /* Parameter validation */ - - Status = AcpiUtValidateBuffer (OutBuffer); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Validate/Allocate/Clear caller buffer */ - - Status = AcpiUtInitializeBuffer (OutBuffer, sizeof (ACPI_SYSTEM_INFO)); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* - * Populate the return buffer - */ - InfoPtr = (ACPI_SYSTEM_INFO *) OutBuffer->Pointer; - - InfoPtr->AcpiCaVersion = ACPI_CA_VERSION; - - /* System flags (ACPI capabilities) */ - - InfoPtr->Flags = ACPI_SYS_MODE_ACPI; - - /* Timer resolution - 24 or 32 bits */ - - if (AcpiGbl_FADT.Flags & ACPI_FADT_32BIT_TIMER) - { - InfoPtr->TimerResolution = 24; - } - else - { - InfoPtr->TimerResolution = 32; - } - - /* Clear the reserved fields */ - - InfoPtr->Reserved1 = 0; - InfoPtr->Reserved2 = 0; - - /* Current debug levels */ - - InfoPtr->DebugLayer = AcpiDbgLayer; - InfoPtr->DebugLevel = AcpiDbgLevel; - - return_ACPI_STATUS (AE_OK); -} - -ACPI_EXPORT_SYMBOL (AcpiGetSystemInfo) - - -/***************************************************************************** - * - * FUNCTION: AcpiInstallInitializationHandler - * - * PARAMETERS: Handler - Callback procedure - * Function - Not (currently) used, see below - * - * RETURN: Status - * - * DESCRIPTION: Install an initialization handler - * - * TBD: When a second function is added, must save the Function also. - * - ****************************************************************************/ - -ACPI_STATUS -AcpiInstallInitializationHandler ( - ACPI_INIT_HANDLER Handler, - UINT32 Function) -{ - - if (!Handler) - { - return (AE_BAD_PARAMETER); - } - - if (AcpiGbl_InitHandler) - { - return (AE_ALREADY_EXISTS); - } - - AcpiGbl_InitHandler = Handler; - return AE_OK; -} - -ACPI_EXPORT_SYMBOL (AcpiInstallInitializationHandler) - - -/***************************************************************************** - * - * FUNCTION: AcpiPurgeCachedObjects - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Empty all caches (delete the cached objects) - * - ****************************************************************************/ - -ACPI_STATUS -AcpiPurgeCachedObjects ( - void) -{ - ACPI_FUNCTION_TRACE (AcpiPurgeCachedObjects); - - (void) AcpiOsPurgeCache (AcpiGbl_StateCache); - (void) AcpiOsPurgeCache (AcpiGbl_OperandCache); - (void) AcpiOsPurgeCache (AcpiGbl_PsNodeCache); - (void) AcpiOsPurgeCache (AcpiGbl_PsNodeExtCache); - return_ACPI_STATUS (AE_OK); -} - -ACPI_EXPORT_SYMBOL (AcpiPurgeCachedObjects) -- 2.11.4.GIT